skk.vim で skkserv にアクセスする

eskk.vim の最初の起動で待たされる。きっと辞書の読みこみに時間がかかっているんだろう。せっかく skkserv を動かしているのでこれが利用できたらいいのだが,eskk.vim にも skk.vim にもその機能はないみたい。

で,ちょっと探して anyakichi/skk.vim なるものを見つけた。tyru 版に skkserv 対応などの機能追加がなされたもの。

tyru 版も 2011-01-03 に anyakichi 版をマージしているんだけど skkserv を使うコードは入っていない。anyakichi 版の skkserv のサポートは 2011-04-20 か。まあ skkserv へのアクセスは後述のとおりかなりの力技なので入れたくないのかもしれない。eskk.vim にも入っていないし。

anyakichi 版も 2011-05-30 に tyru 版をマージしている。tyru 版の最終更新は 2011-05-29 なので,現時点では anyakichi 版が「全部入り」だと思っていいのかもしれない。

anyakichi 版の skk.vim の skkserv へのアクセスは Vim に Ruby インタープリタか Python インタープリタが組み込まれていないと動かない。skkserv との TCP ソケット通信を Ruby か Python を使ってするらしい。すげえ力技だな。で,うちの Vim には組み込まれていない(これが既定値)のでビルドしなおし。

で,skk.vim の試用。ちゃんと skkserv に問い合わせて変換された。すげえ。でもこれも最初の起動に少し待たされるな。今まで使ってきた skkfep 内蔵 JVim 3 とちがってスクリプトで動いているからしかたないのかも。

コードを読むと,g:skk_server_host を設定すると skkserv を使うようだ。うちの環境では g:skk_server_portnum = 1178 を明示してやらないと動かない。/etc/services に skkserv がないせいだろう。g:skk_server_encoding は自動判別はないので明示せねばならない(ローカルとサーバがおなじエンコーディングなら空でもいいと思う)。g:skk_client_interface は明示しなくても python か ruby か動くものを選んでくれる。

しかし Ruby インタープリタを使うと skkserv に問い合わせた変換候補が一つ遅れて出てくる。「すずき」を変換すると候補なし(で単語登録モードに),次に「さとう」を変換すると「鈴木」が出て,次に「たなか」を変換すると「砂糖」が出る,というふうに。recv(8192) を gets にしたら直った。作者にメールで伝えておいた。

これでやっと JVim 3 から乗り換えられそう。

ほかは tyru 版でもそうだろうけど,おもに 2012-01-06 最終コミットの最新版 eskk.vim とくらべての感想:

^G で変換をキャンセルできる。

skkfep 内蔵 JVim 3 とちがって,単語登録が ^G で中止できない。ESC か ^C。おぼえなおしか。

読点をカンマにするのが g:skk_kutouten_jp でかんたんにできる。

LC_CTYPE が ja_JP.eucJP の環境でも ja_JP.utf8 の環境でもおなじ設定でちゃんと動いた。

::2012-01-20

update : 2012/01/21 (Sat) 02:14:52