VIM-粘贴后的光标位置因计数前缀而异

时间:2019-02-09 15:12:27

标签: vim

如果重复执行p或使用count,光标位置会发生变化。

考虑以下文字:

hello
~
~

将光标放在单词上,我执行Y,然后手动执行p 4次,光标位于最后一行

hello
hello
hello
hello
hello <- cursor is here

但是,如果在第一行执行Y4p,则光标在第二行

hello
hello <- cursor is here
hello
hello
hello 

这是设计使然吗?功能不应该与手动执行和使用count完全相同吗?顺便说一句,它可以像P一样正常工作。

1 个答案:

答案 0 :(得分:1)

pP粘贴整行时的行为是将光标置于刚粘贴的内容的开头。在每种情况下,这都是发生的情况:当您击中p 4次时,您每次都将光标移动到新粘贴的行的开头;当您按下4p时,光标位于粘贴的块的开头。

我同意,如果您要以脚本方式使用这些命令,可能不是最好的做法,但这不是错误。

如果粘贴部分行,则会发现相反的行为:pP将光标留在新粘贴的文本的末尾,这意味着4x {p4p的行为相同,但是4x {P4P的行为却不一样! (它们甚至不会产生相同的结果,更不用说将光标放在同一位置了...)

无论如何,所有这些都是在粘贴操作之后合理选择您通常希望的位置的结果。