我在 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]}
。这按预期工作,但 d]]
不是。不幸的是,由于嵌套结构,f, t
也不是好的选择。
答案 0 :(得分:2)
在这种特殊情况下,您可以:
d/}]
(并按回车键)删除直到搜索模式:}]
一般来说,当我无法快速看到内置的运动/文本对象情况时,使用搜索作为运动是我的首选。您甚至可以使用 {pattern}/{offset} 功能复制 f/t 区别。例如
/{pattern}/s-
将光标移动到 {pattern} 开始之前。
:help search-offset
答案 1 :(得分:2)
使用
vi]o``d
做的伎俩。
vi]
将选择匹配“]”内的整个文本o
将光标移动到匹配“[”的开头``
移动光标到最后位置d
删除选择归功于Benoit's answer of Vim: changing/deleting up to the end of a “block”