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

在Vim中,如何将宏应用于一组行?

如何解决《在Vim中,如何将宏应用于一组行?》经验,为你挑选了3个好方法。

我有一堆文件.我记录了一个在一行上执行操作的宏.我想在文件中的所有剩余行上重复该宏.有快速的方法吗?

我尝试了Ctrl + Q,突出显示了一组行,然后按下了@@,但这似乎并没有成功.



1> Judge Maygar..:

在Ex模式下使用普通命令在多行/所有行上执行宏:

执行存储在第5行到第10行的寄存器a中的宏.

:5,10norm! @a

执行存储在第5行到文件末尾的寄存器a中的宏.

:5,$norm! @a

在所有行上执行存储在寄存器a中的宏.

:%norm! @a

在匹配模式的所有行上的寄存器a中执行宏存储.

:g/pattern/norm! @a

要在可视选择的行上执行宏,请按Vjk,直到选择所需的区域.然后键入:norm! @a并观察后面的输入行.

:'<,'>norm! @a

在vim中输入:help normal以阅读更多内容.


尼斯!初学者提示:使用V然后j/k突出显示所需的行,然后键入`:norm!@了`
要从@KevinBourrillion添加非常有用的提示,在突出显示行后按`:`时,Ex输入行将改为读取`:'<,'>`,然后您将添加Kevin建议的其余部分.这将使最终命令成为:`:'<,'> norm!@了`.
`:克/模式/常态!@了`
@GabeMoothart`!`避免用户重新映射密钥.您可能不需要它,但是适合每个人的答案都需要它.

2> SergioAraujo..:
:g/pattern/normal! @a

:help global


仅供将来用户澄清:这是一个全局Ex命令.

3> Max Heiber..:

你也可以这样做:

在正常模式下:

[number of times to apply the macro] @ [register]

例如:

1000@q

将寄存器q中的宏应用于下一行1000行.


这停在最后一行,并且不会在最后一行执行多次,这是我害怕的.
由于某种原因,这非常有效,并且接受的答案没有.我的宏涉及插入一个新行,做东西,然后移动到下一行.
我认为应该指出,您的宏必须以“ j”命令结尾才能下一行,否则它将尝试将其应用于同一行。
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有