我了解vi具有快捷键,可以删除带有各种选项的字符,单词和行。

但是,我找不到它:


从光标删除到下一个指定字符

例如,我可能键入du",期望编辑器“删除,直到找到下一个"字符为止”。

我知道的最接近的是d9w,其中9是要删除的单词数。

任何人都可以做知道这是否可能吗?

评论

如果您对Vi和Vim感兴趣,他们现在拥有自己的SE网站:Vi和Vim

#1 楼

使用dtc,其中c是任何字符,例如为您,您想要dt“

这将删除最多但不包括c。

如果您拥有:

delete until exclamation point!

< br光标位于第一个空格处,然后键入dt !,您将得到:

delete!


也dfc。

此将删除最多并包含c。

在上面的同一示例中使用df!会给您:

delete


关于任何“运动”可以用于dcy和类似命令。

评论


大概助记符是“耕种”吗?好答案。

–过度思考
2015年5月5日17:01

您还可以使用移动命令的大写字母删除字符的先前实例。也许对逗号更有用-dT和dF。

– joelostblom
15年4月28日在14:53

这不适用于多行。

– 0xcaff
15年12月29日在22:41

可以在一系列生产线上完成吗?

–雷
17年8月3日在17:17

为了在行的范围内执行类似的操作,可以执行常规搜索(如zpletan的答案):d /单词搜索多达单词。后面必须按Enter键(以关闭搜索)。

– Eric O Lebigot
18年5月21日在11:15

#2 楼


要向前删除最多字符'X',请输入dtX
要向前删除最多字符'X',请输入dfX
要向前删除最多字符'X',请输入dTX
要删除向后通过字符“ X”键入dFX


#3 楼

输入dt#(不是:command,像G这样的动作一样使用它)

将从光标中删除,直到但不包括#。您可以将任何字符替换为#。

评论


这是正确的答案! df#也会删除#。

–越南
2014年12月23日15:30

一直在寻找,这很棒

– Nadeem Khedr
2015年4月3日在7:29

#4 楼

看起来@Arcege已经回答了问题,但是我做了d/l删除,直到字符l为止;其他字符也可以。

评论


这适用于跨换行符的东西。

– Jasonszhao
16-09-9的3:11

注意:这之后必须按Enter。

– Eric O Lebigot
18年5月21日在11:13



d?l向后删除

– Hipponax43
20 Mar 10 '20 at 16:59

#5 楼

w移至以下单词。 l移至以下字符。

因此,d9l删除接下来的9个字符。

评论


关闭,l是Vim的向右箭头键,因此您实际上是在向右删除。相反,d9h将删除剩余的9个字符。

–沃尔夫
16年5月30日在2:24