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

时间:2016-10-24 00:07:31

标签: vim vi

说我有以下python数组文字:

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

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

def f():
    arr = [] 

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

这些是我的一些尝试:

  • 使用di]会删除文字,但不会删除空的换行符,留下很多空格我不得不删除:

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

    def f():
        arr =
    

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

您可以这样做:

ca[[]<Esc>

或:

ca][]<Esc>

请参阅:help tex-objects

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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

如果您安装 vim prettier,您可以执行 di[ <leader>p

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