我希望能够用其他标签快速包装HTML的整个部分.当我意识到我需要一个围绕我的其他div的外部div时,我遇到了很多,像这样:
原始HTML:
<div id='a'>
<img src='a.png'>
</div>
<div id='b'>
<img src='b.png'>
</div>
Run Code Online (Sandbox Code Playgroud)
修改后的HTML:
<div id='Main'>
<div id='a'>
<img src='a.png'>
</div>
<div id='b'>
<img src='b.png'>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以使用matchit.vim和surround.vim,但我不相信surround.vim环绕着单词(即.<div>),只是单个字符(即.<),它也不会缩进.
我现在能想到的最接近的东西需要按下15-20个按钮.
surround.vim可以用html标签包围,但是只有在使用视觉模式时才会缩进缩进S,ys而不是s在视觉上,这要归功于@RandyMorris.如果使用的运动ys或视觉选择是线性的,它还会在下一行和前一行(不缩进)上放置相同的缩进div .即使这样做也没有yss,所以ysg@<div>j>>如果你真的想要避免视觉模式,你必须使用.
更新:有g:surround_indent和b:surround_indent选项.如果你设置其中任何一个环绕=.vim 将使用缩进包围的文本与周围环境和上面ys没有缩进的混乱将是假的,以及S(S也将使用=).需要filetype indent on和适当的缩进设置.
如果您未设置这些选项,您将看到第一段中描述的行为:S无条件缩进.
是的,环绕确实是要走的路。假设您的光标在第一个上div:
V%j%S<div id="Main"<CR>
Run Code Online (Sandbox Code Playgroud)
或者
V5jS<div id="Main"<CR>
Run Code Online (Sandbox Code Playgroud)
做的伎俩。
根据上下文,整个事情甚至可以缩短为:
Vat<div id="Main"<CR>
Run Code Online (Sandbox Code Playgroud)
这<div id="Main"部分似乎很难跳过。
当然,还有其他方法。
例如,ZenCoding 允许您使用这样的 CSS 语法:
V5j<C-y>,div#Main<CR>
Run Code Online (Sandbox Code Playgroud)
我不知道有什么更快的方法可以得到你想要的东西。
TextMateControlShiftw很好,这是肯定的,但它默认为<p>所以你div id="Main"无论如何都必须输入。