Vim: необходимый минимум знаний

Когда речь заходит о системном администрировании, все дороги ведут к Vim! Это далеко не архаичный инструмент, а универсальный, который используют системные администраторы и DevOps-инженеры во всех крупных компаниях.

вот так выглядит Vim сразу после запуска

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

Vim — это консольный редактор, но у него есть и десктопные потомки, вроде gVim (пакет vim-gtk3) и даже gVim для Windows.

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

Перейдем к делу!

Базовые режимы работы Vim

Первая вещь, на которую вы должны обратить внимание — Vim работает в различных режимах. Вот основные из них: командный режим, режим вставки, режиме командной строки (известном еще как режим последней строки). Непосредственно после запуска Vim находится в командном режиме. В этом режиме весь ввод с клавиатуры будет воспринят как команды редактору, а не редактирование текста. Чтобы переключиться в режим вставки, нажмите клавишу «i», после чего вы получите возможность редактировать текст, а при нажатии на «Esc» вы сможете вернуться в командный режим. Введя «:» в командном режиме, вы попадаете в режим командной строки. Это ключевая особенность данного редактора.

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

Я начну именно с него, потому что это самый очевидный режим.

режим вставки в Vim

Режим вставки (— INSERT —) не требует особого изучения, этот режим превращает Vim в самый банальный текстовый редактор, но без привычных клавиатурных комбинаций копировать/вставить, которые по логике создателей относятся уже к командному режиму.

Командный режим

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

  • «h» — перемещение на один символ влево;
  • «l» — перемещение на один символ вправо;
  • «j» — перемещение на одну строку вниз;
  • «k» — перемещение на одну строку вверх.

Перемещаться по тексту также можно и стандартными клавишами управления курсором (стрелками) во все стороны — как в командном режиме, так и в режиме вставки.

Можно смещать курсор не на один символ, а на слово целиком: «w» — перемещает на слово вперед, а «b» — на слово назад. Словом в Vim считается непрерывная последовательность букв и цифр. Любые знаки препинания или спецсимволы (например, дефис или точка) Vim считает отдельными словами. Так, выражение «one-year» редактор воспримет как три слова: «one», дефис и «year». Чтобы прыгать сразу через спецсимволы до следующего пробела, используйте заглавную клавишу «W».

Удаление символов и целых строк можно выполнить при помощи клавиши «d» совместно с клавишами навигации (стрелками). Зажать «d» не получится, необходимо каждый раз нажимать комбинацию заново. Стрелка влево или вправо удаляет один символ в соответствующем направлении от курсора. Стрелка вверх или вниз удаляет сразу две строки: текущую и соседнюю (выше или ниже). Для удаления слова вперед от курсора используйте «d + w», а для удаления слова назад — «d + b».

Есть и другие способы удалить один символ. Поставьте курсор над этим символом и нажмите «x» — эта клавиша работает как привычная клавиша «Del», которая тоже активна в командном режиме Vim. Что касается клавиш «Space», «Backspace» и «Enter», то в командном режиме они отвечают за навигацию, а свои привычные функции редактирования выполняют только в режиме вставки.

Если требуется удалить целую строку, используйте команду «dd» — она вырежет строку во внутренний буфер Vim. При помощи команды «d0» можно удалить часть строки от позиции курсора до самого начала строки (включая отступы).

Для быстрой вставки текста используйте команды «p» или «P». Команда «p» вставит вырезанную или скопированную строку ниже текущей (либо текст после курсора), а «P» — строкой выше (либо перед курсором). Это работает в том числе и для строк, которые вы удалили с помощью команды «dd».

Постройте вот такой список в режиме вставки (нажмите на «i»), а потом поупражняйтесь с удалением символов и строк в командном режиме (нажмите «Esc»).

работа со строками и символами в Vim

Копирование текста в визуальном режиме

Для переключения в него из командного режима используются клавиши «v», «V» или «Ctrl+v». После этого вы можете выделять текст, перемещая курсор клавишами «h», «l», «j», «k» или же клавишами со стрелками.

  • «v» + стрелки — будет происходить обычное посимвольное выделение,
  • «V» + стрелки — выделение целых строк,
  • «Ctrl+v» — блочное выделение, с его помощью можно выделять вертикальные прямоугольные блоки.

После того, как вы выделите нужный текст, используйте команду «y» для того, чтобы скопировать выделенный фрагмент во внутренний буфер редактора. После нажатия «y» Vim автоматически вернет вас в командный режим, где вы сможете вставить текст ранее изученными командами «p» или «P».

Поиск и замена в режиме командной строки

Чтобы выполнить поиск, перейдите в режим командной строки с помощью клавиши «/» (для поиска вперед) или клавиши «?» (для поиска назад), а затем введите искомый текст.

Поиск и замена в тексте выполняется при помощи команды «:s» с заданной областью поиска и замены. Например, чтобы найти фразу «old» и заменить на «new», используйте следующую команду:

:%s/old/new/

Символ процента перед «s» означает глобальную область поиска.

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

:1,15s/old/new/

Имейте в виду, что указанные выше команды заменяют только первое найденное вхождение. Часто бывает нужно найти и заменить все найденные вхождения в тексте. Для этого можно воспользоваться глобальной заменой, добавив к команде букву «g»:

:%s/old/new/g

Приведенная выше команда заменит все найденные «old» на «new».

Дополнительно вы можете заставить Vim запрашивать у вас подтверждение перед выполнением замены:

:%s/old/new/gc

Откат действий

Что делать, если вы внесли изменения, которые не нужно было вносить? Воспользуйтесь командой «u», которая отменит последнее изменение, сделанное вами. Если же после отката на действие назад вы снова передумали и решили отменить отмену, вам поможет команда «Ctrl+r», которая делает откат в обратную сторону.

В отличие от старого редактора Vi, который позволял отменить только одно последнее действие, Vim хранит всю историю изменений в рамках текущей сессии и позволяет откатываться назад на большое количество шагов.

Сохранение и выход

Как выйти из Vim? У любого, кто столкнется с редактором впервые, этот вопрос будет самым главным. Действительно, глядя на экран с редактором, догадаться, как именно это делается, — невозможно. Это нужно просто знать!

Если вы хотите сохранить внесенные в файл изменения, используйте команду «:w», а чтобы сохранить изменения и покинуть редактор, — команду «:wq». Не хотите сохранять внесенные исправления? Бывает и такое. При помощи команды «:q!» можно выйти из Vim, не сохраняя при этом текущий файл.

Также при необходимости вы можете сохранить редактируемый текст в другой файл при помощи команды «:w <имя_файла>».

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


" Просто сохранить изменения
:w

" Сохранить изменения и выйти
:wq

" Выйти без сохранения изменений
:q!

" Сохранить под другим именем
:w <имя_файла>

Автор: Kupereal

Занимаюсь разработкой и продвижением веб-сайтов. Развиваю каналы в мессенджерах. Настраиваю рабочее окружение (Win/Lin/Mac) и весь серверный стек для проектов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *