2017-05-01 81 views
0

我有证件与<hr/>标签组多个字符串:正则表达式替换Vim的

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

感激尖如何在Vim中,这标签的单个实例来代替。

+0

你没有谈任何企图。 – revo

+0

观察的最高分数 – geotheory

回答

1

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

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

<hr\/>\n\(<hr\/>\n\)\+会发现含<hr/> 2行以上,我们更换使用\1这是<hr/>\n

+0

不错,谢谢。 Vim中括号替换方括号吗? – geotheory

+0

其实对不起,我得到'E488:尾随字符' – geotheory

+0

不应该按照':%s/old/new/g'格式? – geotheory

3

您可以将<hr/>\n设为一个组,并搜索它的倍数,用一个替代 。另外请注意,在Vim中,您可以使用不同的 分隔符,例如,如果您正在使用斜杠 ,这特别有用。如果您的 没有标志,则不需要关闭替代命令。

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

随着\v使能非常神奇,避免更多的逃逸。然而 <>将被视为特殊字边界。所以你有 来转义他们。

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

和当然,如果你的文件只复制系是那些标签, 这已经足够,以及:

:%!uniq