Как выполнить строку макроса 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до конца файл записывается и снова закрывается. Команды могут быть объединены| символ.

Вы почти там:

$ vim file* -c "argdo norm 100@a"
Другие вопросы по тегам