如何在命令行中执行vim宏字符串?

时间:2015-08-08 17:09:23

标签: vim macros command-line-interface

Vim中的宏对于执行在普通命令行工具(sedawkperl等)中难以完成的任务非常有用,有没有办法在命令行中执行那种宏字符串?

如下所示:

// execute macro stored in register a 100 times for filenames
vim execute -s "100@a" filenames [filenames2, filenames3, ...]

2 个答案:

答案 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,将写入文件并再次关闭。命令可以用|符号连接。