如何快速删除VIM中从光标位置开始的一行?


267

我希望能够删除从VIM中光标位置开始的行的其余部分。有一个简单的命令可以做到这一点吗?

为了帮助说明,这是在命令之前。

The quick brown dog jumps over the lazy fox.
     ^
     |----- Cursor is here.

这是在命令之后

The q
     ^
     |----- Cursor is here.

Answers:


430

(已编辑以包括评论者的出色添加:)

D或其等效项d$将删除该行的其余部分,并使您进入命令模式。Cc$将删除该行的其余部分,并将您置于插入模式,新文本将被追加到该行。

对于vim初学者来说,这是vitutorvimtutor优秀读物的一部分。


1
高炉,我觉得这很容易,我在想某种结合,d然后再结合一些东西。我认为在这里发布问题会更快,也可以使其他默认在阅读本手册之前进行在线搜索的人受益。
安东尼

2
C,这是将光标移动到指示位置的唯一“真实”方式,尽管这使您进入了插入模式。
沃尔特

1
@Anthony:还有一个“ d后跟某物”的等效命令D,其中“某物”是$运动:d$
ib。

2
如果要结束于插入模式,请使用C(或c$
Benoit

7
我意识到该解决方案已经得到解决,但是我一直在寻找一种用VIM删除整行并找到它的方法。原来我要寻找的选项dd来自命令模式。我希望这对任何偶然发现的人有所帮助。
Frito 2014年


21

您可能也对感兴趣C,它还会删除行尾,如D,但除此之外,它将使您进入光标位置的插入模式。




5

这是一个非常老的问题,但是由于VIM仍然很重要,因此需要澄清一些内容。

截至2018年10月,这里的每个答案和评论都提到了通常被称为``削减''行动的内容,因此使用其中的任何一项都将替代VIM 未命名寄存器中的任何内容。该寄存器往往被视为默认的复制/粘贴剪贴板,因此,如果您要删除行的其余部分以将某些内容粘贴到同一位置,则这些答案都无法正常工作,因为随后删除的内容将被粘贴。代替以前被拉扯的东西。

OP上下文中的true delete命令是"_D(或"_C如果需要插入模式),它将删除的内容发送到由所指定的黑洞寄存器中"_,在此它再也不会打扰(尽管您仍然可以使用来撤消此操作u)。

话虽如此,最后被撤销的内容都存储在0寄存器中,即使将其替换为未命名的寄存器,也可以使用粘贴"0p

了解有关黑洞寄存器一般寄存器的更多信息获得更多的VIM乐趣!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.