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とSurround.vim を使用できますが、 Surround.vim が単語 (ie. ) で囲まれているとは思いません。<div>単一の文字 (ie. <) だけで、インデントもありません。

私が今思いつく最も近いものは、ボタンを 15 ~ 20 回押すことです。

4

2 に答える 2

9

surround.vimhtmlタグで囲むことができますが、 @RandyMorrisのおかげで、ビジュアルモードではなく、ビジュアルモードから使用する場合にのみインデントをインデントしません。また、使用されたモーションまたは視覚的な選択が行単位である場合、次の行と前の行に同じインデントされた div を配置します (インデントなし) 。ではこれさえ行わないので、本当にビジュアル モードを避けたい場合は使用する必要があります。Syssysyssysg@<div>j>>

更新:オプションがg:surround_indentありb:surround_indentます。それらのいずれかを設定すると=、 Surround.vim は囲まれたテキストをその周囲でインデントするために使用され、ysインデントされていない上記の混乱は false と同様に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>

あなたが望むものを手に入れるためのより速い方法を私は知りません。

TextMate のControlShiftw機能は確かに優れていましたが、デフォルトでは に設定されて<p>いるため、div id="Main"とにかく入力する必要があります。

于 2012-11-12T20:20:05.240 に答える