我想一次删除空白和评论。我已经找到了关于删除空行的类似问题,所以对于我使用的空行:
:g/^$/d
对于注释行:
:g/^#/d
我很好奇有没有办法将这些正则表达式合并为一个?就像是
:g/^[$#]/d
但显然它在 vim 中不起作用。
你可以试试这个命令:
:g/^\(#\|$\)/d
或者
:g/\v^(#|$)/d
$
匹配 [...] 中的文字 '$'(输入:help /$
帮助)\|
用于交替\v
非常神奇(最小的反斜杠转义)解决此问题的另一种方法是保留未注释的行:
:g!/^[^#]/d
您可以将正则表达式模式与“或”运算符结合使用:\|
,例如:
:g/^\(#.*\|$\)/d
虽然,在这种特殊情况下,您实际上只需要指定它#.*
是可选的,例如:
:g/^\(#.*\)\?$/d
最后,请注意,您可以将大多数命令与 VIM(不是正则表达式)的“管道”运算符链接在一起|
,例如:
:g /^#/d | /^$/d
尝试以下操作:
:g/^$/d | /^#/d
可以同时|
组合多个命令。
扩展 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