2010-08-27 134 views
5

在Vim中,怎样才能用被抽出的文本替换剩下的行?如果我按“D”键,被抽出的文字将被替换为被删除的文字。Vim:替换行的末尾

另外,它怎么可能推到行的末尾?如果我按下“Y”键,它会拉开整条线。

回答

2

v对选择的起始字符输入视觉模式。然后点击$即可转到该行的末尾。之后,击中y以推翻选择。

所以:

v$y

相反唬弄的,使用p粘贴。这将粘贴在选择上。您使用D所以后删除一些文字,这样做:

v$p

这将粘贴在选择删除的文字。

+0

哦,对不起,我以为你的意思是按v $ y来拉扯。是的,那是有用的,谢谢。 – Rafid 2010-08-27 16:01:50

12

两种方式可以与先前抽出的文本替换文本行的末尾:

  1. v$p - v进入可视化模式; $移动到行尾; p粘贴在突出显示的文本上。
  2. D"0p - 最后一个被抽出(相对于被删除的)文本被存储在寄存器0中,所以:D被删除到行尾; "0选择寄存器0; p来粘贴该寄存器。
+0

不知道寄存器'0'。这很酷。 – wuputah 2010-08-27 16:07:19

+0

+1 - 不知道注册表。 – 2010-08-27 16:10:37

+0

是的,我也不知道注册评论。 无论如何选择两个答案作为接受的答案? :) – Rafid 2010-08-27 16:15:20

4

您的问题似乎是彻底被别人在这一点上(v$py$)回答,但我想一个额外的一条信息:

要拷贝到行尾的,则默认方式为y$ 。但是,由于默认行为Yyy重复,并且与其他映射(如DC)不一致,所以map Y y$在您的.vimrc中是相当常见的做法。

+0

感谢您的评论,这是非常有用的。我会添加到我的.vimrc :) – Rafid 2010-08-27 16:02:53

+0

这很漂亮。谢谢 – devth 2010-12-22 18:13:10

1

以下是我会做:

  1. "ay$(猛拉从光标到行结束到寄存器a
  2. 将光标移动到所需的位置替换。
  3. D(删除到行的结尾)
  4. "ap(粘贴在步骤1中猛拉文本)

诚然,这是非常相似的another answer,但我更喜欢明确指定一个寄存器,因为它的力量我想想我在做什么。如果我分心或试图做其他事情,我可能会意外地覆盖寄存器0

2

如果要删除文本而不影响主(未命名)的寄存器,请将文本删除到名为"_的“黑洞寄存器”中。通过"_D做到这一点。然后,未命名的注册将不受影响,您可以正常粘贴以前抽出的文本。

请参阅:h quote_