Vim and IME

最近日本語の文章をちょっと多めに書く機会がある。そのために端末上の vim を使っているわけなのだが。

いまさら書くまでもないのだが、vi と IME を経由した入力の相性はとっても悪い。特に、ノーマルモードにいる状態で IME がオンになっている場合にぐぬぬとなる。せめてこれだけでもなんとかならないのだろうか。

IME が fcitx 上で動いている場合、[cci]/usr/bin/fcitx-remote[/cci] コマンドによって IME の状態を操作することができる。なので、vim のそれっぽいイベントに自動コマンドを引っ掛けて fcitx-remote を適当に呼んでやる。

autocmd InsertLeave * silent! !fcitx-remote -c

こうすると insert モードを抜けた時、必ず IME がオフになる。これでいくらかましになるかなー。

ちなみに wasavi の場合、ノーマルモードに戻るとやはり自動的に IME が無効になるようにしてある。実はノーマルモードでキーボード入力を受けるのは、隠された input[type=”password”] 要素なのだ。大抵のブラウザが、この要素がアクティブなときは IME を無効にすることを利用している。

残念ながら、IME の状態を直接的に制御するような API は javascript にはまだない。

Leave a Reply

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