表題通り。<img />とか<br />とかしたい。
zen-coding.vimの時はなんとでもなってたのだけれど、emmet.vimに変えてからなんともならなかったので、力技でなんとなく対処。
参考:https://github.com/mattn/emmet-vim/issues/161
参考URLを見ると、.vimに
let g:emmet_html5 = 0
としろ、とある。単にhtml5設定を解除するということだと思うのだけど、当たり前だけどこれをやると今度はhtml5を書くときにも閉じタグがついてしまう。
なので、わたしは香り屋版vimを入れてほとんどそのまま使っていたので、filetype.vimを開くと、大体、857行目くらいにhtmlのfiletype設定がある。
これがありがたいことに、html, xhtml, Djangoの判別関数つきだったので、それを少し変える。
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm,*.ejs call s:FThtml() " Distinguish between HTML, XHTML and Django func! s:FThtml() let n = 1 while n < 10 && n < line("$") if getline(n) =~ '\<DTD\s\+XHTML\s' setf xhtml let g:emmet_html5 = 0 return endif if getline(n) =~ '{%\s*\(extends\|block\|load\)\>' setf htmldjango return endif let n = n + 1 endwhile let g:emmet_html5 = 1 setf html endfunc
xhtml宣言が見えたらファイルタイプをxhtmlにする~というような記述があったらg:emmet_html5に0を代入してやる。
ただ、動かしてみると分かるのだけれど、こうやって記述しても、一つのプロセスでxhtmlとhtmlを両方開いた場合、どちらか一方にしかならない(html時の1代入をなしにした場合は全てxhtmlになる)。
これは恐らく、g:emmet_html5に0が代入されたらその時点でxhtmlモードにする、と言う風になっているのだろうと思う(そうでなくてもこの書き方の場合、ファイルを開かないでbufferを変えただけ、などでは正常に動かないと思う)。
vim scriptは全然分からないし、xhtmlとhtmlを同時に編集することはあまり多くないので、とりあえずこれで暫定対処。