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

Delete everything between two brackets in Vim, including newlines

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

def f():
    arr = [
        1,          
        2,
        3   
    ]  

我要把括号里的都删掉,变成这样:

def f():
    arr = [] 

如何使用 vim 中的最少命令来做到这一点?


这些是我的一些尝试:

Select 可视模式下的行 (v) 并使用 J 删除换行符。然后使用 di[.

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

将其删除

将光标放在第一个左括号 ([) 上,按 V,然后按 %。这将 select 您可以加入的区块 J,然后是 di[

你可以简单地做:

ca[[]<Esc>

或:

ca][]<Esc>

参见:help text-objects

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

如果你安装 vim prettier,你可以 di[ <leader>p

例如在 JS 中使用格式化程序意味着我不必删除额外的间距、跳到行尾插入 ; 或修复缩进等