【问题标题】:In Vim, how can I delete everything between quotes including the quotes?在 Vim 中,如何删除引号之间的所有内容,包括引号?
【发布时间】:2016-04-25 14:12:23
【问题描述】:

例如,在下面:

Testing "deleting" within quotes

光标在删除中,如何删除引号内的文本并包含引号,离开:

Testing within quotes

【问题讨论】:

标签: vim


【解决方案1】:

您可以使用以下顺序删除包括引号在内的所有内容:

da"

请记住,这只适用于单行,并且会删除最后一个引号之后的所有尾随空格。

正如@James 在下面的 cmets 中指出的那样,您还可以使用 delete inside 序列来删除引号内的字符而不删除引号:

di"

您还可以使用 change inside 序列删除字符并切换到插入模式,让您轻松替换引号内的文本:

ci"

【讨论】:

  • 我知道 SO 允许回答自己 Q。但是你所问的实际上是 RTFM 的事情......也许理解文本对象应该是新 vim 用户要做的第一件事。 .关于da",你不仅可以在引号内做da",还可以在引号外做,例如在行首,删除第一个"..."
  • 很公平,虽然我添加了这个,因为它似乎是初学者的常见问题,并且尚未被问或回答(尽管类似的问题已经出现)。对于初学者(可能不知道 Vim 的 :help),进行快速搜索通常比遍历手册更容易。如果您认为这会有所帮助,请随时根据您的建议编辑答案。
  • Vim :help 仅在您已经知道要查找的内容时才有用。将这些操作记录在容易找到的地方是很有用的。
  • 补充一点:您也可以这样做而不删除di"的引号。非常有用,尤其是ci"
  • 我知道这是旧的,但很常见。不是每个人都可以一直在手册中找到所有内容。有时你只是想念它。此外,像这样的问答让搜索答案变得更容易。
【解决方案2】:

我们可以使用

da"

针对您的情况 或di" 仅删除“。”中的内容。

最好从文本对象开始。写作作为完整性的答案。 摘自:h text-objects,如下给出,建议ia两种形式

这是一系列只能在可视模式下使用的命令或 在运算符之后。以“a”开头的命令选择“a”n 对象 包括空格,以“i”开头的命令选择一个“内部”对象 没有空白,或者只是空白。因此,“inner”命令总是选择比“a”命令更少的文本。

文本对象对其他字符对(如(), {}, etc)很有用。例如,在更改时很有用

if ( i == true ) {
}

if (_) {
}

通过使用ci(ci)

【讨论】:

  • 如何从当前位置开始删除引号中的内容?例如“abc|de”、“|”是光标的位置,只删除“de”。
  • 应该不止一个词用引号括起来,我只是举了一个不好的例子。
  • dt" 怎么样?
【解决方案3】:

将光标保持在前引号中并按 d,然后键入 /"/e 它应该删除双引号和引号之间的内容。 这也适用于多行。

另一种方式: 将光标保持在第一个引号中并输入 df" 它还将删除引号和引号内的文本!不适用于多行。

在这两种方式中,您都在正常模式下执行命令。

【讨论】:

  • 当这些引号之间存在另一个双引号时,这些方法不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多