emacsでHTMLを編集するモードを比較してみた。
もう5年以上使っているにも関わらず全然使い方を知らなかったりするemacsですが、ようやくきちんと勉強しようと言う気になったので調べてみました。
いままでも、HTMLとかCSSを書くときにもっとemacs使おうと思いつつ、テキストエディタのHTML編集モードやDreamWeaverといった分かりやすいエディタにフラフラ逃げていた訳ですが、今年はモヒカン度合いを高めようと思い、積極的に使って行こうと思います。
なぜviでないかというのはおいておいて。
という訳で、まずはHTML。
emacsでHTMLを書くためのモードはいくつかあり、
- html-mode
- html-helper-mode
- psgml-mode(xml-mode or sgml-mode)
- nxml-mode
- nxhtml-mode
といったあたりがよく使われているかと思います。
一つ一つ見てみましょう。
html-mode
Emacsに標準で入っているモードです。基本的なタグの色分けとタグの補完ができます。
html-modeはあんまり使っていないのでアレなのですが、何も見ないでバリバリHTMLを書けて、補完的にちょっと何かが欲しい、って人には良いかもしれません。
html-helper-mode
html-modeをリッチにして補完するとこうなりますよ、ってモードです。
HTML,XHTMLで必要とするタグのほとんどをキーバインドを使って入力できます。
オライリーから出ているemacs入門を見ると分かるのですが、キーバインドだけで4ページ以上にわたるという拷問的な多さですが、覚えるとかなりのスピートでHTMLを書けます。
この文章もhtml-helper-modeで書いています。
psgml-mode(xml-mode or sgml-mode)
xml-modeないしはsgml-modeの拡張ですね。HTMLを書くかXHTMLを書くかのどっちかでモードが変わります。
DTDを使って逐一パースを行えるため、基本的にパースできるマークアップしか書くことができず、非常に奇麗なHTMLを書くことができます。反面、DTDがないとあまり意味のないモードだったりするので、きちんとW3CからDTDを持って来て設定するのが吉です。
RELAX NGを用いたモードです。タグの補完とパスがそこそこしやすい、といった平均的な部分を押さえたモードです。
nxhtml-mode
これはなかなかヘビーだったなぁ...
PHPのようなHTMLとその他の言語が混じるようなドキュメントを記述するのを前提に作られたモードっぽいです。
一つのドキュメントに複数の言語が混じっていた場合、言語単位での色分けをしてから、テキストの色分けを行ったりします。
詳しくは映像を見てください。
で、リアルタイムでパースやバリデートを行ってくれたり、DreamWeaverライクなタグの補完を行えるのでなかなか便利だったりはしますが、いかんせん動作が重いんですよ...。
設定が不十分なのか環境(iMac/Core 2 Duo + carbon emacs)が非力なのかは分かりませんが、ちょっと常用するのは辛いなぁ...、と思います。
相当感覚的ではありますが、各モードのを表にしてみるとこんな感じです。
| モード | キーバインド | 入力速度 | HTMLの正確さ |
|---|---|---|---|
| html-mode | そこそこ | 多少速い | 入力者に依存 |
| html-helper-mode | 極めて多い | 速い | 入力者に依存 |
| psgml-mode | 少ない | 多少速い | かなり正確 |
| nxml-mode | 少ない | 多少速い | そこそこ正確 |
| nxhtml-mode | 少ない | 多少速い | そこそこ正確 |
...、と、つらつら書いてみました。
大量のHTMLを常に各必要があるのであればhtml-helper-mode、正しいマークアップを行いたいのであればpsgml-mode、マシンパワーがあればxhtml-mode、と行った所でしょうか?