Изучите полезные советы и приемы Vi/Vim для начинающих – Часть 1

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

В то время как nano возможно более подходит для новых пользователей, vim или emacs являются инструментом выбора для более опытных пользователей из-за своих продвинутых возможностей.

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

Между этой статьей и следующей в этой серии из 2 статей мы рассмотрим 15 советов и хитростей для улучшения ваших навыков vim. Предполагается, что вы уже знакомы с этим текстовым редактором.

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

1. Доступ к онлайн-справке в Vim

После запуска vim нажмите F1 или используйте :h в режиме ex, чтобы войти в онлайн-справку. Вы можете перейти к определенному разделу или теме, установив курсор на него и затем нажав Ctrl+] (Ctrl, затем закрывающаяся квадратная скобка).

По завершении нажмите Ctrl+t, чтобы вернуться на предыдущий экран. Кроме того, вы можете найти конкретную тему или команду с помощью :h <тема или команда>.

Например,

:h x 

отобразит справку для команды x (удалить):

Vi Editor Online Help

и

:h substitute

вызовет справку о команде substitute (наш последний совет в этой статье).

2. Добавление закладок в редакторе Vim

Если вы редактируете файл, размер которого больше одного экрана, вы оцените функционал, предоставляемый закладками. Можно рассматривать метку в vim как закладку – как только вы поместите ее куда-то, вы сможете быстро и легко вернуться к ней.

Предположим, вы редактируете 300-словный конфигурационный файл и по какой-то причине вам нужно повторно переключаться между строками 30 и 150, например.

Первым делом перейдите на строку #30, введя :30 в режиме ex, затем вернитесь в режим команд и нажмите ma (m, затем a), чтобы создать метку с именем “a” на строке 30.

Затем перейдите на строку 250 (с помощью :250 в режиме ex) и нажмите `a (обратная кавычка, затем a), чтобы вернуться к метке a на строке 30.

Вы можете использовать строчные и прописные буквы для идентификации меток в vim (теперь повторите процесс, чтобы создать метку с именем A на строке #250).

Вы можете просмотреть свои метки с помощью

:marks aA
Marks Usage in Vim Editor

Как видите, каждая метка ссылается на конкретную позицию строки/столбца в файле, а не просто на строку.

3. Беспроблемная очистка кода в Vim

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

Сначала выберите визуальный блок, поставив курсор в начало блока, затем нажмите Ctrl+v (Ctrl, затем v).

  • Чтобы сдвинуть влево: нажмите <j
  • Чтобы сдвинуть вправо: нажмите <j

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

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

Чтобы продолжить удаление следующих слов, просто нажмите . (это короче и проще, чем повторять dw несколько раз).

4. Вставка символов Unicode в Vim

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

Для этого нажмите Ctrl+v в режиме вставки, за которым последует буква u и шестнадцатеричный числовой код символа, который вы хотите вставить.

Вы можете проверить таблицы Unicode для списка специальных символов и их соответствующих числовых кодов.

Например,

Ctrl+v followed by returns
u0040 @
u00B5 μ
u20AC

5. Включение вывода внешней команды в Vim

Бывают времена, когда вам потребуется вставить вывод внешних команд прямо в редактируемый файл с помощью vim.

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

Для этого используется:

:r! pwd 

в режиме ex. Таким образом, вставляется текущий рабочий каталог.

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

:!r ip route show | grep default | cut -f 3 -d " "

6. Добавление содержимого внешнего файла в Vim

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

Например, чтобы скопировать содержимое /etc/passwd:

:r /etc/passwd

Этот совет может пригодиться, когда вам нужно изменить файлы конфигурации, но вы хотите сохранить оригинальные, чтобы вернуться к “заводским настройкам”, так сказать.

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

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

Для тех, кто знаком с sed, это звучит знакомо – в режиме ex введите:

:%s/old/new/g

где old – это шаблон для поиска, а new – это строка, которая его заменит.

В описанном случае я использовал:

:%s/Globe/Earth/g

чтобы выполнить задачу.

Что, если вы хотите, чтобы вас спрашивали перед заменой? Просто добавьте c в конце вышеуказанной команды, как показано ниже:

:%s/old/new/gc

Вхождения шаблона будут выделены, и вас спросят, хотите ли вы заменить его на новую строку:

:%s/gacanepa/me/gc
Search and Replace String in Vim

где

  • y: yes
  • n: no
  • a: substitute all
  • q: quit
  • l: substitute this occurrence and quit
  • ^E (Ctrl+E): Прокрутить вверх на один экран
  • ^Y (Ctrl+Y): Прокрутить вниз на один экран
Сводка

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

Source:
https://www.tecmint.com/learn-vi-and-vim-editor-tips-and-tricks-in-linux/