为什么p将复制的行粘贴在当前行之后而不是在当前单词之后?


12

假设我有以下四行:

line1
line2
line3
line4

现在,如果我去line1执行yy复制行的a,然后去开始line3并使用'p'粘贴,我会得到

...
line3
line1
line4
....

为什么粘贴line1line3在新行?

我最初的想法是因为换行符$附加在第3行上,并且当我按pvim 时line3$,它被视为一个单词,因此粘贴到了它之后line3$。但是,似乎我的理解是错误的。因为如果执行此操作line3 $,然后p在行的开头执行a ,则会得到相同的结果。

为什么要p创建新行并在其后粘贴新行line3

Answers:


21

当您使用删除线dd,你执行一个面向行删除。

p命令将粘贴在光标位置之后。由于默认寄存器是按行填充的,因此这意味着它将粘贴在光标所在的行之后。

如果您改为以字符方式(例如0D)删除该行的内容,则该寄存器将以字符方式删除,因此将其粘贴到光标所在的字符之后。

通常,行为应遵循删除/拖动和粘贴的预期行为。但是,可以-wise使用getreg() / setreg()修改寄存器的性质

不过要小心。在您的第一个示例中,仅将寄存器更改为字符式操作并不会删除作为删除一部分的换行符。它只是改变粘贴的方式。


有关删除整条生产线,但其粘贴面向字符的具体方案建议,请参阅这篇文章

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.