Vim:如何删除嵌套块中的闭合方括号

Vim:如何删除嵌套块中的闭合方括号,vim,Vim,我在Python中有一个很长的嵌套列表: [{'name': 'John', 'args': [[1], [165], [22]]}, {'name': 'Tom', 'args': [[2], [180], [28]]}, ... {'name': 'James', 'args': [[143], [174], [45]]}, # Delete from here on ... {'name': 'Ron', 'args': [[298], [199], [38]]}] 并希望从中间某处删除

我在Python中有一个很长的嵌套列表:

[{'name': 'John', 'args': [[1], [165], [22]]},
{'name': 'Tom', 'args': [[2], [180], [28]]},
...
{'name': 'James', 'args': [[143], [174], [45]]}, # Delete from here on
...
{'name': 'Ron', 'args': [[298], [199], [38]]}]

并希望从中间某处删除,直到结束括号。如果我有一个类似的带圆括号或大括号的嵌套块,我可以使用

d])
d]}
。这是可以预期的,但不是。不幸的是,由于嵌套结构,
f、t
也不是好的选择。

在这种特殊情况下,您可以执行以下操作:

d/}]
(并按enter键)删除,直到搜索模式:}]

通常,当我无法快速查看内置的运动/文本对象情况时,使用搜索作为运动是我的目标。您甚至可以通过使用{pattern}/{offset}功能复制f/t区别。例如

/{pattern}/s-
将光标移动到{pattern}开始之前

:帮助搜索偏移量使用

vi]o``d
做这个把戏

  • vi]
    将选择匹配“]中的全文
  • o
    将光标移动到匹配“[”的开头
  • `
    将光标移动到最后一个位置
  • d
    删除所选内容

这是最直观的方法。在我的例子中,如果
}
]
之间有空格或换行符,我将解决方案扩展到
d/}\\u s*]
。谢谢你的帮助。如果我不在内方括号内,这同样有效。很抱歉,我不能将两个答案都标记为解决方案。没问题,请选择您认为可以帮助他人的答案。