Regex Vim,删除一个正则表达式中的空白行和注释行
我想一次删除空白和注释行。我已经发现了关于删除空行的类似问题,因此对于空行,我使用:Regex Vim,删除一个正则表达式中的空白行和注释行,regex,vim,Regex,Vim,我想一次删除空白和注释行。我已经发现了关于删除空行的类似问题,因此对于空行,我使用: :g/^$/d 对于注释行: :g/^#/d 我很好奇有没有办法把这些正则表达式合并成一个?差不多 :g/^[$#]/d 但显然它在vim中不起作用。您可以尝试以下命令: :g/^\(#\|$\)/d 或 $匹配[…]内的文字“$”(键入:help/$以获取帮助) \\\124;用于替换 \v非常神奇(最小反斜杠转义) 尝试以下操作: :g/^$/d | /^#/d 用于同时组合多个命令。您可以将
:g/^$/d
对于注释行:
:g/^#/d
我很好奇有没有办法把这些正则表达式合并成一个?差不多
:g/^[$#]/d
但显然它在vim中不起作用。您可以尝试以下命令:
:g/^\(#\|$\)/d
或
匹配[…]内的文字“$”(键入$
以获取帮助):help/$
用于替换\\\124;
非常神奇(最小反斜杠转义)\v
:g/^$/d | /^#/d
用于同时组合多个命令。您可以将正则表达式模式与“or”运算符组合:\\\
,例如:
:g/^\(#.*\|$\)/d
:g /^#/d | /^$/d
不过,在这种特殊情况下,您实际上只需要指定#.*
是可选的,例如:
:g/^\(#.*\)\?$/d
最后,请注意,您可以使用VIM的(而不是regex的)“pipe”操作符将大多数命令链接在一起,也可以使用
,例如:
:g/^\(#.*\|$\)/d
:g /^#/d | /^$/d
另一种解决方法是保留未注释的行:
:g/^#/d
:g/^[^#]/d
扩展KEV答案:如果任何人也想删除选项卡式配置文件中的注释,
例如:
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
不能通过管道传输到
g
,但g
适用于管道中的所有命令。因此,最好将其写成:g/^$/d |/^#/d
这里我建议的唯一一件事是在d
操作符后添加下划线,将删除的行发送到黑洞寄存器。这样::g/\v^(#|$)/d
如果文件很大,速度会明显加快。此外,删除的注释可能不需要用于后续粘贴,那么为什么要保留它们呢