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 での設定を紹介します
(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 の場合は以下のようになります
(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 の場合は以下のようになります
(setq migemo-command "cmigemo")
(setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict")
init-loader.el と package.el を導入して快適 Emacs ライフ - Qiita [キータ]
この記事を参考に環境毎に設定を分ければ,一つの設定を様々な環境で使えます
IME を制御する
migemo を入れて検索をする場合は IME が無効でなければなりません
いちいちその制御を人間がやるのは効率的では無いので自動化しましょう
この記事を参考に IME の設定をしておいてください
Mac の設定は以下のようになります
;; 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 の設定は以下のようになります
;; 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 が自動で無効になります