Как выполнить строку макроса vim в командной строке?
Макрос в Vim чрезвычайно полезен для выполнения задач, которые трудно завершить в обычном инструменте командной строки (sed
, awk
, perl
и т. д.), есть ли способ выполнить такую строку макросов в командной строке?
Что-то вроде следующего:
// execute macro stored in register a 100 times for filenames
vim execute -s "100@a" filenames [filenames2, filenames3, ...]
1 ответ
Для тех, у кого возникают проблемы с выполнением ряда обычных команд (например, макросом) и повторным выходом, можно сначала определить макрос.
vim files* -c "let @l=\"ggOStart\<Esc>GoEnd\<Esc>\" | argdo normal @l | ZZ"
Команда вставит "Старт" в начало каждого файла, начиная с files*
и "End" до конца, но может применяться произвольный макрос.
Таким образом можно определить и выполнить макрос, даже если он еще не присутствует. Вам нужно будет использовать и избегать двойных кавычек\"
если вы хотите использовать любую ключевую нотацию, например \<Esc>
упоминается здесь.
Добавляя ZZ
до конца файл записывается и снова закрывается. Команды могут быть объединены|
символ.