正则表达式替换Vim中的多个字符串

7qhs6swi  于 8个月前  发布在  其他
关注(0)|答案(3)|浏览(64)

我有一些带有<hr/>标签组的文档:

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

字符串
非常感谢您提供了如何在Vim中替换此标记的单个示例的提示。

dauxcl2d

dauxcl2d1#

您可以将<hr/>\n设置为一个组,并搜索多个组,然后替换为单个组。另外请注意,在Vim中,您可以使用不同的分隔符,这对于使用斜线等分隔符的情况特别有用。如果没有标记,则无需关闭替换命令。

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

字符串
使用\v来启用非常神奇的功能,甚至可以避免更多的转义。但是<>将被视为特殊的单词边界。因此您必须对它们进行转义。

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


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

:%!uniq

r7xajy2e

r7xajy2e2#

您可以在vim中使用此搜索替换:

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

字符串
<hr\/>\n\(<hr\/>\n\)\+将找到2个或更多包含<hr/>的行,我们将其替换为\1,即<hr/>\n

zfycwa2u

zfycwa2u3#

也适用于:

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

字符串

相关问题