在 Vim 中,如何将宏应用于一组行?
我有一个包含一堆行的文件。 我录制了一个在单行上执行操作的宏。 我想在文件中的所有剩余行上重复该宏。 有没有快速的方法来做到这一点?
我尝试了 Ctrl+Q,突出显示一组行,然后按 @@,但这似乎没有成功。
I have a file with a bunch of lines. I have recorded a macro that performs an operation on a single line. I want to repeat that macro on all of the remaining lines in the file. Is there a quick way to do this?
I tried Ctrl+Q, highlighted a set of lines, and pressed @@, but that didn't seem to do the trick.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 Ex 模式下使用 normal 命令在多行/所有行上执行宏:
执行第5行至第10行寄存器a中存储的宏。
执行第5行至文件末尾的寄存器a中存储的宏。
在所有行上执行寄存器a中存储的宏。
在匹配模式的所有行上执行寄存器a中的宏存储。
要在可视选择的行上执行宏,请按 V 和 j 或 k 直至选择所需区域。 然后输入
:norm! @a
并观察显示的以下输入行。在 vim 中输入 :help normal 来阅读更多内容。
Use the normal command in Ex mode to execute the macro on multiple/all lines:
Execute the macro stored in register a on lines 5 through 10.
Execute the macro stored in register a on lines 5 through the end of the file.
Execute the macro stored in register a on all lines.
Execute the macro store in register a on all lines matching pattern.
To execute the macro on visually selected lines, press V and the j or k until the desired region is selected. Then type
:norm! @a
and observe the that following input line is shown.Enter :help normal in vim to read more.
使用 global 在包含 'pattern' 的所有行上运行宏 'a'
如需帮助,请检查:
:全局帮助
。Use global to run the macro 'a' on all lines that contain 'pattern'
For help, check:
:help global
.您还可以这样做:
在正常模式下:
例如:
将寄存器 q 中的宏应用到接下来的 1000 行。
You can also do this:
In normal mode:
For example:
Apply the macro in register q to the next 1000 lines.
还有一个名为 RangeMacro 的插件,完全可以满足您的需求! 对于每个无法通过名称猜出的人来说,它的作用是:它为给定范围内的每一行重复录制的宏,无论是通过视觉选择还是通过 :40,50 / :+10
请参阅 http://www.vim.org/scripts/script.php?script_id=3271
There's also a plugin called RangeMacro, does exactly what you want! For everyone that can't guess by the name, what it does: it repeats a recorded macro for each line in a given range, no matter if by visual selection or by a :40,50 / :+10
See http://www.vim.org/scripts/script.php?script_id=3271