为什么宏中的换行图在Vim中被解释为`j`?

时间:2017-06-27 22:51:30

标签: vim digraphs

让我们说我创建一个下降一行的宏。

qajq

注册a完全包含qajq,因此@a将我向下移动一行。

现在让我说我在我的缓冲区中输入j并使用a将其拖入注册"ayy。现在,注册a看起来像j^J(注意终端换行图)。现在,当我执行宏a时,它会向下跳两行。

这到底发生了什么? Vim是否看到了^J有向图,并认为我想要追加一条线,还是更微妙的东西?

我想这是答案之一的问题之一,因为它是如何设计的。" :P

2 个答案:

答案 0 :(得分:1)

键入qajq后,a注册表内容为字符串jqa开始将宏录制到注册表a中,然后键入j,它就是第一个字符记录器,现在您键入q并且vim停止录制。因此,您最终只能在j注册中使用a

命令yy按行工作,因此换行符也会插入寄存器中。当您输入"ayy时,j^J注册表中会显示a,因为^JCtrl-J(换行符)是vim用于表示换行符的内容,它还将光标向下移动一行,如:help Ctrl-J

中所述

为了在没有换行的情况下拉线,您可以输入0"ay$。这与键入qajq

相同

答案 1 :(得分:0)

我不确定你的vim会发生什么。但我要说的是vim应该作为正确的行为。

您输入qajq。因此,动作j已注册到注册a中。您似乎键入yy以将某些内容注册到注册表a中。但据我所知,它注册到注册"而非注册a。要将某些内容放入注册a,您应该输入"ayy。可以使用:register命令进行确认。打字可能有些不对劲?