我想在一个打开的缓冲区的每一行,从我的光标到缓冲区结尾,在vim中运行一个我刚刚记录在寄存器“x
”中的宏。我怎么做?重播一个vim宏,直到缓冲区结束
我知道我可以重播宏n次:
[email protected]
...或只需按住@
,直到我到达的最后一行,但我想刚打了几个按键,并完成它。
在此先感谢。
我想在一个打开的缓冲区的每一行,从我的光标到缓冲区结尾,在vim中运行一个我刚刚记录在寄存器“x
”中的宏。我怎么做?重播一个vim宏,直到缓冲区结束
我知道我可以重播宏n次:
[email protected]
...或只需按住@
,直到我到达的最后一行,但我想刚打了几个按键,并完成它。
在此先感谢。
[email protected]
,除非你有一个非常大的缓冲...
为什么不'%:正常@ x'或'1,$:normal @ x'? – 2010-01-04 13:11:12
这绝对是更优雅的解决方案 - 我猜'99999 @ x'只是当你匆忙时想出的东西:) – Peter 2010-01-04 20:44:32
9999999 @ x不会在最后一行运行很多次,除非你有999999行吗? – 2010-10-29 15:14:33
优秀。这种方法比'%:normal'方法更有用,因为它支持宏内的任何行移动,所以在行的形式不同时非常有用。我发现创建宏'a'来定义动作更容易,然后让宏'b'做递归位,即qb @ a @ bq。 – 2014-09-24 09:46:13
如果您的宏涉及搜索,请避免此操作,因为它将从顶部继续。 'ctrl-c'停止,如果发生的话! – 2014-11-20 15:55:30
@IainBallard,':set nowrapscan'使它失败并在到达文件末尾时停止。 – ericbn 2016-08-18 21:51:07
你可以这样做(在命令模式)
:%normal @x
15 @ X在Windows GVIM不工作 – 2013-04-28 04:55:47