作者:mobiledu2402851173 | 2023-08-21 09:22
我想在x
一个打开的缓冲区的每一行上运行一个我刚刚记录在寄存器中的宏,从我的光标到缓冲区的末尾,在vim中.我怎么做?
我知道我可以重播宏n次:
15@x
...或者只是按住@
直到我到达最后一行,但我想点击几下击键并完成它.
提前致谢.
1> Randy Morris..:
就我个人而言
VG:normal @x
编辑:将寄存器更改为您指定的寄存器.
2> ryan_s..:
你可以做(在命令模式下)
:%normal @x
3> Maxim Kim..:
制作递归宏:
qa@aq
例如:
qa0gUwj@aq
它将使用单个@a UPCASE从当前行到文件末尾的第一个单词.但请确保"寄存器为空:
let @a=""
优秀.这种方法比`%:normal`方法更有用,因为它遵循宏中的任何线条移动,因此在线条形状不相同的情况下非常有用.我发现创建宏'a'以定义动作更容易,然后让宏'b'执行递归位,即qb @ a @ bq.
如果您的宏涉及搜索,请避免这种情况,因为它将从顶部继续.如果发生这种情况,请停止`ctrl-c`!
@IainBallard,`:set nowrapscan`使其失败并在到达文件末尾时停止.
4> Peter..:
999999@x
,除非你有一个非常大的缓冲区......
为什么不只是`%:normal @ x`或`1,$:normal @ x`?
这绝对是更优雅的解决方案 - 我猜`99999 @ x`只是你匆忙时想出来的自然事物:)
刚试了一下.挂起会话.可能会继续运行它一百万次而不会停在线路末端.