Текстовым редактором (text editor) называют программу, которая предназначена для редактирования (составления и изменения) файлов, содержащих только текст, например: письмо, программа на языке C, системный конфигурационный файл.
В любой момент при работе в редакторе vi мы находимся в одном из трех режимов редактора:
При том, что имеется много различных редакторов для системы Linux, единственный, чье присутствие будет гарантировано в любой системе UNIX или Linux — это vi (visual editor). Редактор vi не является самым простым в использовании, и его интерфейс не очень понятен сам по себе. Однако ввиду своей распространенности, а отчасти и потому, что владение им в некоторых ситуациях необходимо, ему посвящается внимание в этой заметке.
В любой момент при работе в редакторе vi мы находимся в одном из трех режимов редактора:
- командный режим (command mode);
- режим ввода (insert mode);
- режим последней строки (last line mode).
При запуске редактора vi мы оказываемся в командном режиме.
В этом режиме можно давать команды для редактирования файлов или перейти в другой режим.
Например, вводя x в командном режиме мы удаляем символ, на который указывает курсор. Клавиши-стрелки перемещают курсор по редактируемому файлу.
Как правило, команды, используемые в командном режиме, состоят из одного или двух символов.
Основной ввод и редактирование текста осуществляется в режиме ввода.
При использовании редактора vi основное время, скорее всего, будет проводиться именно в этом режиме.
Переход в режим ввода из командного режима осуществляется командой i (от слова insert). Находясь в режиме ввода, можно вводить текст в то место, куда указывает курсор.
Выход из режима ввода в командный режим осуществляется клавишей Esc.
Режим последней строки — это специальный режим, в котором редактору даются сложные команды.
При вводе этих команд они отображаются в последней строке экрана (отсюда пошло название режима).
Например, если ввести в командном режиме команду : то осуществится переход в режим последней строки, и можно будет вводить такие команды, как wq (записать файл и покинуть редактор vi) или q! (выйти из редактора vi без сохранения изменений).
В режиме последней строки обычно вводятся команды, название которых состоит из нескольких символов. В этом режиме в последнюю строку вводится команда, после чего нажимается клавиша Enter, и команда исполняется.
Запустить vi можно введя в терминале:
$ vi file_name
где filename — имя файла, который надо редактировать/создать.
Пример: создадим файл с помощью vi, с именем test_1, и запишем в него Это мое первое предложение записанное с помощью vi.
$ vi test_1
На экране будет примерно следующая картинка:
Колонка символов ~ обозначает пустые строки, иначе говоря, указывает, что мы находимся в конце файла. Мигающий прямоугольник обозначает курсор.
Редактор vi сейчас находится в командном режиме. Нажмем клавишу i или insert, и редактор перейдет в режим ввода текста.
Запустить vi можно введя в терминале:
$ vi file_name
где filename — имя файла, который надо редактировать/создать.
Пример: создадим файл с помощью vi, с именем test_1, и запишем в него Это мое первое предложение записанное с помощью vi.
$ vi test_1
На экране будет примерно следующая картинка:
Редактор vi сейчас находится в командном режиме. Нажмем клавишу i или insert, и редактор перейдет в режим ввода текста.
Теперь вводим следующий текст:
Это мое первое предложение записанное с помощью vi. <дальше что хотите>
Для переноса строки, можно воспользоваться клавишей Enter.
Это мое первое предложение записанное с помощью vi. <дальше что хотите>
Исправлять опечатки можно с помощью клавиши Backspace и Del.
Для выхода из режима ввода и возвращения в командный режим нажмем клавишу Esc.
В командном режиме для движения по файлу можно использовать клавиши-стрелки. Если в файле всего одна строка, то при попытке нажать клавишу со стрелкой вверх либо вниз редактор, возможно, будет подавать звуковой сигнал.
Помимо команды i/insert, есть еще несколько способов вставить текст.
В командном режиме для движения по файлу можно использовать клавиши-стрелки. Если в файле всего одна строка, то при попытке нажать клавишу со стрелкой вверх либо вниз редактор, возможно, будет подавать звуковой сигнал.
Помимо команды i/insert, есть еще несколько способов вставить текст.
Так, команда a начинает вставлять текст после текущего положения курсора, а не прямо в текущую.
Например, приведем с помощью клавиш-стрелок курсор к пробелу, разделяющему слова новая и строчка:
Нажмем теперь клавишу a (редактор перейдет в режим ввода) и введем слово красивая, после чего нажмем клавишу Esc и вернемся в командный режим.
На экране будет следующее:
Для того, чтобы начать вводить текст со следующей строки, используем команду o.
Нажмем эту клавишу и введем еще текст:
Я перешел на эту строку с помощью команды "o".
В командном режиме нажатие клавиши x удаляет символ, на который указывает курсор.
Я перешел на эту строку с помощью команды "o".
Переместим курсор на четвертую строку, после слова строку.
с помощью команды «o»
удалился.
Можно удалять целые строки командой dd (то есть нажав клавишу d два раза подряд).
Можно удалять целые строки командой dd (то есть нажав клавишу d два раза подряд).
Если курсор стоит на третьей строке, и мы введем команду dd, на экране останется следующее:
Для того, чтобы удалить слово, на которое показывает курсор, можно использовать команду dw.
Подведем курсор к слову красивая и введем dw. Результат будет следующим:
Отдельные части текста можно заменять на другие; для этого используется команда R.
Подведем курсор к первому символу в слове новая, нажмем клавишу R и введем слово синяя.
Действие команды R напоминает действие команд i и a, однако при команде R новый текст не вставляется, а стирает старый.
То есть если вы вводите слово длиннее или короче прежнего, то некоторые лишние символы остаются, и наоборот.
Команда r заменяет один символ, а именно тот, на который указывает курсор.
Команда r заменяет один символ, а именно тот, на который указывает курсор.
Например, подведем курсор к началу слова синяя, введем команду r и за ней букву з.
На экране возникнет следующее:
С помощью команды ~ можно поменять регистр буквы, на которую указывает курсор (с верхнего на нижний и наоборот).
Например, если подвести курсор к букве э в слове это и нажимать клавишу ~ много раз, то в конце концов возникнет:
В дополнение к клавишам-стрелкам можно для движения курсора использовать клавиши h, j, k и l. Они будут сдвигать курсор соответственно влево, вниз, вверх и вправо. Этими командами можно воспользоваться, если (по какой-нибудь причине) клавиши-стрелки действуют неправильно.
Команда w перемещает курсор на начало следующего слова;
команда b перемещает курсор на начало предыдущего слова.
Команда 0 (клавиша ноль) перемещает курсор на начало текущей строки;
Команда 0 (клавиша ноль) перемещает курсор на начало текущей строки;
команда $ перемещает курсор в конец текущей строки.
При редактировании больших файлов возможно пригодится «перелистывать» целые экраны вперед (вниз) и назад (вверх);
При редактировании больших файлов возможно пригодится «перелистывать» целые экраны вперед (вниз) и назад (вверх);
для этого используются команды соответственно Ctrl-F и Ctrl-B, для простоты запоминания Front — вперед (вниз), Back — назад (вверх).
Для того, чтобы переместить курсор в конец файла, используется команда G. Можно также поместить курсор на строку с данным номером;
Для того, чтобы переместить курсор в конец файла, используется команда G. Можно также поместить курсор на строку с данным номером;
например, команда 10G поместит курсор на строку с номером 10.
Для того, чтобы переместить курсор в начало файла, можно использовать команду 1G или gg.
Команды движения курсора можно совмещать с другими командами, например, с командами удаления текста.
Команды движения курсора можно совмещать с другими командами, например, с командами удаления текста.
Например, команда d$ удалит все, что находится между текущим положением курсора и концом строки;
команда dG удалит все, что находится между текущим положением курсора и концом файла и т.д.
Для выхода из редактора vi без сохранения изменений, сделанных в файле, используется команда :q!.
Для выхода из редактора vi без сохранения изменений, сделанных в файле, используется команда :q!.
Когда вводится команда :, курсор переходит на последнюю строку экрана, и таким образом редактор оказывается в режиме последней строки.
В этом режиме возможно вводить некоторые расширенные команды.
Одна из них — команда q!, которой завершается работа с редактором vi без сохранения сделанных изменений.
Команда :wq сначала сохраняет файл со сделанными изменениями, а затем выходит из редактора vi.
Команда ZZ (выданная в командном режиме, т.е. без введения команды :) эквивалентна команде :wq. Если файл со времени последней модификации не изменялся, то время создания файла также не будет изменено.
Напомню, что в режиме последней строки введение команды завершается клавишей Enter.
Чтобы сохранить файл, но не выходить из редактора vi, используется команда :w.
Для того, чтобы приступить к редактированию другого файла, используется команда :e.
Команда :wq сначала сохраняет файл со сделанными изменениями, а затем выходит из редактора vi.
Команда ZZ (выданная в командном режиме, т.е. без введения команды :) эквивалентна команде :wq. Если файл со времени последней модификации не изменялся, то время создания файла также не будет изменено.
Напомню, что в режиме последней строки введение команды завершается клавишей Enter.
Чтобы сохранить файл, но не выходить из редактора vi, используется команда :w.
Для того, чтобы приступить к редактированию другого файла, используется команда :e.
Например, чтобы прекратить редактирование файла test_1 и вместо этого начать редактирование файла test_2, надо ввести команду:
:e test_2
Если команда :e будет введена без предварительного сохранения файла на диск, будет выдано сообщение об ошибке: изменения не сохранены (добавьте ! чтобы обойти проверку).
Это сообщение означает, что после последней модификации не было сохранения файла, и редактор vi отказывается приступить к редактированию другого файла.
:e test_2
Если команда :e будет введена без предварительного сохранения файла на диск, будет выдано сообщение об ошибке: изменения не сохранены (добавьте ! чтобы обойти проверку).
Это сообщение означает, что после последней модификации не было сохранения файла, и редактор vi отказывается приступить к редактированию другого файла.
Сейчас можно либо сохранить сделанные изменения командой :w и затем вводить команду :e, либо использовать команду:
:e! test_2
Символ ! в последней команде сообщает редактору, что вы действительно хотите приступить к редактированию другого файла, не сохраняя изменения в прежнем.
Включить в текущий файл содержимое другого файла можно командой :r.
Например, команда:
:r test_1
вставляет содержимое файла test_1 в пустой файл test_2.
Из редактора vi можно выполнять команды оболочки.
:e! test_2
Символ ! в последней команде сообщает редактору, что вы действительно хотите приступить к редактированию другого файла, не сохраняя изменения в прежнем.
Включить в текущий файл содержимое другого файла можно командой :r.
Например, команда:
:r test_1
вставляет содержимое файла test_1 в пустой файл test_2.
Из редактора vi можно выполнять команды оболочки.
Команда :r! работает аналогично команде :r, но вместо содержимого другого файла она вставляет в редактируемый файл выдачу некоторой команды.
Например, введя команду:
:r! ls -l /tmp
мы получим примерно следующее содержимое
Можно также «временно выйти» из редактора, запустить команду и затем вернуться обратно.
Например, если будет введена команда:
ls /tmp
то команда ls /tmp будет исполнена, ее результат будет выдан на экран, но выдача вставлена в файл не будет
Если используется команда :shell, то редактор vi запускает сеанс (instance) командной оболочки, прерывая редактирование на время исполнения команд.
Например, введя команду:
:r! ls -l /tmp
мы получим примерно следующее содержимое
Например, если будет введена команда:
ls /tmp
то команда ls /tmp будет исполнена, ее результат будет выдан на экран, но выдача вставлена в файл не будет
Для выхода из оболочки и возвращения к редактированию надо ввести команду exit.
Как и в случае с любой программой в системе Linux в первую очередь следует обратиться к экранной документации к программе vi.
Следует знать также, что редактор vi является пользовательским интерфейсом редактора ex, который выполняет многие из команд режима последней строки редактора vi.
Поэтому, в дополнение к сказанному выше, можно также читать экранную документацию к редактору ex.
Обычно (кроме режимов восстановления после системных сбоев) нам доступна более современная и улучшенная версия vi — vim, который имеет аналогичный vi интерфейс, поддерживает все команды vi и кроме того — массу дополнительных возможностей.
Комментариев нет:
Отправить комментарий