在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,请按V和j或k,直到选中所需的区域。 然后键入: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