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

この記事は約8分で読めます。

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 をお使いなら下記のるびきちさんの記事をそのまま実行すれば簡単に使えます

rubikitch.com
Find the best information and most relevant links on all topics related to This domain may be for sale!

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

Windows環境でEmacs+C/Migemoの設定に詰まったのでメモ - ぐるっとぐりっど
はじめに これまでは、Windows環境でemacsを使うのに、Meadowを使っていたので、日本語をローマ字で検索できる便利なmigemoも設定済のが用意されていた。しかし、最近Emacs24のWindowsバイナリの乗り換えた際に、mi...

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使いの方もぜひ!

コメント

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

  2. ROCKTAKEY より:

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