More than 1 year has passed since last update.

migemo というツールを知っていますか?

migemo を利用すると,IME を有効にしないでも日本語を検索できるようになります

Emacs から利用すると本当に便利なので使っていない方はみんな使いましょう

インストール

# Ubuntu
sudo apt-get install cmigemo

# Mac
brew install cmigemo

とすればインストールできます

migemo は元々 Ruby で書かれていたようですが,最近の Ruby では動かないので C 言語で再実装された cmigemo を使うのが一般的です

Emacs の設定

EmacsでPATHの設定が引き継がれない問題をエレガントに解決する - Qiita [キータ]

この記事を参考にあらかじめ PATH を通すようにしましょう

Emacs での設定を紹介します

migemo.el
(when (and (executable-find "cmigemo")
           (require 'migemo nil t))
  (setq migemo-options '("-q" "--emacs"))

  (setq migemo-user-dictionary nil)
  (setq migemo-regex-dictionary nil)
  (setq migemo-coding-system 'utf-8-unix)
  (load-library "migemo")
  (migemo-init)
)

普通に設定をしてしまうと cmigemo がインストールされていない状態で検索などができなくなってしまうので cmigemo が実行できる状態だけでこの設定が行われるようになっています

ただしこの切り分けは PATH の設定がうまくいっていないと正しく動きません

またこれだけだと migemo の辞書ファイルなどの設定ができていないので動きません

そこで環境によって追加の設定が必要になります

Mac の場合は以下のようになります

cocoa-emacs-migemo.el
(setq migemo-command "/usr/local/bin/cmigemo")

(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")

(setq migemo-command "/usr/local/bin/cmigemo") は PATH が正しく設定されていれば (setq migemo-command "cmigemo") でも問題ありません

Ubuntu の場合は以下のようになります

linux-migemo.el
(setq migemo-command "cmigemo")

(setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict")

init-loader.el と package.el を導入して快適 Emacs ライフ - Qiita [キータ]

この記事を参考に環境毎に設定を分ければ,一つの設定を様々な環境で使えます

IME を制御する

migemo を入れて検索をする場合は IME が無効でなければなりません

いちいちその制御を人間がやるのは効率的では無いので自動化しましょう

EmacsでIMEと仲良くする - Qiita [キータ]

この記事を参考に IME の設定をしておいてください

Mac の設定は以下のようになります

cocoa-emacs-ime.el
;; emacs 起動時は英数モードから始める
(add-hook 'after-init-hook 'mac-change-language-to-us)

;; minibuffer 内は英数モードにする
(add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)

;; [migemo]isearch のとき IME を英数モードにする
(add-hook 'isearch-mode-hook 'mac-change-language-to-us)

Ubuntu の設定は以下のようになります

linux-ibus.el
;; isearch 時はオフに
(add-hook 'isearch-mode-hook 'ibus-disable)

;; mini buffer ではオフに
(add-hook 'minibuffer-setup-hook 'ibus-disable)

;; インクリメンタル検索中のカーソル形状を変更する
(setq ibus-isearch-cursor-type 'hollow)

カーソル形状変更はおすすめの設定です

このようにすれば,minibuffer や検索するときに IME が自動で無効になります