Vim Advent Calendar 2013: KaoriYa 版 Vim の +migemo を試してみた
この記事は Vim Advent Calendar 2013 76日目の記事になります。
バレンタインデーネタとか全くないです。
さて、最近 migemo でインクリメンタルサーチしたいなーと思っていたんですが KaoriYa 版 Vim にそういう機能が組み込まれているそうなので簡単に試してみました。
ちなみに Vim において migemo がどういう扱いになっているのかはよくわかっていません。
(パッチがあるのかとか KaoriYa 版以外の Vim で利用できるのか etc...
[インストール]
以下のページから migemo の dll や辞書ファイルなどをダウンロードします。
ダウンロードが終わったら以下の手順に従い Vim に組み込みます。
インストール手順
以下の説明ではVimをインストールした(gvim.exeの置いてある)ディレクトリを$VIM
と表記しています。必要ならば各自の環境に読み替えてください。1. migemo.dllをインストールする
migemo.dllをgvim.exeと同じディレクトリに置きます。同じディレクトリでなくて
も環境変数PATHに含まれる場所のどれかであれば構いません。
2. スクリプト(migemo.vim)をインストールする
runtime/plugin/migemo.vimを$VIM/runtime/plugin/に置きます。この作業は同梱
のruntimeディレクトリを$VIMへ上書きコピーすれば完了できます。関係の無い
ファイルはまったく触らず上書きできますので安心して上書きコピーしてくださ
い。その他、個人ディレクトリvimfiles/pluginに置くこともできます。
3. 辞書ファイルをインストールする
$VIM/dictというディレクトリを作り、migemo-dict、roma2hira.dat、han2zen.dat
そしてhira2kata.datを置きます。この作業は同梱のdictディレクトリを$VIMへ上
書きコピーすれば完了できます。関係の無いファイルはまったく触らず上書きでき
ますので安心して上書きコピーしてください。つまりのアーカイブに含まれる全てのファイルとディレクトリを$VIMへコピーすれば
https://github.com/koron/cmigemo/blob/master/doc/vimigemo.txt
インストールは完了します。
[動作確認]
echo has("migemo")
で、1 が返ってくれば migemo の機能を利用することができます。
試しに migemo() を利用してローマ字から日本語にマッチする正規表現を取得してみると
" ローマ字から日本語にマッチする正規表現を返す echo migemo("miku") " => \%(μ\|ミ\_s*ク\|皇\_s*國\|三\_s*\%([隈口国國雲]\|行\_s*半\|下\_s*\%(半\|り\_s*半\)\)\|見\_s*[下比較]\|御\_s*\%([國国車厨]\|蔵\_s*島\)\|ミ\_s*ク\|未\_s*来\|美\_s*[来久]\|み\_s*く\|m\_s*i\_s*k\_s*u\|m\_s*i\_s*k\_s*u\)
という風に動作することがわかります。
ちなみに、migemo() 組み込み関数ですが、has("migemo") が 0 の時にこの関数を呼び出すと Vim がぶっ壊れるので注意して下さい。
試しに呼び出してみたらステータスラインが文字化けしてビビった。