vi and Japanese

vi コマンドに f、F、t、T がある。これらのキーを押すとさらに 1 文字入力を求められ、カーソル位置から最も近いその文字のところへカーソルがジャンプする。非常に良くできた機能。

なのだが、日本語との相性は非常に悪い。vim では 1 文字入力待ちの状態で IME をオンにして……ということ自体はできるのだが、それでもまだるっこしい。

これ、ひらがな・カタカナ・漢字についてローマ字の読み、Latin-1 に基本形を持つ全角文字のその基本形、などを内部的に持っておいて、それを利用できないか。つまり「日本語の文章」の先頭にカーソルがあるとき、[cci]fb[/cci] と押せば「文」のところにカーソルが飛んでくというイメージ。若干 migemo と考え方は似ている。

問題は、どうやってローマ字の読みを得るかだ。ネイティブアプリなら、IME が提供する再変換 API で読みを得られるだろう。または MeCab のようなものを呼び出してもいい。しかし wasavi では無理だ。そういう web サービスはいくつかないこともないが:

しかしコマンドを実行するごとにネットワークアクセスが発生するのはなかなかに富豪的すぎる。何とかローカルのデータでもてないか。しかもできるだけコンパクトに。

Unicode の仕様の中に、unihan というものがある。これは CJK Ideograph、いわゆる漢字についてのさまざまな情報を集めたものだ。その中に、Unicode に収められている漢字について訓読みと音読みを定義しているデータベース Unihan_Readings.txt がある。例えばこんな感じ:

㞮 kJapaneseKun DERU DASU
㞮 kJapaneseOn SHUTSU SUI
㡡 kJapaneseKun TOBARI KAYA
㡡 kJapaneseOn CHU JIU
一 kJapaneseKun HITOTSU HITOTABI HAJIME
一 kJapaneseOn ICHI ITSU

これを元にぎゅっとつめ、せいぜい数十~数百 KB 程度のデータにならないかな。

Leave a Reply

Your email address will not be published. Required fields are marked *