正则表达式在Vim

时间:2017-05-01 15:22:24

标签: regex vim

我的文档包含<hr/>个标记组:

<p>stuff</p>
<hr/>
<hr/>
<hr/>
<p>stuff</p>

感谢提示如何在Vim中替换此标记的单个实例。

2 个答案:

答案 0 :(得分:3)

你可以让<hr/>\n成为一个群组并搜索它的倍数,然后替换 只有一个。另请注意,在Vim中您可以使用不同的 分隔符,如果你使用斜杠,它会特别有用 例如。如果你,你不需要关闭替代命令 没有旗帜。

:%s#\(<hr/>\n\)\+#\1

使用\v启用非常神奇的功能,可以避免更多的转义。然而 <>将被视为特殊字边界。所以你有了 反而逃避他们。

:%s#\v(\<hr/\>\n)+#\1

当然,如果文件中唯一重复的行是那些标记, 这也足够了:

:%!uniq

答案 1 :(得分:1)

您可以在vim

中使用此搜索替换
:%s/<hr\/>\n\(<hr\/>\n\)\+/\1/

<hr\/>\n\(<hr\/>\n\)\+会找到包含<hr/>的2行或更多行,我们会使用\1 <hr/>\n替换它。

相关问题