我有一堆行文件。我记录了一个在一行上执行操作的宏。我想在文件中的所有剩余行上重复该宏。有快速的方法吗?
我尝试了Ctrl + Q,突出显示了一组行,然后按了@@,但这似乎没有做到这一点。
答案 0 :(得分:304)
在Ex模式下使用normal命令在多行/所有行上执行宏:
执行存储在第5到第10行的 a 寄存器中的宏。
:5,10norm! @a
执行存储在第5行到文件末尾的寄存器 a 中的宏。
:5,$norm! @a
执行存储在所有行的 a 寄存器中的宏。
:%norm! @a
在匹配 pattern 的所有行上执行注册 a 中的宏存储。
:g/pattern/norm! @a
要在视觉选择的线条上执行宏,请按 V 和 j 或 k ,直到选中所需的区域。然后键入:norm! @a
并观察显示的后续输入行。
:'<,'>norm! @a
在vim中输入:help normal 以阅读更多内容。
答案 1 :(得分:58)
答案 2 :(得分:33)
你也可以这样做:
在正常模式下:
[number of times to apply the macro] @ [register]
例如:
1000@q
将寄存器q中的宏应用于下一行1000行。
答案 3 :(得分:2)
还有一个名为RangeMacro的插件,完全符合您的要求!对于每个无法通过名称猜测的人,它的作用是:它为给定范围内的每一行重复录制的宏,无论是通过视觉选择还是通过:40,50 /:+10