C/Migemo with utf-8 dictionary for Windows
Vim 7.2 の件 ( http://d.hatena.ne.jp/janus_wel/20090311/1236852798 ) と連動してというか Kaoriya さんとこを覗いたきっかけは C/Migemo だったんだけど ( vimp と同じように検索に Migemo を使いたいという歴史的には逆行している動機から ) 、配布されている dll package に同梱の辞書だと 'encoding' option を utf-8 にしてる場合使えなかったので自前で compile してみた経緯。対象は Windows の vim user だけど辞書の compile だけなら無理に Windows で頑張るよりも andLinux をいれてそちらで辞書 file を作って Windows 側に copy するという方法の方が絶対に速いと思うのでその方法も後述 ( [url] ) 。
まず Windows 側で頑張る場合。下準備からして地獄だぜ。
- C/Migemo の Windows 用 dll package をインスコ ( http://www.kaoriya.net/#CMIGEMO ) 。同梱の vimigemo.txt は超しんせつなのでとりあえず読むべき。
- nmake.exe を手に入れる
- 手っ取り早く、かつ今後を考えると Visual Studio 2008 Express Edition ( http://www.microsoft.com/japan/msdn/vstudio/Express/ ) の VC++ ( http://go.microsoft.com/?LinkId=9348304 ) をインスコしてしまうのが一番楽。
- さすがにそれはちょっと…、というひとは適当にもってきて path 通しておいてください。
- ActivePerl ( http://www.activestate.com/activeperl/ ) インスコ。
- TortoiseSVN ( http://tortoisesvn.tigris.org/ ) か Lhaplus ( http://tortoisesvn.tigris.org/ ) インスコ。
- 以下を落としてきてそれぞれ path を通しておく ( すべて別々に path 通すのはめんどくさいので My Documents 以下に bin folder とか作っておいてそこに path を通して binary だけ放り込むというのが楽 ) 。
- curl.exe ( http://www.kaoriya.net/#CHALICE の下の方から )
- gzip.exe ( http://www.gzip.org/ )
- nkf.exe ( http://www.vector.co.jp/soft/win95/util/se295331.html )
- iconv.exe ( http://www.kaoriya.net/#LIBICONV )
- source code 取得。以降 source code のある場所 ( check out した directory か解凍して出来た directory ) を %CMIGEMO% とする。
- 上記で TortoiseSVN を選んだ場合適当な folder で右 click -> SVN Checkout... で http://cvs.kaoriya.net/svn/CMigemo/branches/dev-1_3 から check out 。
- Lhaplus を選んだ場合 http://www.kaoriya.net/#CMIGEMO から「ソースコード 1.3(予定) 開発版」を落としてきて解凍する。
- %CMIGEMO%\config.mk を編集。
- FILTER_CP932 と FILTER_EUCJP の comment out を qkc と書いてある方にする ( nkf を使うってこと ) 。実際の編集内容はこの entry の一番最後に。
- 「ファイル名を指定して実行」とかから cmd.exe /f:on とかして command prompt を起動。 "/f:on" は Ctrl+F で補完が効くようになる option ( 事前に窓使いの憂鬱とかで Tab key を Ctrl+F として定義しとくとさらに使い勝手がよくなる ) 。
- Visual Studio を install した場合 command prompt で C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat ( default install した場合 ) を実行しておく。
- cd %CMIGEMO%
- nmake msvc-dict
- cd dict
- nmake euc-jp
- %CMIGEMO%\dict\utf-8.d と %CMIGEMO%\dict\euc-jp.d という folder の中に以下の file が出来ていれば OK 。 utf-8 は日本語だと一文字につき 3 byte 使うから file syze おおきくなります ?
- han2zen.dat
- hira2kata.dat
- roma2hira.dat
- zen2han.dat
- migemo_dict
- あとは $VIM\dict 以下に辞書を仕込めばいい。うちは念のため encoding 3 種類の辞書を directory で分けて持って ( 既存の辞書 file を cp932.d に移してる ) 'migemodict' option に utf-8 版を指定してる。こうすると 'encoding' に応じて 'migemodict' を変えるだけで使えるようになるのでやむをえない場合でも C/Migemo が使えてよいハズ ( 開発中の 1.3 版だと自動的に切り替えてくれるらしいんだけど VS2008E VC++ だと build は成功するものの実際に使うと vim ごと落ちる、ので配布されてる 1.2 の binary で誤魔化す方向 ) 。
" C/Migemo if has('migemo') set migemo set migemodict=$VIM/dict/utf-8.d/migemo-dict endif
以上で Windows に関しては終了。あー config.mk の編集に関しては以下のような感じに。上が before で下が after ね。
FILTER_CP932 = qkc -q -u -s FILTER_EUCJP = qkc -q -u -e FILTER_UTF8 = iconv -t utf-8 -f cp932 #FILTER_CP932 = nkf -s #FILTER_EUCJP = nkf -e
#FILTER_CP932 = qkc -q -u -s #FILTER_EUCJP = qkc -q -u -e FILTER_UTF8 = iconv -t utf-8 -f cp932 FILTER_CP932 = nkf -s FILTER_EUCJP = nkf -e