让我们说我创建一个下降一行的宏。
qajq
注册a
完全包含qajq
,因此@a
将我向下移动一行。
现在让我说我在我的缓冲区中输入j
并使用a
将其拖入注册"ayy
。现在,注册a
看起来像j^J
(注意终端换行图)。现在,当我执行宏a
时,它会向下跳两行。
这到底发生了什么? Vim是否看到了^J
有向图,并认为我想要追加一条线,还是更微妙的东西?
我想这是答案之一的问题之一,因为它是如何设计的。" :P
答案 0 :(得分:1)
键入qajq
后,a
注册表内容为字符串j
。 qa
开始将宏录制到注册表a
中,然后键入j
,它就是第一个字符记录器,现在您键入q
并且vim停止录制。因此,您最终只能在j
注册中使用a
。
命令yy
按行工作,因此换行符也会插入寄存器中。当您输入"ayy
时,j^J
注册表中会显示a
,因为^J
或Ctrl-J
(换行符)是vim用于表示换行符的内容,它还将光标向下移动一行,如:help Ctrl-J
为了在没有换行的情况下拉线,您可以输入0"ay$
。这与键入qajq
。
答案 1 :(得分:0)
我不确定你的vim会发生什么。但我要说的是vim应该作为正确的行为。
您输入qajq
。因此,动作j
已注册到注册a
中。您似乎键入yy
以将某些内容注册到注册表a
中。但据我所知,它注册到注册"
而非注册a
。要将某些内容放入注册a
,您应该输入"ayy
。可以使用:register
命令进行确认。打字可能有些不对劲?