Vim中的宏对于执行在普通命令行工具(sed
,awk
,perl
等)中难以完成的任务非常有用,有没有办法在命令行中执行那种宏字符串?
如下所示:
// execute macro stored in register a 100 times for filenames
vim execute -s "100@a" filenames [filenames2, filenames3, ...]
答案 0 :(得分:1)
你快到了:
$ vim file* -c "argdo norm 100@a"
答案 1 :(得分:1)
对于那些难以执行许多常规命令(例如宏)并再次退出的用户,可以先定义宏。
vim files* -c "let @l=\"ggOStart\<Esc>GoEnd\<Esc>\" | argdo normal @l | ZZ"
该命令将在每个文件的开头插入“开始”,以files*
开头,并在结尾处插入“结束”,但是可以应用任意宏。
这样,就可以定义和执行一个不存在的宏。如果要使用诸如here所述的\"
之类的任何键符号,则必须使用和转义双引号\<Esc>
。
通过在末尾添加ZZ
,将写入文件并再次关闭。命令可以用|
符号连接。