我有这样的事情:
<div class="portfolio" id="portfolio">
<ul id="tiles">
<a href="http://www.lisami520.com/wp-content/uploads/2013/09/311.jpg"><img
class="alignnone size-medium wp-image-278" alt="31"
src="http://www.lisami520.com/wp-content/uploads/2013/09/311-225x300.jpg" width="225" height="300" /></a> <a
href="http://www.lisami520.com/wp-content/uploads/2013/09/302.jpg"><img
class="alignnone size-medium wp-image-277" alt="30"
src="http://www.lisami520.com/wp-content/uploads/2013/09/302-225x300.jpg" width="225" height="300" /></a> <a
href="http://www.lisami520.com/wp-content/uploads/2013/09/292.jpg"><img
class="alignnone size-medium wp-image-276" alt="29"
src="http://www.lisami520.com/wp-content/uploads/2013/09/292-225x300.jpg" width="225" height="300" /></a>
我想用一个命令用<li></li>
标签包装所有锚链接。
如何做到这一点?
答案 0 :(得分:2)
有两个命令吗?
:% s/<a/<li><a/g
:% s@</a>@</a></li>@g
:
=&gt;输入命令%
=&gt;在所有行上都这样做s/xxx/yyy/g
=&gt;用yyy代替xxx用于一行(g)上的所有事件s@xxx@yyy@g
=&gt;与之前相同,但使用@作为分隔符,因为/是xxx和/或yyy的一部分答案 1 :(得分:1)
另一种方法是使用\_.
元字符,它可以匹配换行符。如果你有嵌套的锚标签,这将失败,但当然这将是无效的HTML。当然,任何使用正则表达式的方法都可能被注释,脚本,字符串等中的匹配所欺骗,所以请谨慎使用。
:%s@<a\>\_.\{-\}</a>@<li>&</li>@g
请注意,我添加了一个词尾项\>
,以防有人发明像<apple></apple>
之类的标记,并在代码中找到它。此外,非贪婪的.\{-\}
而不是.*
在这里很重要。
除了@kkeller的回答中的参考文献,请参阅
:help /\>
:help /\_.
:help /\{-