line1
line2
line3
line4
现在,如果我转到
line1
并执行yy
,该行将复制该行,然后转到line3
的开头并粘贴使用'p',我会得到...
line3
line1
line4
....
为什么在新行中在
line1
之后粘贴line3
?我最初的名字是因为换行符$附加到第3行,当我按
p
时,vim认为line3$
是一个单词,因此它粘贴在line3$
之后。但是,似乎我的理解是错误的。因为如果我这样做line3 $
,然后在行的开头做p
,我会得到相同的结果。 为什么
p
创建新行并在line3
之后粘贴新行?#1 楼
当使用dd
删除行时,执行了逐行删除。p
命令粘贴在光标位置之后。由于默认寄存器是按行内容填充的,这意味着它将在光标所在的行之后粘贴。如果相反,则以字符方式删除行的内容(例如
0D
) ,则该寄存器将按字符进行设置,因此将其粘贴到光标所在的字符之后。通常,该行为应遵循删除/拖动和粘贴所期望的行为。但是,可以使用getreg()/ setreg()修改寄存器的
-wise
值。但是要小心。在您的第一个示例中,仅将寄存器更改为字符式操作并不会删除作为删除一部分的换行符。它只是改变粘贴的方式。
有关删除整行但按字符粘贴的特定方案的建议,请参阅此文章。