anything-c-moccur.elの設定や使い方等のまとめエントリー

このエントリーはcolor-moccurとanythingの連携をするanything-c-moccur.elのまとめです。
anything-c-moccur関連の情報がブログ内で散らばらないように、関連した情報はこのエントリーからリンクするようにしていきます。
このエントリーは随時編集されます。

これはなに?

color-moccurとanythingの連携をするelispです。

color-moccurはMatsushita Akihisaさん作のelispで、moccurを超強力にした感じです。
grepgrep-findのようなことや、moccur-edit.elと組み合わせて検索結果を直接置換する事ができ、自分的には、ないと死んでしまうレベルの必須拡張です。
詳細は以下の紹介ページを見てください。非常に便利で強力なので、使っていない方は、是非、試してみることをお勧めします。

anything-c-moccurはcolor-moccurの

  • バッファ内のmoccur(occur-by-moccur)
  • ディレクトリを対象にしたmoccur(dmoccur)
  • diredでマークをつけたファイルを対象にしたmoccur(dired-do-moccur-by-moccur)

をanythingを使って起動するコマンドを提供します。


特にバッファ内の移動や検索に関しては、anythingの長所を発揮して、リアルタイムに絞り込んだり、プレビューができるので、非常に便利です。

また、検索パターンの入力を支援するコマンドも提供します。
慣れてくると直感的に関数フェイスのみを対象にマッチさせたりできるようになるので、手放せなくなります。

インストール方法

anything-c-moccur.elをダウンロードして,ロードパスの通ったところへ置く。

もしくはsvn

svn co http://svn.coderepos.org/share/lang/elisp/anything-c-moccur/trunk anything-c-moccur

からダウンロードしてロードパスの通ったディレクトリに配置します。

依存しているcolor-moccur.elとanything.elをダウンロードして,ロードパスの通ったところへ置く。

color-moccur.elとanything.elがインストールされていない場合は、以下のリンク先からダウンロードしてロードパスの通ったディレクトリに配置します。

anything.elをインストールする際には、anything-config.elも一緒にインストールすることをお勧めします。

設定方法。

.emacsに設定を書きます。
anything-c-moccurには moccur-split-word をnon-nilに設定して使うことを前提に書いてしまっている機能もあるので、特に理由がない場合を除き、non-nilに設定するのがお勧めです。

以下は、設定サンプルです。

;;; color-moccur.elの設定
(require 'color-moccur)
;; 複数の検索語や、特定のフェイスのみマッチ等の機能を有効にする
;; 詳細は http://www.bookshelf.jp/soft/meadow_50.html#SEC751
(setq moccur-split-word t)
;; migemoがrequireできる環境ならmigemoを使う
(when (require 'migemo nil t) ;第三引数がnon-nilだとloadできなかった場合にエラーではなくnilを返す
  (setq moccur-use-migemo t))

;;; anything-c-moccurの設定
(require 'anything-c-moccur)
;; カスタマイズ可能変数の設定(M-x customize-group anything-c-moccur でも設定可能)
(setq anything-c-moccur-anything-idle-delay 0.2 ;`anything-idle-delay'
      anything-c-moccur-higligt-info-line-flag t ; `anything-c-moccur-dmoccur'などのコマンドでバッファの情報をハイライトする
      anything-c-moccur-enable-auto-look-flag t ; 現在選択中の候補の位置を他のwindowに表示する
      anything-c-moccur-enable-initial-pattern t) ; `anything-c-moccur-occur-by-moccur'の起動時にポイントの位置の単語を初期パターンにする

;;; キーバインドの割当(好みに合わせて設定してください)
(global-set-key (kbd "M-o") 'anything-c-moccur-occur-by-moccur) ;バッファ内検索
(global-set-key (kbd "C-M-o") 'anything-c-moccur-dmoccur) ;ディレクトリ
(add-hook 'dired-mode-hook ;dired
          '(lambda ()
             (local-set-key (kbd "O") 'anything-c-moccur-dired-do-moccur-by-moccur)))

anything-c-moccurのカスタマイズ変数の設定は

M-x customize-group anything-c-moccur

でも可能です。

各コマンドの使い方

上記のサンプル通りに設定したと仮定して進めます。
キーバインド等は実際の設定に読み替えてください。

各コマンドの基本的な動作の流れは以下のようになります。

バッファ内のmoccur(anything-c-moccur-occur-by-moccur)
  1. コマンドを起動(M-o)
  2. パターンを入力
    • moccur-split-wordがnon-nilならスペース区切りで複数の単語を入力可能
  3. C-n,pで上下選択
  4. 決定
ディレクトリを対象にしたmoccur(anything-c-moccur-dmoccur)
  1. コマンドを起動(C-M-o)
  2. ディレクトリを選択
  3. パターンを入力
    • moccur-split-wordがnon-nilならスペース区切りで複数の単語を入力可能
  4. C-n,pで上下選択、C-M-f,bでファイル単位で移動
  5. 決定
diredからのmoccur(anything-c-moccur-dired-do-moccur-by-moccur)
  1. diredで対象にするファイルにマークをつける
  2. コマンドを起動(O)
  3. パターンを入力
    • moccur-split-wordがnon-nilならスペース区切りで複数の単語を入力可能
  4. C-n,pで上下選択、C-M-f,bでファイル単位で移動
  5. 決定

anything起動中に使えるコマンドの説明

anything-c-moccurの提供するコマンドからのanything起動中はパターンの入力補助などのコマンドを使うことができます。

以下に現在使用できるコマンドを書きます。

F(shift + f): anything-c-moccur-match-only-function

パターンの先頭に ! を入力する。
パターンが関数フェイスの文字列のみにマッチするようになります。
このコマンドは color-moccur が提供する変数 moccur-split-word がnon-nilの場合に効果があります。

C(shift + c): anything-c-moccur-match-only-comment

パターンの先頭に ; を入力する。
パターンがコメントフェイスの文字列のみにマッチするようになります。
このコマンドは color-moccur が提供する変数 moccur-split-word がnon-nilの場合に効果があります。

S(shift + s): anything-c-moccur-match-only-string

パターンの先頭に " を入力する。
パターンがストリングフェイスの文字列のみにマッチするようになります。
このコマンドは color-moccur が提供する変数 moccur-split-word がnon-nilの場合に効果があります。

D(shift + d): anything-c-moccur-wrap-symbol

入力中の単語を \_< と \_> で囲む。
\_< と \_> はシンボルの区切りにマッチするので \_< と \_> で囲むと、囲まれたシンボルのみにマッチする正規表現となります。

U(shift + u): anything-c-moccur-start-symbol

入力中の単語の先頭に \_< を入力する。

I(shift + i): anything-c-moccur-end-symbol

入力中の単語の末尾に \_> を入力する。

W(shift + w): anything-c-moccur-wrap-word

入力中の単語を \< と \> で囲む。
\< と \> は単語の区切りにマッチするので \< と \> で囲むと、囲まれた単語のみにマッチする正規表現となります。

O(shift + o): anything-c-moccur-start-word

入力中の単語の先頭に \< を入力する。

P(shift + p): anything-c-moccur-end-word

入力中の単語の先頭に \> を入力する。

Tipsなど

置換に使用するための正規表現を組み立てる

簡易re-builderとしてquery-replace-regexpするための正規表現を作るために使ったりもしています。

  1. 置換したい単語の上で起動して(anything-c-moccur-enable-initial-patternがnon-nilだと起動時にポイントの下の単語が初期パターンになります)
  2. D で \_< と \_> でラップしてその単語を含む文字列にはマッチさせなくする。
  3. マッチするか確かめてからパターンをコピーする。(anything-c-moccur-enable-auto-look-flagがnon-nilに設定されているとリアルタイムにマッチする場所が他のwindowに表示される)

その他

個人的にはanything-c-moccurを作ったからといってcolor-moccurを使わなくなったというわけではなく、自分なりに適材適所で使い分ける感じで使っています。

追記履歴

  • 2008/07/24: 初回ポスト
  • 2008/09/05: 最新版のanythingに対応, リポジトリの構成を変更