xmleditプラグイン

htmlで自動的に終了タグを挿入してくれるプラグインを探していたときに
xmledit : XML、HTML、SGMLドキュメントのタグ編集操作サポートプラグイン — 名無しのvim使いで発見したのですが、
どうやらインストール方法が変更されているのでメモ。
fedoracoreで試しました。
他OSで使用される場合はパスをそれぞれ置き換えてください。

インストール

http://www.vim.org/scripts/script.php?script_id=301
からxml.vimをダウンロードし、~/.vim/ftplugin/に格納。
~/.vim/ftpluginフォルダが無い場合は作成してください。
.vimrcに

filetype plugin on

が定義されていればxmlファイルを開くと自動的に適用されます。
初回起動時にdocファイルが作成される。(~/.vim/doc/xml-plugin.txt)
このファイルを見るとhtml.vimのsample codeが記載されているので、
これをコピペして ~/.vim/ftplugin/html.vim を作成します。
xml-plugin.txtが作成されない場合はvimを起動して

:source ~/.vim/ftplugin/xml.vim

としてみてください。それでも作成されない場合はがんばって調べて><
あとは

:helptags ~/.vim/doc/

でtagsファイルを更新しておきます。

使ってみる

補完

<hoge>と打ってみると自動的に<hoge></hoge>となります。

タグで囲む

vで文字列を選択し、下のコマンドを入力します。
(<LocalLeader>はdefaultでは"\"です)

<LocalLeader>x

タグ名とアトリビュートを聞かれるので、指定します(空白可)。
ここではタグ名を div、アトリビュートを id="name"と指定したとします。
<div id="name">選択した文字列</div>となります。

タグ削除

削除したいタグにカーソルを合わせ、下のコマンドを入力します。

<LocalLeader>d
対応タグにジャンプ

タグにカーソルを合わせ、下のコマンドを入力します。

<LocalLeader>5

(5は%の代わりじゃないかな)

オプション

デフォルトでは">"が入力されたときに補完されるのですが、
これを変更するには.vimrcに

let xml_tag_completion_map = "<C-l>"

とします。上記設定だとインサートモード時にCTRL-Lで補完してくれるようになります。

またdefaultでは<br>を入力しても<br />にはしてくれませんが、.vimrcに

let xml_use_xhtml = 1

と書くことで<br />と補完してくれるようになります。
他のオプションは :help xml-plugin-settings で参照してください><

コールバック

<hoge>と入力すると</hoge>を補完してくれますが、
例えばhtmlで<body>と入力すると<body bgcolor="white"></body>となってしまいます。
これを自分好みに変更するように設定します。

.vimrcに以下のfunctionを記述します。(sampleです)

"xmlファイルのときに呼ばれる
function XmlAttribCallback(xml_tag)
  if a:xml_tag ==? "hoge"
    return "default=\"attributes\""
  else
    return 0
  endif
endfunction

"htmlファイルのときに呼ばれる
function HtmlAttribCallback(xml_tag)
  if a:xml_tag ==? "a"
    return "href=\"\""
  else
    return 0
  endif
endfunction

このsampleだと、xml編集中に<hoge>を入力すると<hoge default="attributes"></hoge>となり、
html編集中に<a>を入力すると<a href=""></a>となります。
if a:xml_tag ==? "タグ名" を記述して自分好みにカスタマイズしてください。
(:help xml-plugin-callbacks)