当前位置:  开发笔记 > 开发工具 > 正文

重放vim宏直到缓冲区结束

如何解决《重放vim宏直到缓冲区结束》经验,为你挑选了4个好方法。

我想在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`只是你匆忙时想出来的自然事物:)
刚试了一下.挂起会话.可能会继续运行它一百万次而不会停在线路末端.
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有