Работа с редактором Vim - функции и команды
Итак, вам срочно понадобилось отредактировать какой-либо конфигурационный файл и под рукой нет знакомых консольных текстовых редакторов, только Vi (Vim)? Предлагаем следующий алгоритм действий, который выручит вас в данной ситуации:
Быстрый старт
Открываем файл в текстовом редакторе командой vi /путь/имя_файла, например:
sudo vi /etc/netplan/99-netcfg-vmware.yaml
Команда sudo используется в том случае, если для открытия файла нужны повышенные привилегии (например, редактирование системных конфигурационных файлов). Указанный файл откроется в текстовом редакторе:
Перемещаем курсор по тексту с помощью стрелок или клавиш h (влево), l (вправо), j (вниз), k (вверх) до нужного места в тексте.
Переводим открытый файл в режим редактирования текста нажатием клавиши i (раскладка клавиатуры должна быть англоязычной). В результате в нижней части экрана появится индикация режима работы — INSERT:
Вносим в текст необходимые корректировки.
Выходим из режима редактирования нажатием клавиши Esc — индикатор INSERT в нижней части экрана должен исчезнуть.
Теперь необходимо закрыть файл, сохранив внесенные изменения. Для этого набираем:
:wq
Данный набор символов также должен отобразиться в нижней части окна. Буква w помогает сохранить файл на диск (write), q — завершить работу редактора (quit):
Если же что-то пошло не так и вам необходимо закрыть редактор не сохраняя изменения в файле, просто введите команду:
:q!
Дальше — больше
Приведенной выше информации вполне достаточно, чтобы открывать, редактировать и сохранять файлы в текстовом редакторе Vim, однако у него есть возможности, которые могут существенно упростить и ускорить работу. Стоит начать с пояснения: Vi был одним из первых визуальных текстовых редакторов, однако начиная с определенной версии программный продукт стал доступен только под коммерческой лицензией. Энтузиасты начали разрабатывать свои аналоги этого текстового редактора, одним из которых является Vim (сокращение от Vi Improved — Vi усовершенствованный). Vim получил широкое распространение в *nix-дистрибутивах и при запуске команды vi в консоли вероятнее всего откроется именно он.
Прежде всего нужно понять, что Vim может работать в нескольких режимах, каждый из которых обладает своими особенностями и набором поддерживаемых функций. Сразу после запуска редактора вы окажетесь в обычном режиме (normal). Здесь можно не только перемещать курсор по тексту, но и выделять/удалять/копировать/вставлять как отдельные символы, так и целые блоки текста. Эти задачи выполняются нажатием соответствующих букв и цифр (причем регистр букв имеет значение), точка отсчета — текущее положение курсора. Рассмотрим навигацию по файлу:
- h — смещение курсора на один символ влево;
- j — смещение курсора на один символ вниз;
- k – смещение курсора на один символ вверх;
- l – смещение курсора на один символ вправо;
- w – смещение курсора в начало следующего слова в данной строке;
- b – смещение курсора в начало предыдущего слова в данной строке;
- G – переместить курсор в конец файла;
- gg – вернуться в начало файла.
Действия навигации также можно совмещать с цифрами, например, комбинация 3w сместит курсор вперед на три слова, а 5k на пять строк вверх.
Часто используемые операции c текстом:
- x — удалить символ под курсором;
- d — удалить символы/строки;
- dd — удалить строку целиком;
- D — удалить символы от текущего положения курсора до конца строки;
- v — включить режим выделения текста;
- y — скопировать символы/строки;
- yy — скопировать строку целиком;
- p — вставить символы/строки;
- u — отменить последнее действие.
Функции удаления и копирования требуют дополнительного пояснения, ведь при нажатии d или y вроде бы ничего не происходит. Дело в том, что редактор ожидает дальнейших указаний — сколько строк символов нужно удалить/скопировать и в каком направлении от текущего положения курсора вести отсчет. Чтобы удалить пять символов вправо от курсора, нужно последовательно нажать d5l, чтобы скопировать три строки, следующие после курсора — y5j. Если имеется выделенный текст, для его копирования достаточно нажать y.
Имеется в Vim и функция поиска:
- /шаблон — все вхождения набора символов, указанного после / (слэша) будут подсвечены в тексте;
- n — сместить курсор к следующему вхождению;
- N — сместить курсор к предыдущему вхождению.
Другой режим работы Vim — режим редактирования. Переключиться в него можно несколькими способами:
- i — режим вставки (INSERT), ввод начинается с позиции курсора;
- a — режим вставки (INSERT), ввод начинается с позиции, следующей за курсором;
- A — режим вставки (INSERT), курсор перемещается в конец текущей строки;
- R — режим замены (REPLACE), все вводимые символы будут последовательно заменять находящиеся под курсором.
Если нужно заменить всего один символ, находящийся под курсором, достаточно нажать r и нужный символ — замена будет произведена без перехода в режим редактирования. Внизу экрана появляется соответствующий индикатор режима — INSERT или REPLACE. Вернутся в общий режим можно нажатием кнопки Esc (индикатор должен пропасть).
Еще один режим работы Vim — командный. Переход в него осуществляется из общего режима нажатием : (двоеточия). Соответствующий индикатор появляется в нижнем левом углу окна, после чего можно вводить команды и их сочетания.
- :q — выйти из редактора;
- :q! — выйти из редактора без сохранения изменений в файле;
- :w — сохранить изменения в файл;
- :wq — сохранить изменения и закрыть редактор;
- :r имя_файла — добавить содержимое указанного файла в редактируемый;
- :r! команда_консоли — выполнить команду и добавить ее вывод в файл.
И еще кое-что
В данной статье рассмотрены часто употребляемые функции Vim, которых на самом деле гораздо больше. Чтобы закрепить навыки работы с редактором, освежить в памяти его возможности или узнать что-то новое, набираем в консоли команду vimtutor и проходим курс обучения (vimtutor ru — если предпочтителен русский язык):