Как устроен редактор VIM и как из него выйти
VIM (Vi Improved) — текстовый редактор, усовершенствованная версия устаревшего VI.
Команды для установки на Debian-based ОС:
# apt install vimНа RedHat-based ОС
# yum install vimНесмотря на неочевидный интерфейс, VIM остаётся актуальным редактором. Его главные преимущества — модальная система редактирования и более функциональный набор инструментов для работы с текстом (от символов до целых блоков), поддержка больших файлов и экосистема макросов. Даже более простые альтернативы, например, nano, пока не могут его заменить, поскольку Vim создан для работы со сложными сценариями.
Обратите внимание: в современных дистрибутивах часто предустановлена облегчённая версия редактора VIM — vim-tiny. Хотя интерфейс и базовые команды приложений похожи, между ними есть существенные различия. В статье рассказываем именно о работе с полноценным VIM.
Режимы работы
Чтобы открыть файл в Vim, используйте файл:
# vim путь_к_файлу/имя_файлаРедактор работает командном режиме, режиме редактирования (вставки) и режиме последней строки.
По умолчанию при запуске редактора откроется командный режим. Он позволяет выполнять сложные операции редактирования текста. Для этого нужно нажать : (двоеточие). Курсор переместится в нижнюю строку экрана и включится режим последней строки, который считается подвидом командного. Если указать конкретное значение строки, например, :15 курсор переместится на строку 15.
Для перехода в режим редактирования нажмите i (или Insert). А чтобы выйти обратно в командный режим, используйте клавишу Escape (esc).
Для вставки текста можно использовать:
- a — вставка начинается после символа, на котором стоит курсор;
- o — создание и вставка текста на новой строке.
Удалять текст можно двумя способами:
- В режиме редактирования.
- В командном режиме (нажмите esc, затем):
- x — удалит символ под курсором (аналог Delete);
- Shift+x — удалит символ перед курсором (аналог Backspace).
Для перехода в режим последней строки с помощью esc выйдите в режим команд и нажмите двоеточие (:). Затем вы можете ввести команду или вернуться к редактированию, нажав esc.
В VIM команды можно вводить двумя основными способами: в режиме последней строки (используя двоеточие) и непосредственно в командном режиме (часто с использованием клавиши Shift в сочетаниях).
Важно помнить: VIM выполняет команды только при английской раскладке клавиатуры.
Основные команды VIM для навигации по тексту
Рассмотрим команды, которые помогут начать работу с VIM:
- (esc) /слово — поиск по тексту;
Например, чтобы найти в тексте слово «timeout», перейдите в режим команд (esc). Введите символ / (слэш) и timeout. Курсор переместится к первому найденному совпадению. Для перехода к следующему совпадению нажмите клавишу n, к предыдущему — N (в верхнем регистре). Чтобы завершить поиск и вернуться к обычному редактированию, нажмите esc.
- (esc) :номер или (esc),номер,shift+g — переход к строке с определённым номером;
- (esc) w — перемещение курсора на начало следующего слова. Для перемещения на несколько слов вперёд можно использовать число перед командой, например, 3w переместит курсор на три слова;
- (esc) e — перемещение курсора в конец следующего слова;
- (esc) b — перемещение курсора на начало предыдущего слова;
- (esc) ge — перемещение курсора на конец предыдущего слова;
- (esc) } — перемещение курсора на следующий абзац;
- (esc) 0 (ноль) — перемещение курсора в начало строки;
- (esc) $ — перемещение курсора в конец строки;
- (esc) 10j — перемещение курсора на 10 строк вниз;
- (esc) 5l — перемещение курсора на 5 символов вправо;
- (esc) G или shift+g — перемещение курсора в конец документа;
- (esc) gg — перемещение слова в начало документа;
- (esc) ctrl+o — перемещение курсора в предыдущее место.
Работа с буфером обмена в Vim
Основные команды для работы с буфером (выполняются из командного режима):
- (esc) yy — копировать строку в буфер (аналог ctrl+c);
- (esc) 10yy — копировать 10 строк;
- (esc) dd — вырезать текущую строку в буфер (аналог ctrl+x);
- (esc) 10dd — вырезать 10 строк, начиная с текущей;
- (esc) p — вставить содержимое буфера под текущей строкой (или после курсора);
- (esc) P — вставить содержимое буфера над текущей строкой (или перед курсором).
Замена текста
Один из удобных инструментов VIM — возможность заменить слово или фразу в тексте на другое. Хотя в Linux существуют отдельные утилиты для этого, VIM позволяет выполнять замену во всей строке сразу.
Основные команды замены (вводятся после перехода в режим команд клавишей Esc):
:s/старое_слово/новое_слово/— заменяет первое найденное в строке слово на новое;:s/старое_слово/новое_слово/g— флаг g в конце означает замену всех слов «старое_слово» в текущей строке.:%s/старое_слово/новое_слово/g— добавление символа % в начало команды выполняет замену во всём файле.
Комментирование строк
Комментировать блок текста от курсора до строки номер 10:
:.,10s/^/#/
Комментировать блок текста от курсора до конца
:.,$/^/#/
Как выйти из редактора VIM
Основные команды:
- :q — стандартный выход. Работает, если файл не был изменён. Если вы вносили правки, VIM покажет ошибку и не закроется.
- :q! или ZQ (Shift+ZQ) — выход без сохранения изменений. Восклицательный знак даёт редактору понять, что можно игнорировать предупреждения. Полезно, если вы случайно что-то изменили и хотите выйти, отменив все правки.
- :wq или :x или ZZ (Shift+ZZ) — выход с сохранением всех изменений. Команда w указывает на необходимость записи (write) файла.
- :wq! — принудительный выход с сохранением. Используется, например, для записи в файл, доступный только для чтения.
Для начала рекомендуется освоить команды в режиме последней строки (:q! и :wq). Сочетания клавиш вроде ZZ и ZQ можно использовать позже для ускорения работы.