Редактор Vi — универсальный полноэкранный текстовый редактор в среде UNIX. Редактор Vi присутствует в любой системе Linux (даже минимальной конфигурации) и обязательно запустится из командной строки Linux в самой катастрофической ситуации.
У пользователя, таким образом, всегда сохранится возможность отредактировать конфигурационные файлы для приведения системы в рабочее состояние. Поэтому каждому пользователю Linux необходимы хотя бы основные навыки работы в Vi.
Содержание
- Основные понятия
- Запуск редактора Vi
- Ввод текста
- Удаление текста
- Изменение текста
- Команды для движения курсора
- Сохранение изменений и выход из редактора Vi
- Переключение между файлами
- Вставка содержимого других файлов
- Помощь в работе с редактором Vi
Основные понятия
В любой момент при работе в редакторе Vi вы находитесь в одном из трёх режимов редактора:
- командный режим (command mode);
- режим ввода (insert mode);
- режим последней строки (last line mode).
При запуске редактора Vi вы оказываетесь в командном режиме. В этом режиме можно давать команды для редактирования файлов или перейти в другой режим. Например, вводя x в командном режиме мы удаляем символ, на который указывает курсор. Клавиши-стрелки перемещают курсор по редактируемому файлу. Как правило, команды, используемые в командном режиме, состоят из одного или двух символов.
Основной ввод и редактирование текста осуществляется в режиме ввода. При использовании редактора Vi основное время, скорее всего, будет проводиться именно в этом режиме. Переход в режим ввода из командного режима осуществляется командой i (сокращение от insert). Находясь в режиме ввода, можно вводить текст в то место, куда указывает курсор. Выход из режима ввода в командный режим осуществляется клавишей Esc.
Режим последней строки — специальный режим, в котором редактору даются сложные команды. При вводе этих команд они отображаются в последней строке экрана (отсюда пошло название режима). Например, если ввести в командном режиме команду :, то осуществится переход в режим последней строки, и можно будет вводить такие команды, как wq (записать файл и покинуть редактор Vi) или q! (выйти из редактора Vi без сохранения изменений). В режиме последней строки обычно вводятся команды, название которых состоит из нескольких символов. В этом режиме в последнюю строку вводится команда, после чего нажимается клавиша Enter, и команда исполняется.
Запуск редактора Vi
Для уяснения всех концепций редактора Vi запустим его и создадим новый файл по имени test:
$ vi test
~
~
~
~
~
~
"test" [New file]
Колонка символов ~ обозначает пустые строки, курсор находится в начале первой строки.
Ввод текста
Редактор Vi сейчас находится в командном режиме. Нажмём клавишу i, и редактор перейдёт в режим ввода текста. Теперь вводим, например, следующий текст:
Многие пользователи предпочитают наделенный сказками редактор Emacs.
~
~
~
~
~
Введите любое количество строк, после каждой нажимая клавишу Enter. Исправлять опечатки можно с помощью клавиши Backspace. Для выхода из режима ввода и возвращения в командный режим нажмём клавишу Esc.
В командном режиме для движения по файлу можно использовать клавиши-стрелки. Если в файле всего одна строка, то при попытке нажать клавишу со стрелкой вверх либо вниз редактор, возможно, будет подавать звуковой сигнал.
Помимо команды i, есть ещё несколько способов вставить текст. Так, команда a начинает вставлять текст после текущего положения курсора, а не прямо в текущую. В связи с тем, что текст был набран с опечаткой приведём с помощью клавиш-стрелок курсор к пробелу, разделяющему слова наделенный и сказками. Теперь нажмем клавишу a (редактор перейдёт в режим ввода) и введём под, после чего нажмём клавишу Esc и вернёмся в командный режим. На экране будет следующее:
Многие пользователи предпочитают наделенный подсказками редактор Emacs.
~
~
~
~
~
Для введения текста со следующей строки, используем команду o. Нажмём эту клавишу и введём одну-две строки текста:
Многие пользователи предпочитают наделенный подсказками редактор Emacs.
Выбор текстового редактора обычно является вопросом индивидуального вкуса.
~
~
~
~
Удаление текста
В командном режиме каждое нажатие клавиши x удаляет символ, на который указывает курсор.
Можно удалять целые строки командой dd (т. е. нажав клавишу d два раза подряд). Если курсор стоит на второй строке, и вы введёте команду dd, на экране останется следующее:
Многие пользователи предпочитают наделенный подсказками редактор Emacs.
~
~
~
~
~
Для удаления слова, на которое показывает курсор, можно использовать команду dw. Подведите курсор к слову наделенный и введите dw, затем к слову подсказками и снова введите dw. Результат будет следующим:
Многие пользователи предпочитают редактор Emacs.
~
~
~
~
~
Изменение текста
Отдельные части текста можно заменять на другие; для этого используется команда R. Подведите курсор к первому символу в слове Emacs, нажмите клавишу R и введите слово vi:
Многие пользователи предпочитают редактор vi.
~
~
~
~
~
Действие команды R напоминает действие команд i и a, однако при команде R новый текст не вставляется, а стирает старый.
Команда r заменяет один символ, а именно тот, на который указывает курсор.
С помощью команды ~ можно поменять регистр буквы, на которую указывает курсор (с верхнего на нижний и наоборот). Подведем курсор к первому символу в слове vi и дадим команду ~:
Многие пользователи предпочитают редактор Vi.
~
~
~
~
~
Команды для движения курсора
Помимо клавиш-стрелок для движения курсора можно использовать клавиши h, j, k и l. Они будут сдвигать курсор соответственно влево, вниз, вверх и вправо. Этими командами можно воспользоваться, если (по какой-либо причине) клавиши-стрелки действуют неправильно. Команда w перемещает курсор на начало следующего слова; команда b перемещает курсор на начало предыдущего слова.
Команда 0 (клавиша ноль) перемещает курсор на начало текущей строки, а команда $ перемещает курсор в её конец.
При редактировании больших файлов для „перелистывания“ целых экранов вперёд (т. е. вниз) и назад (вверх) используются команды соответственно Ctrl-F и Ctrl-B.
Для перемещения курсора в конец файла, используется команда G, а команда 10G, например, поместит курсор на строку с номером 10. Для того, чтобы переместить курсор в начало файла, можно использовать команду 1G.
Команды движения курсора можно совмещать с другими командами, например, с командами удаления текста. Например, команда d$ удалит все, что находится между текущим положением курсора и концом строки; команда dG удалит все, что находится между текущим положением курсора и концом файла и т. д.
Сохранение изменений и выход из редактора Vi
Для выхода из редактора Vi без сохранения изменений, сделанных в файле, используется команда :q!.
Для выхода из редактора Vi с сохранением сделанных изменений используется команда :wq.
Чтобы сохранить файл, но не выходить из редактора Vi, используется команда :w.
Переключение между файлами
Для того, чтобы приступить к редактированию другого файла, используется команда :e, которую следует вводитьтолько после сохранения сделанных изменений командой :w, в противном случае Vi откажется приступить к редактирования следующего файла.
Вставка содержимого других файлов
Включить в текущий файл содержимое другого файла можно командой :r. Например, команда :r foo.txt вставит содержимое файла foo.txt в текст начиная с текущего положения курсора.
Помощь в работе с редактором Vi
Как и в случае с любой программой в системе Linux в первую очередь следует обратиться к экранной документации программы Vi. Обычно (кроме режимов восстановления после системных сбоев) доступна более современная и улучшенная версия Vi — Vim, имеющий аналогичный Vi интерфейс и массу дополнительных возможностей. Подробное руководство по Vim можно получить, запустив этот редактор и отдав команду :help.