繁体   English   中英

Vim,删除一个正则表达式中的空白和注释行

[英]Vim, removing blank and commented lines in one regex

我想一次删除空白和注释。 我已经找到了关于删除空行的类似问题,所以对于我使用的空行:

:g/^$/d

并为评论行:

:g/^#/d

我很好奇有没有办法合并这些正则表达式? 就像是

:g/^[$#]/d

但显然它在vim中不起作用。

您可以尝试以下命令:

:g/^\(#\|$\)/d

要么

:g/\v^(#|$)/d

  • $匹配[...]内的文字'$'(类型:help /$ for help)
  • \\| 是为了交替
  • \\v非常神奇(最小的反斜杠逃逸)

另一种解决方法是保留未注释的行:

:g!/^[^#]/d

请尝试以下方法:

:g/^$/d | /^#/d

| 是否可以同时组合多个命令。

您可以将正则表达式模式与“或”运算符组合: \\| ,例如:

:g/^\(#.*\|$\)/d

但是,在这种特殊情况下,您实际上只需要指定#.*是可选的,例如:

:g/^\(#.*\)\?$/d

最后,要知道,你可以链在一起,最有VIM的(不是正则表达式的)“管道”操作命令,也| ,例如:

: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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM