Vim の Sparkup プラグインで HTML タグを Zen Coding 風に簡単入力
Vim プラグインの Sparkup (rstacruz’s sparkup at master – GitHub) で、CSS セレクタ風の記述から HTML タグ文字列を入力することができる。(zen-coding 風の入力)
プラグインのインストールは上記サイトからダウンロードしたファイル内の vim/ftplugin/ 内のファイルを ~/.vim/ftplugin/ にコピーする。
プラグインの実行には python2.5 以上が必要。
<c-e> を押すことで、タグキーワード(div
, h1
, img
, meta
等)から開始タグ・終了タグ・各種属性を自動で入力できる。
<c-n> を押すことでカーソルを次の入力位置に移動できる。
CSS 風のセレクタ表記を使ったショートカット文字列から HTML タグ文字列に展開される。
タグ単体の入力
タグキーワードを入力して <c-e> を押す。
div <= <c-e> を押す <div></div>
属性値を含めて入力
id
の場合は #
、class
の場合は .
でタグキーワードと属性値を繋ぐ。
タグを省略した場合は div
タグとして処理される。
div#hoge.foo <= id が hoge, class が foo の div タグ <div class="foo" id="hoge"></div>
その他の属性値の場合は属性名を指定する。
a[href=http://www.google.com/].foo#hoge <= id が hoge, class が foo の Google へのリンク <a href="http://www.google.com/" class="foo" id="hoge"></a> img[width][height][title=テスト] <= width, height 属性を持ち title テキストが"テスト"の img タグ <img width="" src="" height="" alt="" title="テスト" />
タグに囲まれたテキスト
タグに囲まれたテキストは {}
で囲んだテキストを繋ぐ。
a[href]{This is link test} <a href="">This is link test</a>
子要素を含めて入力
子要素を含めて入力する場合は、子要素を >
で繋ぐ。
div > span.wrap <= class が wrap の span タグを子要素に持つ div タグ <div> <span class="wrap"></span> </div>
要素を連続して入力
要素を連続して複数入力する場合は、要素名の後に *n
のようにして *
と要素数を記述する。
select > option*4 <= 4つの option タグを持つ select タグを入力 <select name=""> <option value=""></option> <option value=""></option> <option value=""></option> <option value=""></option> </select>
連続して入力するタグに連番を使った処理を加える
連続して入力するタグに $
の記述を追加すると連番に展開される。
select > option[value=$].item-$*5 <= 5つの option タグの value と class に連番を加える <select name=""> <option class="item-1" value="1"></option> <option class="item-2" value="2"></option> <option class="item-3" value="3"></option> <option class="item-4" value="4"></option> <option class="item-5" value="5"></option> </select>
隣接した異るタグを入力する
同じ階層の隣接した異なるタグ(タグ自身や属性の相違)を続けて入力するには +
で各タグを繋いていく。
p.foo + p.hoge + img <p class="foo"></p> <p class="hoge"></p> <img src="" alt="" />
階層を1つ上に戻す
<
を使うことで1度掘り下がった階層を1つ上に戻すことができる。
div > ul > li.items*3 < p.foot < #foot <div> <ul> <li class="items"></li> <li class="items"></li> <li class="items"></li> </ul> <p class="foot"></p> </div> <div id="foot"></div>
少し複雑なテーブルを作る
table[border=1] > tr*3 > th.title{TITEL} + td*2{CONTENTS} + td.foot{FOOTER} < tr > th.foot[colspan=4]{FOOTER} <table cellspacing="0" border="1"> <tr> <th class="title">TITEL</th> <td>CONTENTS</td> <td>CONTENTS</td> <td class="foot">FOOTER</td> </tr> <tr> <th class="title">TITEL</th> <td>CONTENTS</td> <td>CONTENTS</td> <td class="foot">FOOTER</td> </tr> <tr> <th class="title">TITEL</th> <td>CONTENTS</td> <td>CONTENTS</td> <td class="foot">FOOTER</td> </tr> <tr> <th colspan="4" class="foot">FOOTER</th> </tr> </table>
TITEL | CONTENTS | CONTENTS | FOOTER |
---|---|---|---|
TITEL | CONTENTS | CONTENTS | FOOTER |
TITEL | CONTENTS | CONTENTS | FOOTER |
FOOTER |
HTML タグ・テンプレートの入力
各 DOCTYPE 宣言を含んだ HTML タグ・テンプレート を入力する。
html:
の後に各 DOCTYPE 宣言のショートカット文字列(type)を記述する。
html:type
各 DOCTYPE 宣言とショートカットの一覧
- HTML 4.01 Transitional
html:4t
- HTML 4.0.1 Strict
html:4s
- XHTML 1.0 Transitional
html:xt
- XHTML 1.0 Strict
html:xs
- XHTML 1.1
html:xxs
- HTML 5
html:5
入力例
以下の例では lang
属性が ja
になるように ~/vim/ftplugin/html/sparkup.py ファイルを修正している。
html:5 <c-e> を押すと以下のタグが入力される <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title></title> </head> <body> </body> </html>
IE 用条件付きコメント分岐タグ
cc:
の後に IE の各バージョンを表わす文字列(type)を記述する。
cc:type
IE の各バージョンとショートカットの一覧
- IE (全てのバージョン)
cc:ie
- IE6 以下
cc:ie6
- IE7 以下
cc:ie7
- IE以外
cc:noie
入力例
cc:ie <c-e> を押すと以下のタグが入力される <!--[if IE]><![endif]-->
その他
その他、入力フォーム・メタタグ・スクリプトタグの入力ショートカットや、入力ショートカットの省略形などが定義されている。
詳細は ~/.vim/ftplugin/html/sparkup.py のコードを参照する。
追記:コードを参照してショートカットを調べるのが面倒なので vim のヘルプファイルを作りました。
sparkup-keys-help.zip
追記:CSS 用の Zen Coding Vim Script を作りました。zencodingcss.vim (Vim Scirpt)
参考サイト:rstacruz’s sparkup at master – GitHub
YouTube – Sparkup with MacVIM