我希望能够使用其他标签快速包装HTML的整个部分。当我意识到我需要一个围绕我的其他div的外部div时,我会遇到很多这样的事情:
原始HTML:
<div id='a'>
<img src='a.png'>
</div>
<div id='b'>
<img src='b.png'>
</div>
修改后的HTML:
<div id='Main'>
<div id='a'>
<img src='a.png'>
</div>
<div id='b'>
<img src='b.png'>
</div>
</div>
我可以使用matchit.vim和surround.vim,但我不相信surround.vim包含单词(即<div>
),只包含单个字符(即。<
)它也没有缩进。
我现在能想到的最接近的事情是按下15-20次按钮。
答案 0 :(得分:7)
surround.vim
可以包含html标记,但只有在使用S
视觉模式而不是ys
而不是{{1}时,才会缩进缩进在视觉上,感谢@RandyMorris。如果s
的运动或使用的视觉选择是线性的,它还会在下一行和前一行(不缩进)上放置相同的缩进div。对ys
这样做不会这样做,所以如果你真的想避开视觉模式,你必须使用yss
。
更新:有ysg@<div>j>>
和g:surround_indent
选项。如果您设置其中任何一个,则环境.vim将使用b:surround_indent
缩进包围的文本及其周围环境,而上述混乱=
非缩进将为false,以及ys
({{ 1}}也会使用S
。需要S
和正确的缩进设置。
如果您未设置这些选项,您将看到第一段中描述的行为:=
无条件缩进。
答案 1 :(得分:3)
是的,环绕确实是要走的路。假设您的光标位于第一个div
:
V%j%S<div id="Main"<CR>
或
V5jS<div id="Main"<CR>
做到这一点。
根据具体情况,整个事情甚至可以缩短为:
Vat<div id="Main"<CR>
<div id="Main"
部分似乎很难跳过。
当然还有其他方法。
ZenCoding例如允许您使用CSS语法:
V5j<C-y>,div#Main<CR>
我不知道有任何更快的方式来获得你想要的东西。
TextMate的 Control Shift w 很不错,这是肯定的,但它默认为<p>
所以你必须无论如何都要输入{{1}}。