VIM - 如何用复制的内容替换一行?

20

通常情况下,我通过连续按两次“y”键复制一行文本,然后按下“p”或“P”键将其粘贴到当前行的后面或前面。但有时候,我需要用复制的内容替换当前行。应该如何操作呢?


我个人会选择直接使用pkdd - Pointy
4个回答

38

选择一段文本后黏贴应该是有效的:V p

V 选择整行,p 用默认寄存器中的内容替换它)。


3
哇,从来不知道你能做到那个! - mike3996
3
不错,你刚刚为我节省了几分钟的时间!需要注意的是,默认注册表的内容将被替换。 - YXD
很好的解决方案,只需要按三个键(Shift,V,然后p)! - psihodelia
9
稍微更安全一些的版本是:V"0p,它会从yank寄存器中粘贴内容而不是默认寄存器。正如E先生所指出的那样,视觉选择会覆盖默认寄存器,因此如果您连续运行Vp两次,可能每次都会产生不同的结果。 - nelstrom
好想法,nelstrom。我总是把简洁放在安全之前! - Prince Goulash
这个答案应该根据@nelstrom的评论进行更新(并注明出处)。 - mloskot

5

您可以使用"_dd删除当前行,而不会替换您复制/粘贴的行。


是的 - 我之前在论坛上看到过。不过,Prince Goulash有一个更好的解决方案! - YXD

0

在将(可能命名的)缓冲区复制到寄存器之前或之后删除该行。如果您没有将yank命名为一个命名缓冲区,则删除之后 - 或使用"2P(或"2p)来复制第二个缓冲区,如果您首先删除第一个。


它很慢,Prince Goulash有更好的解决方案。 - psihodelia

0
你也可以通过将此脚本放入您的 .vimrc 文件中,根据需要关闭缓冲区覆盖副作用行为。

在删除时切换 vim 缓冲区覆盖行为

然后,您可以使用按键组合“,,”来切换覆盖行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接