如何取消在 Vim 中录制宏?

如何取消在 Vim 中录制宏?

假设我已录制了一个宏,然后我偶尔开始将宏录制到同一个寄存器中。我可以中断录制,以便将原始宏保留在寄存器中吗?

我知道我可以将:let @b=@a宏从寄存器 a 复制到寄存器 b 从而保存它,但也许有更直接的方法?

答案1

录制宏时,寄存器首先被清空,然后才被填充,因此,当您正在录制另一个宏时,不太可能存在内置方法来保存上一个宏。q也就是说,这种方法不需要编写包装器。

我和许多人都使用临时寄存器(@q例如)来记录我们所有的一次性录音。也许你也应该这样做。

答案2

正如 @Trendfischer 在其评论中所指出的,vim 的当前行为不再是第一次按下时清空寄存器q

现在,如果您选择了错误的寄存器,您可以执行以下操作:

  • 暂时不要退出录音模式,
  • 创建一个空行,
  • 粘贴要覆盖的寄存器(如果在寄存器中记录q,则为"qp),
  • 现在退出录音模式(q
  • 选择上面粘贴的行(没有行尾标记:0v$h;不要使用V
  • 将其拉到您已覆盖的寄存器中("qy如果您正在使用该q寄存器;再次强调:不要使用逐行复制Y)。
  • 现在,您已将旧的宏放回寄存器中,并且您可以在正确的寄存器中重新开始录制新的宏。

当然,只需稍加努力,您就可以挽救旧的和新的宏(但您必须在第二次按下之前启动该过程)q:只需粘贴您已录制的内容并将其拉入“新的”/“正确的”寄存器中。

相关内容