Vim: 如何删除嵌套块中的右方括号
Vim: How to delete to closing square bracket in nested block
我在 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
也不是好的选择,因为嵌套结构。
在这种特殊情况下,您可以这样做:
d/}]
(并按回车键)删除直到搜索模式:}]
一般来说,当我无法快速查看内置 motion/text 对象情况时,使用搜索作为动作是我的首选。您甚至可以使用 {pattern}/{offset} 功能复制 f/t 区别。例如
/{pattern}/s-
会将光标移动到{pattern}开始之前。
:help search-offset
使用
vi]o``d
做这个把戏。
vi]
将 select 整个文本匹配 "]"
o
移动光标到匹配的开头"["
``
将光标移动到最后一个位置
d
删除selection
归功于 Benoit's answer of Vim: changing/deleting up to the end of a “block”
我在 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
也不是好的选择,因为嵌套结构。
在这种特殊情况下,您可以这样做:
d/}]
(并按回车键)删除直到搜索模式:}]
一般来说,当我无法快速查看内置 motion/text 对象情况时,使用搜索作为动作是我的首选。您甚至可以使用 {pattern}/{offset} 功能复制 f/t 区别。例如
/{pattern}/s-
会将光标移动到{pattern}开始之前。
:help search-offset
使用
vi]o``d
做这个把戏。
vi]
将 select 整个文本匹配 "]"o
移动光标到匹配的开头"["``
将光标移动到最后一个位置d
删除selection
归功于 Benoit's answer of Vim: changing/deleting up to the end of a “block”