繁体   English   中英

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/}]

(并按回车键)删除,直到搜索模式:}]

一般来说,当我无法快速查看内置动作/文本 object 情况时,我会选择使用搜索作为动作。 您甚至可以使用 {pattern}/{offset} 功能复制 f/t 区别。 例如

/{pattern}/s-

将 cursor 移动到 {pattern} 开始之前。

:help 搜索偏移量

利用

vi]o``d

做这个把戏。

  • vi]将 select 匹配“]”内的整个文本
  • o将 cursor 移动到匹配“[”的开头
  • ``将 cursor 移动到最后 position
  • d删除选择

归功于 Benoit 对 Vim 的回答:更改/删除到“块”的末尾

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM