読者です 読者をやめる 読者になる 読者になる

イメージに染まるまで……

Mac,iOSなどAppleの製品についての記事や、セキュリティだったりGTDの記事を書いています。

Emacsの検索機能、検索編集機能を最大まで強化する 〜color-moccur, moccur-edit,Migemoのインストールと設定

Emacs

以前から、Emacsの検索機能を強化してくれる上に挙げた3つの設定を、いつかやろうと思っていました。今回は、これらを一気に設定することで、日本語環境でも困らない検索と検索編集機能をEmacsに付加してあげることにしました。

color-moccurは、Emacsの検索機能、occurを大幅に強化してくれるEmacs lispです。moccur-editはcolor-moccurをインストールした状態で使います。color-moccurがリストしてくれた検索結果画面で直接文書を編集することができるようになります。そして、Migemoは英数のままで日本語検索を可能にしてくれるものです。

Migemoのインストールが少し手間かもしれませんが、入れると日本語環境での操作が一気に楽になります。是非、挑戦してみることをおすすめします。

では、はじめましょう。

1. color-moccurとmoccur-editのインストール
2. Migemoのインストール
    a. cmigemoのインストール
    b. migemo.elのインストール
3. init.elへの書き込み

"1. color-moccurとmoccur-editのインストール

ここでは、auto-installを利用してインストールします。auto-installのインストールに関しては割愛します。

コマンドはM-x auto-install-from-emacs-wiki RET color-moccur.el RETです。RETでリターンキーを押します。入力が終わると、color-moccurのemacs lispがバッファに表示されるので、C-cでインストールします。

moccur-editも同様で、M-x auto-install-from-emacs-wiki RET moccur-edit RETです。

これで、moccur関係は終了です。

2. Migemoのインストール

ここが、少し面倒です。なぜなら、まずはコマンドラインでcmigemoをインストールしたあとに、Emacs上でmigemo.elをインストールするからです。

a. cmigemoのインストール

ここでは、パッケージマネージャを利用します。HomebrewやMacPortsを利用しましょう。

コマンドは、Homebrewの場合はbrew install cmigemoです。

Homebrewの導入については、以前書いたRictyのインストールについての記事のなかにありますので、そちらを参考にしてください。

インストールするときに、コマンド名やインストールしたときのパスが表示されるので、一応確認しましょう。

b. migemo.elのインストール

ここで、cmigemoをEmacsから透過的に利用するためのmigemo.elをインストールします。ここでは、Emacsのpackage.elからインストールします。

M-x package-list-packagesからmigemo.elでインストールします。

3. init.elへの書き込み

コピペで利用出来ますが、cmigemoのインストールされたパスと、辞書ファイルのパスは自分で確認して修正してください。

;; migemoの記述
(require 'migemo)
(setq migemo-command "/usr/local/bin/cmigemo")
;; 上のパスには自分の環境でcmigemoをインストールしたときのパスを入力してください
(setq migemo-options '("-q" "--emacs"))
(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")
;; こちらも、自分の環境のパスを入力してください
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
(load-library "migemo")
(migemo-init)

;; color-moccurの設定
(when (require 'color-moccur nil t)
;;M-oにoccur-by-moccurを割り当て
(define-key global-map (kbd "M-o") 'occur-by-moccur)
;;スペース区切りでAND検索
(setq moccur-split-word t)
;;ディレクトリ検索するときの除外ファイル
(add-to-list 'dmoccur-exclusion-mask "\\.DS_Store")
(add-to-list 'dmoccur-exclusion-mask "^#.+#$")
;;Migemoを利用できる環境であればMigemoを使う
(when (and (executable-find "/usr/local/bin/cmigemo") ;;このパスも、自分の環境に合わせて変更してください
     (require 'migemo nil t))
(setq moccur-use-migemo t)))

;; moccur-editの設定
(require 'moccur-edit nil t)

これで、init.elへの書き込みは終了です。

確認

実際に動作すると、どうなるかを見てみましょう。

まず、通常のインクリメンタルサーチです。C-rの前方検索も、C-sの後方検索も[Migemo]という表示で日本語を検索できるようになっています。いわゆるローマ字入力のような形で言葉を探してくれるのです。

f:id:nya-0:20140607185833p:plain

次に、color-moccurです。コマンド自体はいくつかありますが、occur-by-moccurというカレントバッファ内の言葉の検索をしてみましょう。先程わたしが貼り付けた設定だと、M-oがそのキーバインドになっています。

このように、検索結果が一覧できます。

f:id:nya-0:20140607185843p:plain

またmoccur-editのお陰で、moccurの検索結果の表示されているバッファでそのまま編集を行なうことができます。検索結果の画面でrキーを押します。

f:id:nya-0:20140607190257p:plain

C-c C-cで修正した結果がバッファに反映されます。moccurの終了はqキーを押すだけです。ただ、編集した結果はまだ保存されていませんので、バッファの保存は忘れないようにしましょう。

おわりに

いかがでしたでしょうか。この2つの段階を踏むと、Emacsで日本語検索と強力な検索編集が行えるようになります。日本語環境でEmacsを利用するときに、非常に強い味方になってくれるはずです。

参考

主に利用した書籍は、

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

です。

基本的にはこの書籍のcolor-moccurとmoccur-editの部分に、Migemoを加える形でこの記事を書きました。感謝です。

また、migemoのプロジェクトページを参考にしました。

https://github.com/emacs-jp/migemo