在VIM中,如何将macros应用于一组行?

我有一堆线的文件。 我已经logging了一个单行执行操作的macros。 我想在文件中的所有其余行上重复该macros。 有一个快速的方法来做到这一点?

我尝试了Ctrl + Q,突出显示了一系列行,并按了@@,但是这似乎没有办法。

在Ex模式下使用普通命令可以在多行/所有行上执行macros:

执行存储在第5行到第10行的寄存器a中的macros。

:5,10norm! @a 

通过文件的结尾执行第5行中寄存器a中存储的macros。

 :5,$norm! @a 

在所有行上执行存储在寄存器a中的macros。

 :%norm! @a 

在匹配模式的所有行上执行寄存器a中的macros存储。

 :g/pattern/norm! @a 

要在视觉上select的行上执行macros,请按Vjk,直到选中所需的区域。 然后键入:norm! @a :norm! @a并观察下面的input行显示。

 :'<,'>norm! @a 

input:帮助正常在VIM阅读更多。

 This will run the macro 'a' on all lines that contain 'pattern' 

:g/pattern/normal! @a

你也可以这样做:

在正常模式下:

 [number of times to apply the macro] @ [register] 

例如:

 1000@q 

将寄存器q中的macros应用于接下来的1000行。

还有一个名为RangeMacro的插件,正是你想要的! 对于不能用名字猜测的每个人,它做了什么:无论是通过视觉select还是通过:40,50 /:+10,它重复给定范围内每行的loggingmacros

http://www.vim.org/scripts/script.php?script_id=3271