Windowsでの Emacsでmigemo を有効にする設定方法

どうも、ながやすです。

Emacs ユーザの皆さん、migemo つかっていますか? migemo はローマ字のまま日本語をインクリメンタル検索するためのツールです。

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

こんな感じです。下部のエコーエリアに「I-search fujisan」とあり、漢字の「富士山」がヒットしているのがわかると思います。

C-s fujisan で「富士山」を検索

C-s fujisan で「富士山」を検索

この migemo ですが、 Linux をお使いなら下記のるびきちさんの記事をそのまま実行すれば簡単に使えます

ローマ字で日本語文字列を検索。isearch以外にもhelmやanything等でも活躍中。

Windows でもほぼ同じなんですが、ちょっとはまることもあるので、このページで説明します。
(上記の記事には目を通しておいてくださいね、数分で読める分量です)

スポンサーリンク

cmigemo 本体を Windows にインストール

下記のサイトから、ご使用の OS の bit数(32 or 64bit)に合わせたものをダウンロードしてください。

ローマ字入力から日本語を(インクリメンタルに)検索するための正規表現を生成するMigemoを配布しています。

ダウンロードした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 を Windows&MSYS2 で使うときのPATH設定|M-x grep-find などが動作しない時
MSYS2@Windows で Emacs を使うとき、パスの設定が不十分なため M-x grep-find が動作しない場合があります。パスの設定方法を説明します。

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 の設定の時に絶対パスを使うと良いようです。

はじめに これまでは、Windows環境でemacsを使うのに、Meadowを使っていたので、日本語をローマ字で検索できる便利なmigemoも設定済のが用意されていた。しかし、最近Emacs24のWindowsバイナリの乗り換えた際に、migemoを自分で設定して、見事にはまったので切り分け内容含めてメモ。(ところでも...

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 # :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 # :command ("ruby" "-q" "--emacs" "-i" "
" "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict")))
  start-process("migemo" # "ruby" "-q" "--emacs" "-i" "
" "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict")
  apply(start-process "migemo" # "ruby" ("-q" "--emacs" "-i" "
" "-d" "C:/Users/username/AppData/Roaming/.emacs.d/conf/migemo/dict/cp932/migemo-dict"))
  migemo-start-process("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 を使う設定方法でした。これでローマ字で日本語検索がサクサクできるようになります!ものすごく便利ですからぜひ!

シェアする

フォローする

スポンサーリンク

コメント

  1. […] Windowsでの Emacsでmigemo を有効にする設定方法 […]

  2. ROCKTAKEY より:

    […] こちらのサイト(Windows用) […]