Emacs ユーザの皆さん、migemo つかっていますか? migemo はローマ字のまま日本語をインクリメンタル検索するためのツールです。
例えばテキスト中に「富士山」という単語があるとして、これをインクリメンタルサーチ (Ctrl-s) で検索したいとします。普通は「Ctrl-s 富士山」としますよね。Ctl-s 押した後、IME の 日本語入力を有効にして富士山と入力するわけですね。ちょっと面倒です。ここで素敵ツール migemo を使うと「Ctrl-s fujisan」でヒットするようになります。漢字の検索をローマ字のままできるんです!もちろん、ひらがなカタカナもローマ字のままいけます!
こんな感じです。下部のエコーエリアに「I-search fujisan」とあり、漢字の「富士山」がヒットしているのがわかると思います。

C-s fujisan で「富士山」を検索
この migemo ですが、 Linux をお使いなら下記のるびきちさんの記事をそのまま実行すれば簡単に使えます。

Windows でもほぼ同じなんですが、ちょっとはまることもあるので、このページで説明します。
(上記の記事には目を通しておいてくださいね、数分で読める分量です)
cmigemo 本体を Windows にインストール
下記のサイトから、ご使用の OS の bit数(32 or 64bit)に合わせたものをダウンロードしてください。
https://www.kaoriya.net/software/cmigemo/
ダウンロードしたzipファイルを展開してえられる cmigemo-default-win64 を任意の場所においてください。
今回は例として C:/Programs/ の下に cmigemo-default-win64 を置きます。
(ちなみに32bit OS の場合はデフォルトで cmigemo-default-win32 という名前になります)
Emacs に cmigemo.el をインストール
パッケージ化されているので下記を実行するだけでOKです。
M-x package-install migemo
cmigemo の辞書を Emacs が見れるようにする
cmigemo の辞書ファイルを Emacs からみれるようにコピーします。
辞書データのあるディレクトリの
C:\programs\cmigemo-default-win64\dict\
を
C:\Users\username\AppData\Roaming\.emacs.d\conf\migemo\
へコピーしてください。
環境変数 PATH の設定
環境変数 PATH に cmigemo.exe があるディレクトリを追加してください。今回の例では下記の場所ですね。
C:\programs\cmigemo-default-win64
Windows の環境変数 PATH に追加しておくか、下記の記事を参考に Emacs 初期化ファイル内で追加してもよいでしょう。おこのみでどうぞ。

Emacs 初期化ファイルの設定
下記の設定をEmacs 初期化ファイル (.emacs, .emacs.d/init.el) へコピーします。辞書の文字コードを cp932 か utf-8 か選べますが、ここではcp932にしています。
;;;============================================================================= ;;; cmigemo設定. ;;;============================================================================= (require 'migemo) (setq migemo-dictionary "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict") ;;;(setq migemo-dictionary "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/utf-8/migemo-dict") ; 文字コードに注意. (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs" "-i" "\a")) (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) ;;;(setq migemo-coding-system 'utf-8-unix) ; 文字コードに注意. (setq migemo-coding-system 'cp932-unix) (load-library "migemo") ; ロードパス指定. (migemo-init)
もしも動かないときは….
普通のインクリメンタルサーチは動くのに migemo が動かない場合
普通のインクリメンタルサーチは動くのに migemo が動かない場合、下記のサイトを参考にするといいかもです。すごくわかりやすく解説されています。
簡単にいうと、Emacs初期化ファイルでの setq migemo-dictionary の設定の時に絶対パスを使うと良いようです。
Emacs 起動時に “No such file or directory” “ruby” と怒られる
Emacs 起動時に下記のようなエラーがでるときは、Rubyをインストールしてみてください。msys2 を使っているなら
pacman -S ruby
でOKです。msys2 を使っていない場合は別途インストーラをダウンロードしてインストールしてください。インストーラはいろいろな種類のものがあるようですね。お好みに応じて選んでください。 (例: http://rubyinstaller.org/)
Emacs から Ruby が実行できるようにPATHを通すのを忘れずに。
Debugger entered--Lisp error: (file-error "Searching for program" "No such file or directory" "ruby") make-process(:name "migemo" :buffer #<buffer *migemo*> :command ("ruby" "-q" "--emacs" "-i" " " "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict")) apply(make-process (:name "migemo" :buffer #<buffer *migemo*> :command ("ruby" "-q" "--emacs" "-i" " " "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict"))) start-process("migemo" #<buffer *migemo*> "ruby" "-q" "--emacs" "-i" " " "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict") apply(start-process "migemo" #<buffer *migemo*> "ruby" ("-q" "--emacs" "-i" " " "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict")) migemo-start-process("migemo" #<buffer *migemo*> "ruby" ("-q" "--emacs" "-i" " " "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict")) migemo-init() eval((migemo-init) nil) elisp--eval-last-sexp(nil) eval-last-sexp(nil) funcall-interactively(eval-last-sexp nil) call-interactively(eval-last-sexp nil nil) command-execute(eval-last-sexp)
まとめ
Windows Emacs から migemo を使う設定方法でした。これでローマ字で日本語検索がサクサクできるようになります!ものすごく便利ですからWindows使いの方もぜひ!
コメント
[…] Windowsでの Emacsでmigemo を有効にする設定方法 […]
[…] こちらのサイト(Windows用) […]
http://qiita.com/ROCKTAKEY/items/08f7a40fd3cd67fe643f
URLを載せ忘れました。すみません。
ROCKTAKEYさま
すみません、コメント見落としておりました。。。。
migemo を使いやすくするために ido-flex-with-migemo を作成なさったんですね!
すごい。情報ありがとうございます!