如何在IdeaVim中像普通Vim一样重放宏?多次执行宏仅生效一次求助
如何让Vim宏重复执行多次?
首先先确认下原生Vim里的标准操作流程是没问题的:你用qa开始录制宏到寄存器a,执行完操作后按q结束,然后输入5@a确实应该重复执行5次宏。但你提到在JetBrains的Vim插件里遇到了这个问题,而且已经提交了Bug报告,那给你几个实用的替代方案:
用
:normal命令强制触发多次执行
试试输入:5normal @a,这个命令会明确告诉编辑器重复执行寄存器a中的宏5次。很多时候在IDE集成的Vim插件环境下,这个命令比直接用5@a的兼容性更好。直接复用宏的命令序列
先输入:reg a查看寄存器a里记录的宏内容,比如如果宏是ddj(删除当前行然后下移一行),那你可以直接输入5ddj来重复5次相同操作;如果命令比较复杂,也可以用:execute来拼接重复,比如:execute 'normal! ' . repeat('你的宏命令', 5)。检查宏是否包含不可重复的动作
有时候看起来宏只执行了一次,其实是后续执行没有产生可见效果。比如宏里用了n跳转到下一个搜索结果,但第一次执行后已经没有匹配项了,那后面的执行就不会有变化。这时候要把宏里的动作改成可循环的,比如用相对行号移动(+/-)代替依赖搜索的移动。
在JetBrains的这个Bug修复之前,上面的方法应该能帮你实现宏的多次执行需求。
内容的提问来源于stack exchange,提问作者red888
相关产品推荐
相关产品推荐

