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

问题描述 投票:0回答:5

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

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

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

def f():
    arr = [] 

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


这些是我的一些尝试:

  • 使用

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

    def f():
        arr = [         
        ]
    
  • 使用

    da]
    将删除换行符,还会删除括号:

    def f():
        arr =
    
vim vi
5个回答
9
投票

你可以简单地做:

ca[[]<Esc>

或:

ca][]<Esc>

参见

:help text-objects


7
投票

将光标放在第一个左括号 (

[
) 上,按
V
,然后按
%
。这将选择您可以加入的区块
J
,然后加入
di[


2
投票

在可视模式下选择行 (

v
) 并使用
J
删除换行符。然后使用
di[

或者如果有很多行,请先

di[
,然后将光标移动到顶行,然后
J
。这可能会在括号之间留下空格,必须使用
x
将其删除。


0
投票

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

如果你安装了vim prettier,你可以做

di[ <leader>p

例如,在 JS 中使用格式化程序意味着我不必删除额外的空格,跳到行尾插入

;
,或修复缩进等


0
投票

您可以使用这样的正则表达式:

:%s/\[\_.\{-}\]/[]/g

\_.
匹配包括换行符在内的任何字符,
\{-}
是非贪婪命令

© www.soinside.com 2019 - 2024. All rights reserved.