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

5

我正在尝试清理一个由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"

我可以通过一个简单的.命令删除一定数量的通配符:

:%s/ style="........"//g

但是有没有办法使这个替换命令中的“.”变得可变长度,这样一个命令就可以删除整个文档中的每个样式属性呢?

PS - 我已经搜索了一些前端清理工具,但不确定它们的可靠性,所以打算自己编写脚本。如果您有什么建议,请告诉我。

1个回答

12

这段代码可以消除HTML中所有的样式属性:

:%s/ style=".*"//g

编辑:Sam Brinck 提出了一个很好的观点。我的代码只是基于你的例子而写的。如果在 style="..." 属性后面还有其他属性,这段代码会吞掉太多内容。更安全的替代方法可能是:

:%s/ style="[^"]*"//g

这意味着 - 移除style="之后的所有字符,这些字符不是双引号[^"],直到遇到下一个双引号。感谢Sam!


太好了,谢谢。我本以为我试过了,但显然没有。非常感谢! - Kurtosis
6
请小心,尽管.*是贪婪的,这意味着如果该行上有多个 ",它将获取到最后一个 " 的所有内容。 - Sam Brinck
哈哈,谢谢,这确实可能会带来一些痛苦。@Web用户,感谢您的编辑。 - Kurtosis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接