opened image

Текстовый редактор vim

Часто возникает необходимость редактировать текстовые файлы непосредственно на сервере с операционной системой Linux. При установке ОС Linux из наших шаблонов в системе уже доступен текстовый редактор vi/vim, который Вы можете использовать для редактирования текстовых файлов непосредственно на сервере.

Если по какой-то причине он не установлен, то его можно установить выполнив команду установки. Для rpm-basedдистрибутивов:

yum install vim


Для deb-basedкоманда следующая:

apt-get install vim


На самом деле команды vi и vim могут запускать одно и то же приложение с разными настройками. В более ранних версиях ОС Linux редактор vim может быть не установлен, но всегда есть редактор vi.

Для работы с программой нужно войти на сервер используя протокол SSH. Например, на Windows установив программу PuTTY, а на Linux или Mac использовать встроенную программу ssh. В зависимости от системы Linux, а также программы, которую используете для подключения к серверу, можно производить копирование и вставку из буфера обмена Вашей операционной системы. Например, вставить текст в PuTTY можно при помощи комбинации SHIFT+INS, а скопировать - просто выделив текст. К сожалению, не на всех дистрибутивах Linux на сервере это работает.

Для того, чтобы запустить редактор, войдите на сервер по SSH используя любой доступный клиент - встроенный в Вашу ОС или, например, PuTTYи выполните команды:

vi
vim


Для существующих можно указывать как абсолютные, так и относительные пути (показан пример с абсолютным путём):

vi /путь/к/файлу
vim /путь/к/файлу


Редактор vi/vim более сложный и продвинутый, чем, например, nano. Основная его особенность в том, что у него существует два основных режима: режим команд и режим вставки. В режиме команд почти каждая буква или комбинация выполняет какую-либо команду. В режиме вставки производится собственно ввод текста. Работа в командном режиме производится только с латинской раскладкой клавиатуры. Для того, чтобы войти в режим вставки, нужно в режиме команд нажать латинскую букву 'i' или кнопку INSERT (если Вы уже находитесь в режиме вставки, под курсором просто будет появляться буква 'i'). Для выхода из режима вставки нажмите ESC.

Рассмотрим внешний вид главного окна редактора vim.

 
Изображение 1. Внешний вид редактора vim в командном режиме
 
Изображение 2. Внешний вид редактора vim в режиме вставки


Программа имеет "чистый", аскетический интерфейс, но возможности её очень большие. Программа разрабатывалась для удобного и быстрого управления исключительно из клавиатуры. Поэтому при открытии файла мы видим только область для редактирования и внизу узкая строка состояния, которая показывает режим (командный, вставки или визуального выделения), дополнительную информацию о введённых командах, которая появляется во время введения комбинированных команд, номер строки и символа в строке. Все элементы настраиваются.

Навигация по тексту также производится иначе, чем у nano и других классических редакторов.

В командном режиме можно перемещаться по тексту используя как стрелки, кнопки HOME, END, PG UP, PG DOWN, так и буквы на клавиатуре (самые главные команды будут в конце этого раздела):
H - влево
J - вниз
K - вверх
L - вправо
Перемещаться по словам можно используя кнопки W и B.
Это сделано для того, чтобы не отрывать глаза от экрана и руки от клавиатуры во время редактирования, что сильно повышает скорость работы. Большинство команд vim выполняются при нажатии обычных букв в командном режиме.

В режиме вставки можно воспользоваться стрелочками, но это работает не во всех системах и терминалах.

В редакторе vim также можно производить базовые действия по редактированию, такие как копирование, вставка текста, поиск, замена. Эти кнопки нужно нажимать в командном режиме. Следующие команды написаны в качестве шпаргалки:
V - выделить текст
Y - копировать
D - удалить выделенное
DD (последовательно два раза подряд нажать кнопку D) - удалить строку
DAW (последовательно нажать 3 буквы на клавиатуре) - удалить слово
X или DEL - удалить символ под курсором
SHIFT+P - вставить перед курсором
O - добавить строку после текущей и перейти в режим редактирования
SHIFT+O - добавить строку перед текущей и перейти в режим редактирования
U - отменить действие
CTRL+R - повторить действие
/ (слэш) - поиск по слову
N - при поиске перейти к следующему найденному
SHIFT+N - при поиске перейти к предыдущему найденному

Как было указано выше, для входа в режим вставки нужно использовать кнопку I или INSERT. При этом ввод начнётся перед символом, на котором стоял курсор. Для того, чтобы войти в режим вставки и добавить символы после курсора, нажмите кнопку A. Также для того, чтобы войти в режим вставки в начале строки, нажмите SHIFT+I, в конце строки - SHIFT+A.

Отдельно стоит описать процесс поиска и замены. В редакторе vim для этого используются регулярные выражения. Знакомство с ними -  это отдельная тема, выходящая за рамки данной статьи. В общем случае если Вы перейдёте в режим поиска (кнопка '/' в командном режиме), введёте слово для поиска и нажмёте ENTER - программа найдёт его. Далее нажимайте N или SHIFT+N для продолжения поиска.

Для того, чтобы заменить одно слово на другое во всём файле в редакторе vim нужно перейти в специальный подрежим командного режима - режим команд - и ввести специальную команду. Для перехода в режим команд введите символ ':' (двоеточие) находясь в командном режиме. Введите все символы:

:%s/old/new/g

где old - старое слово, которое необходимо заменить; new - новое, на которое заменить. В конце - нажать клавишу ENTER.

Например, заменю слово Lorem на Hello:

 
Изображение 3. Замена слова в редакторе vim

 

После нажатия кнопки ENTER:

 

 
Изображение 4. Замена произведена


Таким образом можно заменить, например, название сайта в дампе базы данных mysql. Пример:

:%s/example.com/domain.net/g


Теперь самый главный вопрос касающийся редактора vi/vim, а именно: как из него выйти. Для этого нужно перейти в режим команд (нажав ':' в командном режиме) и набрать одну из следующих последовательностей:
:q - выход, если не были сделаны изменения
:q! - если были сделаны изменения, но Вы не хотите их сохранять
:w - записать (сохранить) файл
:wq - записать файл и выйти

Если с работой редактора vim возникли сложности, то для того, чтобы покинуть редактор и начать всё с начала, нажмите несколько раз клавишу ESC для того, чтобы сбросились все промежуточные режимы и чтобы был произведён выход из режима вставки и наберите на клавиатуре :q! . При необходимости, несколько раз.

 

 

Вывод

Редактор vim хорошо подойдёт тем, кто желает учиться и узнавать много нового. В опытных руках он может сильно повысить Вашу продуктивность в написании текста и программного кода. Потратив некоторое время на его освоение, Вы уже не захотите использовать какой-либо другой редактор на сервере Linux.