我知道我可能已经在阅读的所有vi文档中浏览了一百万遍,但是似乎找不到从光标到行尾命令的删除。

#1 楼

D(= Shift + D)
DW命令将从当前光标位置删除到下一个单词字符的开头。命令D $(注意,这是一个美元符号,而不是“ S”)将从当前光标位置删除到当前行的末尾。 Shift + D是D $的同义词。

评论


是的,我知道dw,但是我想我只是假设会有一个“删除此行的其余部分”命令。例如,我的行的ip = | 10.1.1.1带有|是光标位置。是否有一条命令将删除所有10.1.1.1?

–法尔玛里
10 Nov 29 '21:03

@Falmarri-我很抱歉,我一定误会了您的问题。为此有一个命令:d $

– ok
2010-11-29 21:04

D(Shift + d)也是d $的同义词。

– Neth
2010-11-29 22:06

@Andy,工作是从光标删除到行尾。如果您考虑删除更多内容是为了“完成任务”,则也可以只使用:!rm -f%然后使用:q!。那会删除整个文件。

–通配符
17-10-27在1:28

@Amir只需使用d ^('d'+插入符号)...基本上是d +我通常认为可以移动光标的任何字符,但是我自己正在学习Vim,所以在这方面我可能是错误的。

– JakeD
17/12/24在2:25



#2 楼

正如其他人提到的那样:您可以使用d$D(shift-d)从光标位置删除,直到行尾。

我通常觉得更有用的是c$C(shift-d) c)因为它将从光标位置删除到行尾,并使您进入[插入]模式。

评论


不错!!!在我看来,对于大多数人来说,这比D好得多,因为它不会使您在行尾移动一个空格。

–伊利亚·林恩(Elijah Lynn)
17年3月21日在23:17

为什么这个答案一直隐藏在这里?这是我来这里时真正想要的功能。

– M_M
17年7月13日在15:07

@ElijahLynn无论如何都不应该是一个问题。 Vim有两种主要的方式来进入插入模式:i在光标之前插入,而a在光标之后插入。如果光标位于该行的末尾,并且您想插入该行的末尾,则可以使用a。

– Lie Ryan
18-10-22在13:30



目标是一次完成一项操作,而不是两项。额外的按键=额外的摩擦。

–伊利亚·林恩(Elijah Lynn)
19年1月10日在1:42

Shift-C很棒!谢谢! +1!

–rmbianchi
8月12日15:20

#3 楼

关于vi的好处之一是其逻辑命令结构。 d后跟运动命令将删除该运动的目标。 $移至行尾(助记符:类似于regexps)。因此,d$删除到该行的末尾。同样,e移至当前单词的末尾,而w移至下一单词的开头;因此de删除当前单词的结尾,而dw另外删除以下空格。

评论


@gioele我将用于实际键,而不用于命令序列。例如。 Ctrl + C ,但d $。

–吉尔斯'所以-不再是邪恶的'
2014年4月29日在9:42

@吉尔斯你是对的。我刚刚尝试过d ^,它已从光标位置删除到行首。

–ka3ak
16-4-2在11:57



我一直用(d)删除(a)(w)ord删除单词:)

–BłażejMichalik
16-09-21在20:51



#4 楼

您可能要使用D。将光标移动到要删除的第一个字符,然后按shift-D。一切都消失了。实际上,它在默认的剪切缓冲区中,因此您可以P或p粘贴回去。

我使用Dp(删除到行尾,然后放回去),移到某些行的末尾另一行,然后再次p将另一行末尾粘贴相同的文本。在配置文件中发挥作用,您需要在两个或多个位置放置一些复杂的URL。

评论


无论如何,这可能是他使用的最小Vim。

–polemon
2010年12月3日,9:17

#5 楼

我认为插入模式快捷方式可能会派上用场。

在插入模式下,开始更改直到行尾可能更好(将其放在您的~/.vimrc上):

inoremap <C-l> <C-o>C


因此,正如您所说的,正常模式下为D,插入模式下为Ctrl + l。如您所见,C也开始变化,直到行尾。

<C-o> ......... insert normal keystroke in insert mode


我选择Ctrl-l是因为l在您的指尖下。 Ctrl-k已经用于插入图。

我一直在:h i_Ctrl上搜索一些免费的键绑定,而在创建新的快捷方式以在vim中执行操作时,这实际上是一个更大的问题。

#6 楼

要从光标位置之后删除一系列行,3D将从光标中删除到行的末尾,以及接下来的两行完全删除(即删除光标位置之后的三行)。

例如对于以下文本(以|表示的光标),

If there's a cursor |in the line
here
we
go


使用3D命令将输出:

If there's a cursor
go