VIM (сокр. от Vi Improved, произносится «Вим») — текстовый редактор, созданный на основе более старого Vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации.
На выделенных серверах установлен VIM, также создан alias, который при вызове команды VI вызывает VIM.
Если на сервере нет текстового редактора vim - его можно установить.
Debian/Ubuntu:
# apt install vim
CentOS/AlmaLinux:
# yum install vim
В данной статье приводится практический опыт использования редактора, кратко описаны широко используемые команды для редактирования текста, которые помогут начинающим освоить этот редактор.
- 1. Режимы работы
- 2. Основные команды VIM перемещения по тексту
- 3. Работа с буфером
- 4. Замена текста
- 5. Как выйти из редактора VIM
Режимы работы
Существует три основных режима работы: команд, редактирования и последней строки.
Выход из режима редактирования осуществляется клавишей Escape (далее обозначена как esc), переход в режим редактирования клавишами i или insert.
Находясь в режиме команд, можно выполнять сложные операции редактирования текста с помощью клавиши : (двоеточие). При нажатии этой клавиши курсор устанавливается в последнюю строку экрана, поэтому данный режим называется режимом последней строки. Он считается особым типом режима команд.
Для того, чтобы открыть какой-то файл или создать новый, надо выполнить команду:
# vim путь_к_файлу/имя_файла
Например, чтобы отредактировать конфигурационный файл NGINX с помощью VIM, напишем:
# vim /etc/nginx/nginx.conf
Конечно, если вы только начинаете изучать VIM и плохо разбираетесь в работе сервисов Linux, лучше не трогать конфигурационные и системные файлы, чтобы что-нибудь не поломать. Для тренировки можно взять какой-нибудь большой текст и скопировать его в тестовый файл.
При запуске VIM по умолчанию открывается режим команд (или командный режим).
Чтобы перейти в режим редактирования, необходимо нажать клавишу i (или insert) и внести нужные изменения.
Если вместо i нажать a, текст будет вставляться за символом, на котором стоит курсор (обычно при редактировании файлов используется этот метод, но тут кому как удобнее), если нажать o — будет вставлена новая строка.
Стирать текст можно как в режиме редактирования (как в любом классическом редакторе), так и в режиме команд (клавиша esc, затем клавиша x — она работает как клавиша del, то есть стирает вперед, если нажать shift+x, то будет стирать назад по аналогии с backspace).
Чтобы перейти в режим последней строки, следует выйти в режим команд (клавиша esc), затем нажать на двоеточие (:). Далее можно либо ввести команду (рассмотрим команды далее), либо выйти обратно в режим команд (клавиша esc).
Команды в VIM можно вводить в режиме последней строки (через двоеточие) и в режиме команд (с помощью клавиши SHIFT). Отметим, что VIM воспринимает команды только в английской раскладке, поэтому перед работой не забудьте ее проверить
Основные команды VIM перемещения по тексту
1. Перейти к строке с номером:
(esc) :номер или (esc),номер,shift+g
2. Поиск по тексту:
(esc) /слово_которое_ищем
3. Переместить курсор на начало следующего слова:
(esc) w (можно, например, перейти на 3 слова, нажав 3w)
4. Переместить курсор на конец следующего слова:
(esc) e
5. Переместить курсор на начало предыдущего слова:
(esc) b
6. Переместить курсор на конец предыдущего слова:
(esc) ge
7. Переместить курсор на следующий абзац:
(esc) }
8. Переместить курсор в начало строки:
(esc) 0 (ноль)
9. Переместить курсор в конец строки:
(esc) $
10. Переместить курсор на 10 строк вниз:
(esc) 10j
11. Переместить курсор на 5 символов вправо:
(esc) 5l
12. Переместить курсор в конец документа:
(esc) G или shift+g
13. Переместить слово в начало документа:
(esc) gg
14. Переместить курсор в предыдущее место:
(esc) ctrl+o
Команд для перемещения по тексту в VIM намного больше, здесь мы рассмотрели только основные, которые помогут вам освоится в VIM.
Работа с буфером
В режиме команд в VIM можно работать со строками, не используя ctrl+c, ctrl+x и ctrl+v. В Linux вместо них можно использовать сочетания клавиш ctrl+insert (копировать) и shift+insert (вставить), но мы рассмотрим примеры работы с буфером в VIM.
(esc) dd — удаляет строку в буфер (аналог ctrl+x).
(esc) 10dd — удаляет 10 строк в буфер.
(esc) yy — скопирует строку в буфер (аналог ctrl+c).
(esc) 10yy — скопирует 10 строк в буфер.
(esc) p — вставит содержимое буфера под курсором.
(esc) P — вставит содержимое буфера над курсором (аналог ctrl+v).
Замена текста
Один из мощных инструментов VIM — замена слова в тексте на другое. В Linux есть инструменты для этого, однако с помощью VIM можно, например, заменить все слова в строке.
(esc):s/что_меняем/на_что_меняем/ — в данном случае меняем первое слово «что_меняем» в строке на «на_что_меняем».
(esc):s/что_меняем/на_что_меняем/g
где g обозначает замену до конца строки, в таком случае меняются все слова «что_меняем» в строке.
Если надо менять информацию по всему файлу, то тогда пишем символ % в начале команды:
(esc):%s/что_меняем/на_что_меняем/g
В VIM есть очень удобный функционал комментирования строк.
- Комментировать блок текста от курсора до строки номер 10
:.,10s/^/#/
- Комментировать блок текста от курсора до конца
:.,$/^/#/
Как выйти из редактора VIM
Среди пользователей Linux много шуток о том, что можно зайти в VIM и не выйти. Однако выход всё же есть. Мы расскажем, как можно это сделать.
- Стандартный выход осуществляется последовательностью нажатий (esc):q
Данная команда обычно используется в случаях, когда вы просто открыли VIM, чтобы что-то посмотреть, ничего не меняя. Если файл редактировался, то VIM не даст вам выйти, и вы увидите ошибку: E37: No write since last change (add ! to override). Если вы не хотите сохранять изменения, используйте следующую команду.
- Выход без сохранения: (esc):q! или shift+zq
Добавив в конце восклицательный знак, мы как-будто твердо указываем VIM-у, что делать, игнорируя ошибки. Полезно, когда вы открыли файл, что-то в нем изменили или случайно что-то удалили и хотите выйти, не сохраняя изменения.
- Выход с сохранением текста: (esc):wq или (esc):exit или shift+zz
Добавив w, мы говорим VIM-у, что файл нужно сохранить с изменениями. Для начала рекомендуем научиться использовать режим последней строки, т.е. команды q! или wq. Со временем для ускорения работы можно начать использовать shift+zq и shift+zz.
- Выход с принудительным сохранением (например, если файл read-only):
(esc):wq!