Emacs にある機能のインクリメンタルサーチは非常に便利ですが、 日本語で行なおうとすると、 入力→変換→サーチという手順になるのであまりお手軽ではありません。
Migemo はローマ字入力で日本語の文章をインクリメンタルサーチする優れものです。 しかも、さらに以下のようなことも出来たりします。
以下の説明は Cygwin が既にインストールされていること を前提にしています。
まずは APEL をインストールしましょう。 方法については別のページに書いています。
Windows では Ruby のバイナリパッケージは 3 種類 (Cygwin, Mingw, MSVC)存在します。 このページの説明は、 Cygwin 版をインストールすること を前提としています。他のバイナリでは設定が若干異なるかもしれません。
Cygwin 版を利用する場合のインストールは簡単です。 Ruby は Cygwin のパッケージに組み込まれていますので、 Cygwin の setup.exe を実行して、ruby パッケージをインストールしてください。 自力でインストールする場合は、 Ruby インストールガイド を参考にしてください。
パッケージを展開して、ファイル bsearch.rb をコピーします。
$ cp bsearch.rb /usr/lib/ruby/site_ruby
site_ruby ディレクトリがない場合は作成しておきましょう。
パッケージを展開して、ファイル romkan.rb をコピーします。
$ cp romkan.rb /usr/lib/ruby/site_ruby
以下のように configure スクリプトを実行した後 make で作成できます。 (Meadow のインストールパスに応じて適当に修正しましょう)
$ configure --with-emacs=d:/usr/local/Meadow/1.15/bin/MeadowNT.exe\ $ --with-lispdir=d:/usr/local/Meadow/1.15/site-lisp$ make $ make install
これでインストール完了です。
なお、 0.32 までは migemo スクリプトの修正が必要でしたが、現在はそのまま利用できます。
.emacs の設定に移る前に Migemo の動作確認をします。
下記のようにコマンドを実行すると入力待ちになりますので、 何か適当なアルファベットを入力してみましょう。 すると、変換結果が出力されます。 以下はシェルから migemo コマンドを実行し、 mig と入力した場合です。
$ migemo /usr/local/share/migemo/migemo-dict mig [)」』】>→⇒右研三汀頻磨砌]|3[つ日]|mig|3[つ日]|mig|み[がぎぐげごっ]|マイ グレ(ー(ト|ション)|イ(ト|ション))|ミ[ガギグゲゴッ]|移送|見([苦頃殺事柄]|応え)|身 ([軽構代柄]|固め|勝手|拵え)|未学習|密[会教航告使室集書生接栓葬送着通偵封蔽閉]
DOS 窓など SJIS しか受け付けない環境で実行すると文字化けします。 文字化けで読めなくても、 | がところどころ混った文字が出力されるので大体分かると思います。
以前のバージョンでは t, to 等の入力で ruby がエラーを出力したのですが、 現在は問題が解消しています。
続いて、migemo が Meadow から起動できるようになっているかどうかを確認します。 Meadow から migemo が起動できるかどうか確認するために DOS 窓から migemo を起動します。
>ruby -S migemo Usage: migemo [OPTION] -h, --help Display this help and exit. -d, --static-dict=DICT Use DICT as a static dictionary.(中略)-l, --logging=FILE Log patterns to FILE.
ruby と migemo の双方にパスが通っていれば上のように DOS 窓から起動することができます。 起動できない場合は環境変数 PATH を適切に設定してください。
.emacs に以下を記述します。
(setq migemo-directory"d:/cygwin/usr/local/share/migemo");; ↑ /usr/local/share/migemo を Windows パス形式に変換したもの(load "migemo")
初回のサーチでは migemo を起動する時間の分だけレスポンスが遅れます。 それが気になるという場合は、以下を追加しましょう。
(migemo-init)
t, to の検索ができるようになっているので、追加設定は必要なくなりました。
Meadow と同じ設定で動作するようになりました。
普通に C-s (isearch-forward)、
C-r (isearch-backward) で検索しましょう。
それだけで
Migemo を用いたローマ字での検索が有効になっているはずです。
検索中に C-e で
migemo の有効/無効が切り替わります。
また、検索時以外では
M-x migemo-toggle-isearch-enable
を実行した場合に Migemo の有効/無効が切り替わります。
一時的に従来のサーチで検索したいという場合には
C-u C-s や
C-u C-r による正規表現の検索で代用できます。
Migemo 0.40 から連文節に対応した検索が可能になっています。 連文節の指定は文節の変り目を大文字で指定することにより行ないます。 つまり「連文節の検索」ならば、 "renbunsetsuNoKensaku" 等と入力することにより検索できます。 SKK と同様の方法なので、SKK を使っている人はすぐ馴染めるはずです。
Migemo は便利なんですが、Emacs が migemo コマンドと通信しているため、 どうしても処理が遅くなります。 UNIX 系の OS 上で使う場合はそこそこのマシンなら気にならないですが、 Windows 上ではプロセス周りが遅いせいか、 UNIX 上でなら普通に動作するような CPU でも、 モタツキを(場合によってはかなり)感じることがあります。
そこで、Emacs 側で migemo コマンドの結果をキャッシュして高速化させる処理が搭載されています。 速い CPU を積んでいる環境ではあまり効果はないと思いますが、 もたつき感を感じる環境では効果があると思います。
なお、設定を行なう場合は、
通常の検索が動作するようになってから設定を行なうことをお勧めします。
さもないと、間違った結果がキャッシュされてしまいます。
また、設定を変更した場合にキャッシュを消さないと、
前の設定の影響が残るので注意が必要です。
migemo-user-pattern-alist を t にすると
検索時に実行した migemo コマンドの結果をキャッシュします。
(setq migemo-use-pattern-alist t)
キャッシュした結果は、
デフォルトで ~/.migemo-pattern に格納されます。
また、変数 migemo-pattern-alist-length
を設定することにより、キャッシュされる結果の数を増減させることができます。
migemo-use-frequent-pattern-alist
を t にすると、良く使われるパターンがキャッシュされるようになります。
(setq migemo-use-frequent-pattern-alist t)
良く使われるパターンについては、インストール時には用意されていないので、
自分で作成します。
M-x migemo-frequent-pattern-make
を実行することにより、パターンを作成します。
ミニバッファで以下のようにファイル名を尋ねられるので、
良く使われるパターンを記述したファイルを指定します。
frequent-chars: ~/
Migemo パッケージに含まれる frequent-chars ファイルを指定すると、 サーチ開始時の 1,2 文字目の入力時のレスポンスが改善されます。 また、 これ以外でも同様のフォーマットで作成したファイルを指定することができます。
作成された結果はデフォルトで
~/.migemo-frequent に保存されます。