regex - 如何删除大括号内的代码块?
问题描述
我有一个包含一些代码块的文件:
dimensions{
dim1{
//foo
}
dim2{
//bar
}
}
如何删除整个“尺寸”块,包括里面的所有内容?考虑到我不知道里面有多少块,但我确定我们有相同数量的左大括号和右大括号?提前致谢。
解决方案
使用 vim 可以很简单地匹配任何包含dimensions
using的行:global
:
:[range]g[lobal]/{pattern}/[cmd]
例如:
:g/dimensions/print
该命令print
将打印所有匹配的行:
将命令更改为normal!
1 可以在匹配的行上执行正常模式命令,例如d
elete 或y
ank。
: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]...
推荐阅读
- image - 为什么反应原生图像没有在模拟器中显示?
- mysql - 我该如何解决这个问题,它在 @Column 注释上显示错误?
- phpmyadmin - phpMyAdmin 用户的编辑按钮
- python - Airflow - GCP Operator:GoogleCloudStorageToBigQueryOperator - 需要 15 分钟才能完成
- python - python中的双重提醒操作
- r - 使用 Rcpp 模块通过派生对象公开继承的方法
- javascript - PHP如何将已经上传的文件保留在编辑表单中
- javascript - 尝试访问表单数据时发生综合事件错误
- android-studio - 构建 android OCR tesseract 时未找到数据文件错误,因此无法查看 OCR 结果
- java - 有没有办法解决 upi_pay: ^0.2.0 插件和 razorpay_flutter: ^1.2.2 插件之间的冲突,并在 android 应用程序中同时使用两者