Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

cygwin無くてもgrepしたい

Widows7でEmacs23を使い始めてから、find-grepとかしたときに「ぴんっ」って怒られてしまう。
それはfindコマンドやgrepコマンドが想定されるプログラムと違うから。
cygwin入れれば問題ないんだろうけれど、それを許さない環境なのがうちの会社。
なのでlispで実装されているコマンド無いかなぁ〜と探していたら、ありました。

color-moccurとmoccur-editのダウンロード

http://sakito.jp/emacs/emacs23.html

上記サイトで紹介されているcolor-moccur.elとmoccur-edit.elを導入すると見事に解決。
color-moccur.el
moccur-edit.el

この二つのプログラムを、ロードパスに通してあるフォルダに入れておきます。
僕の場合はinit.elに

(add-to-list 'load-path "~/.emacs.d/elisp") 

と書いているので、そこに入れました。

init.elに設定を記入してcolor-moccurを有効にする

;; color-moccur
(require 'color-moccur)
(require 'moccur-edit)

init.elにこのように記入すれば完了!

color-moccurの使い方

カレントバッファにある任意の単語の正規表現検索

■単語「japan」を検索し一覧表示

M-x moccur RET
List lines matching regexp: japan RET
指定したディレクトリ以下の全てのファイルに対して正規表現文字列検索

■単語「japan」をDirectoryで指定したディレクトリ以下から検索して一覧表示

M-x moccur-grep-find RET
Directory: ~/.emacs.d/elisp/ RET
Input Regexp and FileMask:  japan

その他詳しい使い方は、color-moccur.elファイルの冒頭に記載されています。

これすばらしいです。
これがないと仕事できないくらいの拡張です。

color-moccurで見つけた部分をまとめて置き換え

検索結果を直接編集して置き換えられる

まずは、dmoccur や moccur , moccur-grep , moccur-grep-find などで検索して結果を表示させます。
以下の手順を順番に行うだけでOK。

1.編集モードに入る
結果が表示されたところで,r(あるいはC-c C-i か C-x C-q でもい い) とします.すると,バッファが編集できるようになります。


2.編集する
後は編集するだけです.表示されているバッファを編集すると,編集した箇所には色がつきます.


○編集を適用する
C-x C-s (あるいは C-c C-c か C-c C-f でも可能) とすると,色がつ いている変更のみが適用されます.

バッファの保存はしませんので,各ファイルを確認してから保存してください.変更した 行には色がつきますので,比較的発見しやすいと思います.


★一部の変更のみ適用したくない
適用したくない部分をリージョンで選択し,C-c C-r とします.そうすると,色が 消えて,この変更は適用されなくなります.


★すべての変更を破棄する
すべての変更を適用したくない時には,C-x k(あるいは C-c C-k か C-c k か C-c C-u でも可能) とします.これで,すべての変更は無効にな ります.


<moccur-edit のカスタマイズ>

User Option: moccur-edit-highlight-edited-text
デフォルトは nil
t なら,各バッファで変更が適用された行に色がつけられます.


User Option: moccur-edit-remove-overlays
デフォルトは nil
デフォルトでは,moccur-edit-highlight-edited-text が t の時には,変更を適用した後 で,*moccur*バッファを q で抜けても各バッファで変更された箇所には色が残りま す,変更箇所を確認しやすくするためです.

これが邪魔な時には,この変数を t にします.すると,*moccur*バッファを q で 抜けた時に色を消します.

M-x moccur-edit-remove-overlays でも消すことができます.


User Option: moccur-query-when-buffer-read-only
デフォルトは t .読み込み専用のバッファだと,そのままでは変更を適用できません. デフォルトでは,確認してから,読み込み専用の設定を外して変更を適用します. nil な ら,変更が適用されません.

User Option: moccur-edit-remove-overlays-after-save-buffer
デフォルトは t.保存時に変更箇所の色を消します.