我想一次删除空白和注释。我已经找到了关于删除空行的类似问题,所以对于我使用的空行:
:g/^$/d
和注释行:
:g/^#/d
我很好奇有没有办法合并这些正则表达式?像
这样的东西:g/^[$#]/d
但显然它在vim中不起作用。
答案 0 :(得分:22)
您可以尝试以下命令:
:g/^\(#\|$\)/d
或者
:g/\v^(#|$)/d
$
匹配[...]内的文字'$'(:help /$
类型寻求帮助)\|
用于替换\v
非常神奇(最小的反斜杠转义)答案 1 :(得分:4)
解决此问题的另一种方法是保留未注释的行:
:g!/^[^#]/d
答案 2 :(得分:3)
尝试以下方法:
:g/^$/d | /^#/d
|
可以同时组合多个命令。
答案 3 :(得分:3)
您可以将正则表达式与“或”运算符结合使用:\|
,例如:
:g/^\(#.*\|$\)/d
尽管如此,在这种特殊情况下,您实际上只需要指定#.*
是可选的,例如:
:g/^\(#.*\)\?$/d
最后,请注意,您可以将大多数命令与VIM(非正则表达式)“管道”运算符(也是|
)链接在一起,例如:
:g /^#/d | /^$/d
答案 4 :(得分:1)
扩展kevs回答:
如果有人还想删除标签配置文件中的注释,
例如:
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
...
你可以试试这个:
:g/\v^(#|$|\t#)/d