Часто возникает необходимость редактировать текстовые файлы непосредственно на сервере с операционной системой 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.
Программа имеет "чистый", аскетический интерфейс, но возможности её очень большие. Программа разрабатывалась для удобного и быстрого управления исключительно из клавиатуры. Поэтому при открытии файла мы видим только область для редактирования и внизу узкая строка состояния, которая показывает режим (командный, вставки или визуального выделения), дополнительную информацию о введённых командах, которая появляется во время введения комбинированных команд, номер строки и символа в строке. Все элементы настраиваются.
Навигация по тексту также производится иначе, чем у 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:
Таким образом можно заменить, например, название сайта в дампе базы данных mysql. Пример:
:%s/example.com/domain.net/g
Теперь самый главный вопрос касающийся редактора vi/vim, а именно: как из него выйти. Для этого нужно перейти в режим команд (нажав ':' в командном режиме) и набрать одну из следующих последовательностей:
:q - выход, если не были сделаны изменения
:q! - если были сделаны изменения, но Вы не хотите их сохранять
:w - записать (сохранить) файл
:wq - записать файл и выйти
Если с работой редактора vim возникли сложности, то для того, чтобы покинуть редактор и начать всё с начала, нажмите несколько раз клавишу ESC для того, чтобы сбросились все промежуточные режимы и чтобы был произведён выход из режима вставки и наберите на клавиатуре :q! . При необходимости, несколько раз.
Вывод
Редактор vim хорошо подойдёт тем, кто желает учиться и узнавать много нового. В опытных руках он может сильно повысить Вашу продуктивность в написании текста и программного кода. Потратив некоторое время на его освоение, Вы уже не захотите использовать какой-либо другой редактор на сервере Linux.