DataLife Engine / Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Опытные пользователи Linux часто используют терминал, потому что так можно намного быстрее выполнить необходимые действия. Во время работы с компьютером нам довольно часто приходится редактировать различные файлы. В операционной системе Linux есть несколько текстовых редакторов, которые работают в терминале. Чаще всего новички используют редактор nano, но если вы заметили на этом сайте во всех статьях используется текстовый редактор vi. Мне Nano кажется неудобным, и недостаточно функциональным.

Есть намного лучший текстовый редактор, и это редактор vim. В нём поддерживается быстрое перемещение по тексту, удобное редактирование, команды для изменения его настроек, выполнение команд терминала из редактора, а также плагины для расширения функциональности. Но он немного сложный для новичков и очень непривычный.

В этой статье мы рассмотрим как пользоваться vim, рассмотрим основы работы с этим редактором, а также его основные команды.


Содержание статьи

Редактирование файла в Vim

Если вам надо быстро отредактировать файл и вы не хотите читать всю статью, в этом разделе я сделал небольшую инструкцию как внести изменения и выйти из редактора. Для того чтобы открыть файл выполните:

vim /path/to/the/file

Обратите внимание, что для того, чтобы команды редактора нормально работали в командном режиме необходимо выбрать английскую раскладку. По умолчанию в кириллической раскладке команды редактирования работать не будут.

Для того чтобы перейти в режим вставки (редактирования) нажмите i. Здесь вы можете редактировать файл так же, как и в nano. После того как завершите нажмите Esc, чтобы перейти в командный режим, наберите :wq и нажмите Enter. Эта команда сохранит изменения и закроет редактор. Вот и всё.

Если вы хотите выйти без сохранения изменений используйте :q! вместо :wq.

Версии редактора

На данный момент существует три версии редактора - vi, vim и neovim. Vim расшифровывается как Vi Improved, улучшенный vi. Это новая версия, которая принесла очень много улучшений. В большинстве современных дистрибутивов используется именно она. Поэтому если я буду писать vi, это значит, что я предполагаю использование vim.

Кроме того, есть NeoVim, который представляет из себя улучшенную версию Vim с поддержкой, асинхронности, большего количества возможностей и плагинов. Но я пока на эту новую версию не перешел, поэтому мало что могу о ней сказать.

Режимы работы Vim

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

Второй режим - режим вставки. Это обычное редактирование текста, он работает так же как и редактирование текста в nano. Для переключения в режим вставки используется клавиша i. Для переключения обратно в командный режим - клавиша Esc.

Ещё есть визуальный режим в котором выполняется выделение текста, режим замены, который активируется когда вы используете команды замены символов, а также режим командной строки, где можно вводить разные команды vi, который активируется вводом двоеточия ":" в командном режиме.

Как использовать редактор Vim

Начнем мы, как обычно с запуска программы, а также опций, которые ей можно передать. Синтаксис Vim очень прост:

$ vim опции имя_файла

Или:

$ vi опции имя_файла

Если в вашей системе установлен пакет vim, то команда vi будет ссылаться на исполняемый файл vim. В таком случае между этими командами нет разницы. Простой запуск vim без указания имени файла приведет к открытию пустого окна редактирования нового файла. А теперь давайте рассмотрим основные командной опции:

1. Перемещение курсора

В командном режиме вы можете перемещаться по редактируемому тексту и выполнять действия над ним с помощью клавиш с буквами. Именно этот режим открывается по умолчанию при старте редактора. Большинство команд состоят из одного символа, обычно буквы или знаки. Но многие команды принимают параметры. Например, в командах для перемещения курсора вы можете набрать цифру перед командой чтобы указать на сколько символов или строк надо переместится. Для начинающих может быть поначалу очень запутанно то, что в командном режиме символы интерпретируются как команды.

Для перемещения курсора используются такие команды:

Можете запустить редактор и поэкспериментировать, чтобы было легче понять как это работает. Начните с h, l, j, k - многие пользователи используют их для перемещения по тексту не только в Vim, потому что это позволяет не открывать руки от клавиатуры. Если перед тем как нажать кнопку буквы нажать цифру, то эта команда будет повторена несколько раз. Например, 3j переведет курсор на три строки вверх.

Очень часто возникает необходимость перейти в начало строки или в её конец. Команды Vim могут с этим помочь. Используйте команду ^ для того чтобы перейти в начало строки или команду $ для перехода в конец строки. Обратите внимание, что для того чтобы набрать эти команды нужно зажать Shift и нажать 4 или 6.

2. Режим вставки

Для переключения в режим вставки используются такие команды:

К этим командам тоже применимы символы повторения. Поэкспериментируйте, можно получить интересный и не совсем ожидаемый результат. Когда закончите редактирование, вы можете переключится обратно в командный режим нажав клавишу Esc.

3. Командная строка Vim

Командная строка Vim запускается в командном режиме нажатием двоеточия - ":". Здесь доступны команды для сохранения изменений, настройки интерфейса, выхода из редактора и взаимодействия с внешней оболочкой. Вот наиболее часто используемые команды редактора vim:

4. Выход из Vim

Таким образом, для того чтобы выйти из Vim нужно перейти в командный режим нажатием Esc, активировать командную строку с помощью двоеточия и выполнить команду :q:

Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

А для того чтобы выйти без сохранения изменений наберите :q! и нажмите Enter. Со основами разобрались, и надеюсь теперь использование vim не будет казаться вам таким сложным. Но это еще далеко не все, этот мощный редактор может еще очень многое. Дальше мы рассмотрим несколько примеров использования vim, чтобы вам было легче справиться с новой программой.

5. Удаление символов и строк

Вы можете править текст не только в обычном режиме, но и в командном с помощью команд. Иногда это даже удобнее чем в режиме редактирования. Например, вы можете удалять символы. Для этого применяются такие команды:

Эти команды редактора vim работают немного по-другому. После нажатия одной из них ничего не произойдет. Мы еще можем задать сколько раз нужно повторить команду, но также нужно указать количество символов, к которым она будет применена и направление, с помощью кнопок перемещения курсора. Это делается после нажатия команды. Например, для того чтобы удалить один символ справа наберите dl. Чтобы удалить три символа справа от курсора нажмите d3l, а чтобы удалить три строки вниз - d3j.

6. Замена символов

В командном режиме вы можете не только удалять символы, но и заменять их на другие. Для этого существуют две команды:

Первая команда позволяет заменить один символ и вернуться в командный режим. Вторая команда будет заменять все символы, пока вы не вернетесь в командный режим нажатием клавиши Esc:

7. Отмена и повтор действий

В обычных текстовых редакторах вы можете использовать Ctrl+Z для отмены последних действий. В редакторе Vim есть собственная история действий. Она доступна в командном режиме. Если вы хотите отменить последнее изменение, просто нажмите u. Обратите внимание, что каждое следующее нажатие этой кнопки будет отменять предыдущее изменение сделанное в командном режиме. Например, если вы удалили один символ командой d, то он будет восстановлен.

Однако, если вы переключитесь в режим вставки и сделаете там много изменений, а потом вернетесь в командный режим, то все эти изменения будут рассматриваться как одно. Если вы случайно отменили что-то важное, то можете повторить действие, нажав Ctrl+r:

Вот некоторые команды для отмены и повтора действий:

8. Переменные в Vim

Хочу более подробно остановиться на переменных. Как было сказано ранее в Vim можно устанавливать значения переменных с помощью команды set и это будет влиять на функционирование редактора. Переменные могут содержать строковое значение или флаг. Например, с помощью следующей команды можно включить отображение номера строки:

:set number

Команда устанавливает значение переменной number в true. Для того чтобы отключить отображение номеров строки надо установить его в false. Для этого можно инвертировать значение флага:

:set number!

Кроме того, вы можете сбросить значение переменной до заводских настроек с помощью &:

set number&

9. Выделение и буфер обмена

Текстовый редактор Vim поддерживает выделение текста без использования мышки. Поэтому вы можете копировать и вставлять текст даже в TTY окружениях, без графического интерфейса. Нажмите v когда вы находитесь в командном режиме для перехода в режим выделения. Затем вы можете использовать кнопки перемещения курсора h, j, k, l для выделения нужных символов или строк:

Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Теперь вы можете выполнять какие-либо действия с выделенным текстом. Например, можно его удалить, нажав кнопку d. Для того чтобы сбросить выделение нажмите кнопку Esc. Это ещё не всё. У Vim есть свой буфер обмена, который можно использовать для копирования и вставки текста. Этот буфер обмена состоит из нескольких регистров. Если не задать иное, то все команды работают с буфером обмена по умолчанию. Вот основные команды для копирования и вставки текста:

Команды для копирования и вырезания работают аналогично командам для удаления текста. Вы можете задать количество символов и направление или же просто выделить текст. Обратите внимание, что у каждого запущенного экземпляра Vim свой отдельный регистр буфера обмена, и он не связан с системным буфером обмена. Поэтому вы не сможете скопировать текст из одной программы в другую без дополнительных действий или настроек.

Если вы хотите скопировать данные в системный буфер обмена, сначала необходимо убедится что Vim, установленный в вашей системе это поддерживает. Для этого выполните команду:

vim --version | grep clip
Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Если эта возможность поддерживается вы увидите +clipboard или +xterm_clipboard. Давайте вернемся к регистрам. В Vim есть несколько регистров буфера обмена и один из них связан с системным буфером обмена. Это регистр "+. Вы можете вывести все регистры и их содержимое с помощью команды:

:reg
Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Регистр с именем "" это тот самый буфер обмена, который используется по умолчанию. Если вы хотите скопировать текст в системный регистр, необходимо набрать имя регистра перед командой копирования. Например, нажмите "+ а затем y. Обратите внимание, что нужно использовать клавишу Shift для получения нужного символа. Надо нажать Shift+' и Shift+=.

Как видите, это довольно сложно, особенно если вы не привыкли использовать эти клавиши. Есть более простой способ. Вы можете скопировать текст в регистр по умолчанию, а затем скопировать его оттуда в системный буфер обмена с помощью командной строки Vim. Для этого скопируйте текст как обычно, а затем используйте такую команду:

:let @+=@"

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

10. Поиск и замена в Vim

Довольно часто нам нужно найти определенную последовательность в тексте. Текстовый редактор Vim умеет это делать. Во-первых, если нужно найти символ в строке, нажмите f и наберите нужный символ, курсор будет перемещен к его позиции.

Для поиска по всему файлу используйте команду /. После нее нужно ввести слово, которое нужно найти. Для поиска следующего вхождения используйте n, для предыдущего - N.

Вот основные команды для поиска:

Для замены будет использоваться немного другая команда:

:%s/string_to_search/string_to_paste/g

Например, давайте заменим все вхождения слова Alice на Robert:

:%s/Alice/Robert/g
Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Двоеточие запускает командную оболочку с командой s для замены. Символ % означает что обрабатывать нужно весь файл, а g значит, что нужно обработать все найденные строки, а не только первую. Чтобы программа спрашивала перед каждой заменой можно добавить в конец строки опцию c.

11. Редактирование нескольких файлов

Чтобы открыть несколько файлов, просто передайте их в параметры при запуске программы:

vim /etc/default/grub /etc/default/cron

Редактор vim linux откроет первый файл, для переключения ко второму используйте команду :n, чтобы вернутся назад :N. С помощью команды :buffers вы можете посмотреть все открытые файлы, а командой :buffer 1 переключится на первый файл.

Vim: Как выжать максимум из легендарного редактора и ускорить работу в разы

Встроенное обучение

Также я бы посоветовал вам пройти курс обучения встроенный в редакторе. Выполнение всех обучающих заданий займет 25-30 минут. Это поможет вам закрепить все знания полученные из этой статьи на практике. Дело в том, что команд и сочетаний клавиш у vim очень много и запомнить их все без практики невозможно. Для запуска обучения выполните следующую команду:

vimtutor

Но делать это сейчас необязательно, в этой статье есть вся необходимая базовая информация и после ее прочтения вы уже сможете уверенно пользоваться vim, а обучение пройти чуть позже.

Выводы

В этой статье мы рассмотрели как пользоваться текстовым редактором vim. Это еще далеко не все его возможности, но теперь вы можете уверенно обращаться с редактором и забыть о nano. Как вы можете видеть редактор содержит очень много функций и запомнить их сразу все может быть тяжело. Но разобравшись с этим раз вы потом захотите включить поддержку сочетаний клавиш Vim и в других программах, потому что это удобно.

12-10-2025, 12:27
Вернуться назад