Vim可变长度通配符搜索和替换?

Kur*_*sis 5 vim replace wildcard substitution

我正在尝试清理Frontpage生成的html文件,我需要删除大量的标记属性,例如:

style="font-size: 10.0pt; font-family: Trebuchet MS; color: blue"
style="color: blue; text-decoration: underline; text-underline: single"
style="color: blue; text-decoration: underline; text-underline: single"
style="font-family: Trebuchet MS"
style="font-size:10.0pt;"
style="color: navy"
Run Code Online (Sandbox Code Playgroud)

我可以用简单的方法删除一定数量的通配符.命令:

:%s/ style="........"//g
Run Code Online (Sandbox Code Playgroud)

但有没有办法让这个.在该替换命令中可变长度,以便一个命令将删除整个文档中的每个样式属性?

PS - 我搜索过头版清洁工,发现了一些,但不清楚它们有多可靠,所以我自己编写脚本.尽管这里有建议.

Web*_*ser 12

这应该消除HTML中的所有样式属性:

:%s/ style=".*"//g
Run Code Online (Sandbox Code Playgroud)

编辑:Sam Brinck提出了一个很好的观点.我的代码仅基于您的示例.如果属性后面还有其他属性,则此代码会过多地吞噬style="...".更安全的替代方案可能是:

:%s/ style="[^"]*"//g
Run Code Online (Sandbox Code Playgroud)

这意味着-删除所有字符后,style="这是不是一个双引号 [^"]遇到下一个双引号,直到.谢谢山姆!

  • 虽然`.*`是贪婪的,但是要小心一点,这意味着如果在线上有多个```它会把所有东西都抓到最后一个```. (6认同)