删除 vim 中带引号的单词

delete word, wih quotes, in vim

如果我有以下文字:

['abc']

并且光标在第一个引号上。

所以,我怎样才能删除 'abc' 并保留 []

一开始可能有点违反直觉,但您可以使用“搜索和替换”来完成这些类型的任务。

在vim中,你正在寻找:sVim WiKi,找到字符串'abc'并替换为空字符串。

你应该使用像 Don 提到的那样的东西。

单行有几个选项:

  1. 使用 ct] 或“剪切直到”使用 dt] 删除直到“。更多信息可用 here(您可以向后删除、拉动直到等)。

  2. “删除查找”(通过target删除):df'

  3. 视觉line/find:Ctrl+vf'x。冗长但给了一些机构根据需要进行调整。

中,您提到您有一个多元素列表并且想要删除一个项目。元素的内容很重要;我通常以临时方式进行,使用 dwx 的组合或视觉line/find 使用 w 或在目标附近进行小幅调整,以除上述技术之外剪掉元素。

例如,如果您的列表是 ['one', 'two', 'three'] 并且您的光标位于第一个 ' 上,您可以使用 df 空格键x2d w 生成 ['two', 'three'].


其他有用的线程:

  • Vim - delete until (inclusive) character in multiple lines

虽然 @ggorlen 关于 d f space 的回答很棒,但有些人可能会发现使用无论光标在单词上的位置如何都有效的映射是有益的,类似:

nnoremap [something] :normal vf,oF'xx<CR>

将删除下面示例中的 'one' 元素,无论它在哪个位置。

['one', 'two', 'three'] => ['two', 'three']
d i [ 

删除方括号内的所有内容

使用da'.

a' 文本对象选择光标下被单引号包围的文本,包括引号本身。

参见:help a'

"a quoted string". Selects the text from the previous quote until the next quote.

这个文本对象很聪明,如果一行中有多个带引号的字符串,Vim 会找出哪些对组成字符串。 Vim 还可以识别字符串中的转义引号(默认转义字符是 \,但即使这样你也可以通过 'quoteescape' 选项进行配置。)