Help us understand the problem. What is going on with this article?

migemoを使ってEmacsライフを快適に

More than 5 years have 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 が自動で無効になります

catatsuy
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした