在Vim中,如何用抽出的文本替换剩下的一行?如果我按“D”,则被删除的文本将被删除的文本替换。
另外,怎么可能猛拉到线的末端?如果我按“Y”,它将会拉扯整条线。
答案 0 :(得分:12)
有两种方法可以将文本替换为行末尾的文本:
v$p
- v
进入视觉模式; $
移至行尾; p
粘贴突出显示的文字。D"0p
- 最后一个被拉出(而不是已删除)的文本存储在寄存器0中,因此:D
要删除到行尾; "0
选择寄存器0; p
粘贴该注册表。答案 1 :(得分:4)
此时,其他人似乎已经彻底回答了您的问题(v$p
和y$
),但我想再提供一条信息:
要抽到行尾,默认方式为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)
我是这样做的:
"ay$
(从光标到行尾的a
)D
(删除到行尾)"ap
(粘贴第1步中的文字)不可否认,这与another answer非常相似,但我更喜欢明确指定一个寄存器,因为它迫使我思考我在做什么。如果我分心或试图做其他事情,我会发现自己不小心覆盖了注册0
。