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

10

假设我有以下的 Python 数组字面量:

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

我想删除括号中的所有内容,使其变成这样:

def f():
    arr = [] 

我如何在vim中使用最少的命令完成这个操作?


以下是我的一些尝试:

  • 使用di]将删除文本,但不会删除空行,这会留下许多空格需要删除:

  • def f():
        arr = [         
        ]
    
  • 使用da]将删除换行符,但同时也会删除括号:

    def f():
        arr =
    
4个回答

9
您可以简单地执行以下操作:
ca[[]<Esc>

或者:

ca][]<Esc>

请查看:help text-objects

9
只进行 ci 操作对我来说效果更好。保留括号不变。 - StudioWorks

7

将光标放在第一个开放方括号([)上,按下V,然后按%。这将选择该块,随后可以使用J来合并,并输入di[


1
这个动作做一百万次容易吗? - Nike

2

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

如果有多行,先使用 di[,然后将光标移到顶部行,然后使用 J。这可能会在括号之间留下一个空格,必须使用 x 删除它。


这很不错。我可以使用 va] 选择括号之间的每一行,使用 J 连接它们,然后使用 di] 删除数组内容。所以总体来说是 va]Jdi] - Migwell
这也是一个不错的方法。 - Reuben L.

0

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

如果你安装了vim prettier,你可以使用di[ <leader>p来进行格式化。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接