删除Vim中两个括号之间的所有内容,包括换行符

删除Vim中两个括号之间的所有内容,包括换行符,vim,vi,Vim,Vi,假设我有以下python数组文字: def f(): arr = [ 1, 2, 3 ] 我想删除括号中的所有内容,使其成为: def f(): arr = [] 如何在vim中使用最少的命令来实现这一点 以下是我的一些尝试: 使用di]将删除文本,但不会删除空换行符,留下大量空白,我必须删除: def f(): arr = [ ] 使用da]将删

假设我有以下python数组文字:

def f():
    arr = [
        1,          
        2,
        3   
    ]  
我想删除括号中的所有内容,使其成为:

def f():
    arr = [] 
如何在vim中使用最少的命令来实现这一点


以下是我的一些尝试:

  • 使用
    di]
    将删除文本,但不会删除空换行符,留下大量空白,我必须删除:

    def f():
        arr = [         
        ]
    
  • 使用
    da]
    将删除换行符和括号:

    def f():
        arr =
    

在可视模式下选择行(
v
),然后使用
J
删除换行符。然后使用
di[


或者,如果有许多行,
di[
首先,然后将光标移动到顶行,然后再移动到
J
。这可能会在括号之间留下一个空间,必须使用
x

将光标移到第一个开口括号(
[/code>),按
V
,然后按
%
。这将选择您可以加入的块
J
,然后按
di[

,您只需执行以下操作:

ca[[]<Esc>
ca[]
或:

ca][]
请参见
:帮助文本对象

我发现使用代码格式化程序快捷方式可以节省大量时间

如果安装,您可以执行
di[p


例如,在JS中使用格式化程序意味着我不必删除额外的空格,跳转到行尾插入
,或修复缩进等,这很好。我可以
va]
选择括号之间的每一行,
J
加入,然后
di]
删除数组内容。因此
va]Jdi]
总的来说。这也是一个很好的方法。只做ci[对我更有效。左括号。
ca][]<Esc>