首页 > 解决方案 > 如何删除大括号内的代码块?

问题描述

我有一个包含一些代码块的文件:

dimensions{
   dim1{
      //foo
   }
   dim2{
      //bar
   }
}

如何删除整个“尺寸”块,包括里面的所有内容?考虑到我不知道里面有多少块,但我确定我们有相同数量的左大括号和右大括号?提前致谢。

标签: regexbashsed

解决方案


使用 vim 可以很简单地匹配任何包含dimensionsusing的行:global

:[range]g[lobal]/{pattern}/[cmd]

例如:

:g/dimensions/print

该命令print将打印所有匹配的行:

将命令更改为normal!1 可以在匹配的行上执行正常模式命令,例如delete 或yank。

:g/dimensions/normal! ...

该命令d删除,但需要跟随它的动作,例如:$删除直到换行符,或者在我们的例子中,我们可以使用%which 找到匹配的字符对,{matches with }(matches with)等。

:g/dimensions/normal! d%

可以从命令行调用 vim 并请求它执行命令-c

vim -c 'g/dimensions/normal! d%' [inputfile]...

记得保存并关闭以避免 vim 保持打开状态:

-c 'wq'

由于 vim 可以通过 vimrc 文件和环境配置为需要的,因此可以使用以下命令禁用它:

-u NONE

全部一起:

vim -u NONE -c 'g/dimensions/normal! d%' -c 'wq' [inputfile]...

推荐阅读