在vim中的所有缓冲区中运行宏

Cal*_*itt 32 vim macros

我知道这个:bufdo命令,并试图将它与我记录的宏(@a)相结合,在我加载的每个头文件的正确位置添加一个#include.但是,我找不到在每个缓冲区上运行宏的简单方法.有没有办法通过ex模式执行宏,这是什么:bufdo要求?还是有另外一个我失踪的命令?

Dav*_*rby 37

你可以这样做:

:bufdo execute "normal @a" | write
Run Code Online (Sandbox Code Playgroud)

普通命令将运行宏,但必须使用:execute运行,否则管道符将被解释为正常模式字符.


CMS*_*CMS 12

您必须使用normal执行正常模式命令,例如@a命令模式下执行宏执行():

:bufdo normal @a
Run Code Online (Sandbox Code Playgroud)

  • @MeanEYE:是的,如果你用`:w`结束你的宏,这是有效的. (3认同)
  • 我会在运行之前执行 `:se hide` ,以便我可以更改为另一个缓冲区而不保存;然后将所有缓冲区与`:wa`一起保存 (3认同)