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 を任意の場所においてください。
どこでもいいんですが、初期設定ファイルをおいている .emacs.d 以下にまとめておくと何かと便利なので今回はそこにします。
デフォルトでは下記の場所にあります。username はお使いの環境に合わせてください。
C:\Users\username\AppData\Roaming\.emacs.d\
そして環境変数PATHに実行可能ファイル cmigemo.exe の有るフォルダを設定してください。
今回の例では下記のフォルダになります。
C:\Users\username\AppData\Roaming\.emacs.d\cmigemo-default-win64
これでインストールは終わりです。
Emacs に cmigemo.el をインストール
つぎにEmacsのmigemopパッケージをインストールします。下記を実行するだけでOKです。
M-x package-install migemo
Emacs 初期化ファイルの設定
下記の設定をEmacs 初期化ファイル (.emacs.d/init.el) へコピーします。辞書の文字コードを cp932 か utf-8 か選べますが、いまはWindows もデフォルトはUTF8なので今回もUTF8にしておきました。
また、Ubuntuを使う場合も動作するようにOSを判断して処理を切り替えています。
;;=============================================================================
;; cmigemo設定.migemo
;; OS側のPATHを設定済みの前提.
;;=============================================================================
(when (executable-find "cmigemo")
(defvar migemo-dictionary nil)
(setq migemo-dictionary
(cond ((eq system-type 'windows-nt) (concat (file-name-directory (executable-find "cmigemo")) "dict/utf-8/migemo-dict"))
((eq system-type 'gnu/linux) "/usr/share/cmigemo/utf-8/migemo-dict")))
(when (file-exists-p migemo-dictionary)
(require 'migemo)
(defvar migemo-command)
(defvar migemo-options)
(defvar migemo-coding-system)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "-e"))
(setq migemo-coding-system 'utf-8-unix)))
もしも動かないときは….
普通のインクリメンタルサーチは動くのに 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 を作成なさったんですね!
すごい。情報ありがとうございます!