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


193

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

但是,我找不到这个:

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

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

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

有人知道这是否可能吗?


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

Answers:


302

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

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

如果你有:

delete until exclamation point!

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

delete!

也dfc。

这将删除至并包括c。

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

delete

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


7
大概助记符是“耕种”吗?好答案。
— 考虑过2015年

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

3
这不适用于多行。
— 0xcaff 2015年

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

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

59
  • 最多删除字符“ X”的类型 dtX

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

  • 要向后删除字符“ X”,请键入 dTX

  • 要通过字符“ X”向后删除,请输入 dFX


30

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

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


2
这是正确的答案!df#也会删除#。
— 2014年

一直在寻找,这真棒
— Nadeem Khedr 2015年


6

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

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


2
关闭,l是Vim的向右箭头键,因此您实际上是在向右删除。相反,d9h将删除9个字符。
— 沃尔夫
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.