Vim:取代线路的终点

时间:2010-08-27 15:33:49

标签: vim

在Vim中,如何用抽出的文本替换剩下的一行?如果我按“D”,则被删除的文本将被删除的文本替换。

另外,怎么可能猛拉到线的末端?如果我按“Y”,它将会拉扯整条线。

6 个答案:

答案 0 :(得分:12)

有两种方法可以将文本替换为行末尾的文本:

  1. v$p - v进入视觉模式; $移至行尾; p粘贴突出显示的文字。
  2. D"0p - 最后一个被拉出(而不是已删除)的文本存储在寄存器0中,因此:D要删除到行尾; "0选择寄存器0; p粘贴该注册表。

答案 1 :(得分:4)

此时,其他人似乎已经彻底回答了您的问题(v$py$),但我想再提供一条信息:

要抽到行尾,默认方式为y$。但是,map Y y$中的.vimrc是一种相当普遍的做法,因为Y的默认行为与yy是多余的,并且与其他映射不一致,例如{ {1}}和D

答案 2 :(得分:2)

v在选择的起始字符上输入可视模式。然后点击$以转到该行的末尾。之后,点击y以抽取选区。

所以:

v$y

使用p粘贴,而不是yanking。这将粘贴选择。因此,在使用D删除某些文本后,请执行以下操作:

v$p

这会将删除的文字粘贴到选区上。

答案 3 :(得分:2)

如果要在不影响主(未命名)寄存器的情况下删除文本,请将文本删除到名为"_的“黑洞寄存器”中。通过"_D执行此操作。然后,未命名的寄存器将不受影响,您可以正常粘贴以前拉动的文本。

请参阅:h quote_

答案 4 :(得分:1)

y$ - yank to end of line

答案 5 :(得分:1)

我是这样做的:

  1. "ay$(从光标到行尾的a
  2. 将光标移动到所需的替换位置。
  3. D(删除到行尾)
  4. "ap(粘贴第1步中的文字)
  5. 不可否认,这与another answer非常相似,但我更喜欢明确指定一个寄存器,因为它迫使我思考我在做什么。如果我分心或试图做其他事情,我会发现自己不小心覆盖了注册0