モードレスな日本語入力方法 vim-mlh を作っている

追記(2012-5-1) undo周り強化、再変換機能追加した
文字入力中にundoしたくなる時とかよくあったし、diwとかciwとかbとか使いやすいので
undoの履歴にローマ字を入れるようにした!
これによって再変換とかが容易になった!

追記(2012-4-30)
アップデートした!
skk.vimSKK-JISYO.Lを用意して、
以下を.vimrc に追加してやれば、

let g:skk_control_j_key = ""
let g:skk_large_jisyo = "$HOME/local/dict/SKK-JISYO.L"

skk-jisyoの候補がでるようにした!
便利!これでgoogleTransliterateAPIが厳しめにちょっとしか候補返さなくても
skk辞書から引っ張ってこれるのでいい感じ。
名前とかでも多分大丈夫!まだ全然使ってないけど!
詳しい方法はdocを見てね。
https://github.com/vimtaku/vim-mlh

追記(2012-2-11)
なぜかたまに変換できないという完全に致命的なバグを直した!
unite.vimを使っているときは動作しないようにした!


追記(2011-12-31)
変換方法が変わります。/だけだったらpathとか打つときに色々困るので
/で変換が走るようにします。っていうかもともとmlhはそのようでした。


これは何?
vimで日本語を入力するときに直接入力とかな入力を
意識しないで日本語を入力することのできる
モードレス日本語変換ツールです。

モトネタはこの辺
http://axion.ee.uec.ac.jp/japanese/tools/emacs/mlh.html

具体的には
nihonngowonyuuryokusitaidesu
などとローマ字で入力したあとに
/を入力することによって
「日本語を入力したいです」に
変換することができます。
モードレスとかいっておきながらでmlhをオンにしないといけません。
この辺はもうちょっと考える余地があります。

vimテキストエディタです。
と、半角を含む文字列を打ちたい場合は
vimq/hatekisutoedhitadesu./とすればオッケーです。

動画
firefoxで見れない疑惑
http://dl.dropbox.com/u/45612210/vim_mlh_movie.m4v


背景
コレを作るに当たってemacsにはmlhというメチャクチャマイナーな
インプットメソッドがあると@shmorimoさんに聞いて
vimで作ればいいじゃないと言われたのでつくってみました。

メリット
- コレを使うことで日本語の直接入力とカナ変換をいちいちする必要が無い!

気をつけなければならないこと
- google日本語(webapi)に頼っているのでネット環境がないとうごかない
- vim7.3のパッチをキチンと当てないと補完が何故か二つ目に行ってしまって全く使いものにならない(パッチを当てればオッケー)
- タイピングが正確な人じゃないとおそらく使いこなすのは難しい
- utf8 のことしか考えていません


謝らなければならないこと
- vimscriptのいろはを分かっているわけではないので爆発しろなコードがたぶんたくさん
- mattn_jpさんの書いていたgoogletranslate.vimを盛大にパクっている
- kaoriyaさんの書いていた日本語とアルファベットの対応辞書を盛大にパクッている
- 自分で改変もしている


モードレスについての考え方
vimはmodeが美学でmodelessなのは何がいいのかと言われそうですが僕はそれぞれの良さがあると思っています。
ソースを書く時は 文字列を盛大にコピーしたり行を消したり結構色々なことをやらなければなりません。
そんな時は入力するときは入力するとき用のモードで、移動するときはnormal modeというようになっていたほうが
圧倒的に便利だと思っています。
それに比べて入力、および変換に関しては単純なこと動作しか必要としていないので
日本語入力と直接入力をいちいち切り替えるのは結構手間かなと思います。


ソースコード
https://github.com/vimtaku/vim-mlh
※要web-api.vim

今後のTODO
- 沢山のバグフックス
- google日本語入力を普通にサーバ立ててやる方法を模索する
- ネオコン連携とかできたらいいかも


所感
使ってみてくれたら嬉しいです!
skk は便利と聞きますが僕は入力はよりシンプルのほうがいいと思っています。
頭で入力する文字を考えて打つより高確率で自分の求めるモノを予測してもらえた方が
簡単なのではないかと考える為です。
skk はなれるまで使っていないのでなんとも言えませんが
vim-mlhはきちんと使えば(作れば)ものすごくいい物になるんじゃないかなと思いました。
クオリティ上がればもっと使うのにとか
モットこういう機能がほしい!とかあったら頑張ります!
(いまは最低限のものしかいないし)

Vim Advent Calender2011 で行ったほうがいいか迷ったけど
まぁイイじゃないと思って書いている。後悔はしないぜ
結局vimとイチャラブXmasイブ...