vi 删除“直到下一个 X 字符”的快捷方式

kct*_*ang 249 vim

我知道 vi 有快捷键可以删除带有各种选项的字符、单词和行。

但是,我找不到这个:

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

例如,我可能会输入du"希望编辑器“删除直到"找到下一个字符”

最近我知道是d9w哪里9的话要删除的号码。

有谁知道这是否可能?

Arc*_*ege 403

使用dtc,其中c是任何字符,例如对于您,您想要dt"

这将删除最多但包括c

如果你有:

delete until exclamation point!
Run Code Online (Sandbox Code Playgroud)

光标在第一个空格,你输入dt!,你会得到:

delete!
Run Code Online (Sandbox Code Playgroud)

还有dfc

这将删除最多包括c

使用df!上面的同一个例子会给你:

delete
Run Code Online (Sandbox Code Playgroud)

几乎任何“运动”,可用于dcy和类似指令。

  • 您还可以使用移动命令的大写版本删除角色的前一个实例。也许对逗号更有用——`dT,` 和 `dF,`。 (26认同)
  • 据推测,助记符是“till”?很好的答案。 (12认同)
  • 这不适用于多行。 (4认同)
  • 这可以在一系列行上完成吗? (3认同)
  • 为了在一系列行上做类似的事情,可以执行通常的搜索(如在 zpletan 的回答中):`d/word` 搜索到 `word`。后面必须跟回车(关闭搜索)。 (3认同)

小智 78

  • 向前删除字符 'X' 类型 dtX

  • 通过字符“X”类型向前删除 dfX

  • 向后删除字符 'X' 类型 dTX

  • 通过字符“X”类型向后删除 dFX


小智 30

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

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

  • 这是正确的答案!df# 也会删除 #。 (2认同)

zpl*_*tan 21

看起来@Arcege 已经回答了这个问题,但我确实d/l删除了直到字符l; 其他角色也可以。

  • 这适用于跨换行符的内容。 (3认同)

小智 7

w移动到下一个词。l移动到下一个字符。

所以它是d9l删除接下来的9个字符。

  • 关闭,`l` 是 Vim 的右箭头键,所以你实际上是在向右删除。相反,`d9h` 会删除剩下的 9 个字符。 (3认同)