4

我希望能够用其他标签快速包装我的 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环绕.vim,但我不相信环绕.vim 用单词(即。<div>)包围,只是单个字符(即。<),它也不缩进。

我现在能想到的最接近的事情需要按下 15-20 次按钮。

4

2 回答 2

9

surround.vim可以用 html 标签包围,但它不会缩进只有在S从可视模式使用时才缩进,ys而不是s在可视模式下,这要归功于@RandyMorris。ys如果使用的运动或视觉选择是逐行的,它还会在下一行和上一行(不缩进)上放置相同缩进的 div 。甚至不这样做yss,所以ysg@<div>j>>如果你真的想避免视觉模式,你必须使用。

更新:有g:surround_indentb:surround_indent选项。如果你设置其中的任何一个,surround.vim 将使用=它来缩进被包围的文本及其周围,上面ys没有缩进的混乱将是错误的,以及S(S也将使用=)。需要filetype indent on和正确的缩进设置。

如果您不设置这些选项,您将看到第一段中描述的行为:S无条件缩进。

于 2012-11-12T18:53:42.937 回答
6

是的,环绕确实是要走的路。假设您的光标位于第一个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>

我不知道有什么更快的方法可以得到你想要的。

TextMateControlShiftw很好,这是肯定的,但它默认为,所以无论如何<p>你都必须输入。div id="Main"

于 2012-11-12T20:20:05.240 回答