在Vim中,如何删除引号之间的所有内容,包括引号?

bla*_*ide 24 vim

例如,在以下内容中:

Testing "deleting" within quotes
Run Code Online (Sandbox Code Playgroud)

将光标置于删除范围内,如何删除引号内的文本并包含引号,留下:

Testing within quotes
Run Code Online (Sandbox Code Playgroud)

bla*_*ide 37

您可以使用以下顺序:

da"

请记住,这仅适用于一行,并将删除最后一个引用后的任何尾随空格.

  • 添加点:你也可以这样做*而不用'di"`删除引号.非常有用,尤其是`ci" (7认同)
  • 我知道SO允许自己回答Q.但是你所要求的实际上是一个RTFM的东西...也许理解文本对象应该是新的vim用户要做的第一件事.关于`da"`,你不仅可以在引号内做"da",你可以在引号之外做,例如在行的开头,删除第一个""......" (6认同)
  • 很公平,虽然我添加了这个,因为它似乎是一个初学者的常见问题,它尚未被提出或回答(虽然类似的问题已经存在).对于初学者(可能不了解Vim的`:help`)而言,通常更容易进行快速搜索而不是遍历手册.如果您认为有用,请随意根据您的建议编辑答案. (6认同)
  • Vim`:help`只有在您已经知道自己在寻找什么的情况下才有用.将这些操作记录在易于找到它们的某个地方是很有用的. (5认同)
  • 我知道这很旧,但是很常见。并非每个人都能一直在手册中找到所有内容。有时您*只是*错过了它。同样,这样的问答使搜索答案更加容易。 (3认同)

dlm*_*tei 11

正如Kent指出的那样,最好从文本对象开始.写作完整性的答案.摘录自:h text-objects下面给出的两种形式ia

这是一系列只能在可视模式下或运算符后使用的命令.以"a"开头的命令选择包括空格的"a"n对象,以"i"开头的命令选择没有空格的"内部"对象,或仅选择空白区域.因此,"内部"命令总是选择比"a"命令少的文本.

text-objects对其他字符对(), {}, etc很有用.例如,它在更改时很有用

if ( i == true ) {
}
Run Code Online (Sandbox Code Playgroud)

if (_) {
}
Run Code Online (Sandbox Code Playgroud)

通过使用ci(ci).

无论如何,我们可以像你一样正确地使用你的情况

da"
Run Code Online (Sandbox Code Playgroud)

di"仅删除"."内的内容.

  • “dt”怎么样? (2认同)