migemoはEmacs上で日本語のインクリメンタルサーチを快適にしてくれるものです。 ローマ字入力のまま日本語をインクリメンタルサーチできるのです。
例えば「ローマ字」という語をインクリメンタルサーチするのに”romaji”とキー入力すれば良いのです。
目次
Emacsからmigemoを使うには migemo.elと正規表現を生成するライブラリが必要
migemoは、ローマ字入力の検索文字列から日本語を含む正規表現を生成して、その正規表現でインクリメンタルサーチを実現するものです。
そのため正規表現を生成するライブラリと、Emacsと通信するEmacs Lispが必要です。
正規表現を生成するライブラリは当初はRuby/Migemoを使うものでしたが、C/Migemoが出来てからはC/Migemoを使うのが主流のようです。
C/MigemoとEmacsを通信するEmacs Lispはmigemo.elです。
大雑把な関係は下の図のような感じです。
CygwinのEmacsでC/Migemoを使うにはCygwin上でビルドする必要がある
ところで、CygwinのEmacsでmigemoを使うには、Cygwin上でC/Migemoをビルドする必要があります。
C/Migemoの開発元であるKaoriYaさん ではWindows nativeでビルドされたバイナリが配布されていますが、残念ながらCygwin上では上手く動きません。 (少なくともぼくのCygwin環境では動きませんでした…。Windowsのコマンドプロンプトからはちゃんと動きますよ。)
ここでは、CygwinでのC/MigemoのビルドとEmacsの設定について説明します。
nkfのインストール
C/Migemoのビルドには nkf か qkc のいずれかが必要です。ぼくは使い慣れているnkfをインストールしました。
https://ja.osdn.net/projects/nkf/ からnkfのソースコードをダウンロードします。 ぼくがダウンロードしたのはversion 2.1.4 でした。
tar xvf nkf-2.1.4.tar.gz make make install
C/Migemoのインストール
ソースコードを https://github.com/koron/cmigemo からダウンロードします。
zipファイルを展開します。その後は展開したディレクトリにある cmigemo-master/doc/README_j.txtの通りに実行します:
./configure make cyg make cyg-dict make cyg-install
dictの場所は
/usr/local/share/migemo/utf-8/migemo-dict
になります。
動作確認した例を下に示します。romaと入力した結果です:
~$ cmigemo.exe -d /usr/local/share/migemo/utf-8/migemo-dict -e migemo_open("/usr/local/share/migemo/utf-8/migemo-dict")=0x6000003c0 clock()=0.093000 QUERY: roma PATTERN: \(ロ\s-*マ\|浪\s-*漫\|ろ\s-*ま\|r\s-*o\s-*m\s-*a\|ル\s-*ー\s-*マ\s-*ニ\s-*ア\|羅\s-*馬\|ロ\s-*\(マ\|ー\s-*マ\)\|r\s-*o\s-*m\s-*a\) QUERY:
migemo.elのインストール
https://github.com/emacs-jp/migemo からダウンロードしてload-pathのどこかに置くか、または M-x package-install (RETURN) migemo (RETURN)でインストールします。
設定
~/.emacs.d/init.el には下のように書いておきます。
(load "migemo") (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8) (migemo-init)
(setq migemo-coding-system ‘utf-8)がないと上手く動かないようです。
migemoを動かしている例
実際にmigemoを動かしている例を下に示します。
C-sでミニバッファーの”I-search”の表示のまえに[MIGEMO]となっています。これでmigemoが有効になっていることが分かります。
このインクリメンタルサーチの例では”kokumin”とローマ字で入れています。バッファーでは漢字の「国民」にマッチしているのが分かります。
migemoを使うと日本語のインクリメンタルサーチがとても快適です。もう手放せないですよ。