Макросы в NeoVim

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

Из документации рекомендую :help complex-repeat. Приведу простой пример как пользоваться макросами. Представим, что есть список из элементов, которым нужно добавить - [ ] в начале строки. Может, я хочу сделать чек-лист для покупок.

ананас
апельсин
вишня
лимон
слива

Чтобы записать нужный макрос, перехожу на первую изменяемую строку и нажимаю qq в NORMAL режиме. Первая q означает начало записи макроса. Вторая – имя регистра, в который макрос будет помещён.

Теперь в командной строке Vim будет написано recording q.

Нажимаю 0 чтобы перейти на начало строки. Вхожу в режим INSERT с помощью i. Добавляю новый префикс - [ ]. Выхожу в NORMAL режим с помощью CTRL + [. Перехожу на следующую строку нажатием j.

Особо отмечу переход на начало строки. Это якорь, который позволит выполнение макроса на любой строке вне зависимости от стартовой позиции курсора.

Ту же роль имеет и переход на следующую строку, без него нельзя будет сочетать несколько макросов подряд. Они будут модифицировать одну и ту же строку.

Заканчиваю запись макроса нажатием q. Надпись recording q должна пропасть из командной строки. Файл теперь должен выглядеть так.

- [ ] ананас
апельсин
вишня
лимон
слива

Чтобы использовать записанный макрос на оставшихся строках, ввожу 4@q. Это значит 4 раза применить макрос из регистра q. Альтернативным способом будет выделение всех нужных строк в режиме VISUAL LINE и выполнение @q.

- [ ] ананас
- [ ] апельсин
- [ ] вишня
- [ ] лимон
- [ ] слива

И да, я знаю, что можно просто воспользоваться :%s/^/- [ ] /.

Если Вы хотите обсудить содержание заметки, задать вопросы или предложить изменения, то со мной можно связаться в Telegram