Next: , Previous: , Up: Building   [Contents][Index]


27.4 Emacs下でのGrepによる検索

Emacsからコンパイラーを実行して、コンパイルエラーの行をvisitできるように、grepを実行して見つかったマッチの行をvisitすることもできます。これはgrepが報告するマッチを、“エラー”のように扱うことで機能します。出力バッファーはGrepモードを使用します。これはCompilationモードの変種です(Compilation Modeを参照してください)。

M-x grep
M-x lgrep

Emacs下でgrepを非同期で実行し、*grep*という名前のバッファーにマッチした行をリストします。

M-x grep-find
M-x find-grep
M-x rgrep

findを通じてgrepを実行し、出力を*grep*バッファーに収集します。

M-x zrgrep

zgrepを実行して、出力を*grep*バッファーに収集します。

M-x kill-grep

実行中のgrepサブプロセスをkillします。

grepを実行するには、M-x grepとタイプしてから、どのようにgrepを実行するかを指定するコマンドラインを入力します。これは通常、grepを実行するとき与える引数と同じです。grepスタイルのregexp(通常、シェルのスペシャル文字をクォートするためシングルクォートで囲む)の後に、ファイル名(ワイルドカードも使用できる)を続けます。M-x grepにプレフィクス引数を指定した場合、バッファーのポイント位置周辺のtag(Tagsを参照してください)を探して、それをgrepコマンドのデフォルトにします。

指定するコマンドは、単純にgrepを実行するものである必要はありません。同じフォーマットで出力を生成するシェルコマンドを使用することができます。たとえば、以下のように、grepコマンドを連結することができます:

grep -nH -e foo *.el | grep bar | grep toto

grepコマンドの出力は、*grep*バッファーに送られます。オリジナルのファイルの対応する行は、コンパイルエラーと同様、C-x `RETなどで見つけることができます。

マッチをハイライトするために、その周囲に特別なマーカーを出力する‘--color’オプションを指定できるgrepプログラムもあります。この機能を使うには、grep-highlight-matchestにセットします。これによりソースバッファーのマッチを表示するとき、ソース行全体ではなく、正確なマッチだけがハイライトされます。

コマンドM-x grep-find(M-x find-grepでも利用可能)は、M-x grepと似ていますが、コマンドにたいして提供される初期のデフォルトが異なります — このデフォルトはfindgrepの両方を実行するもので、これによりディレクトリーツリーの各ファイルを検索できます。Dired and Findfind-grep-diredコマンドも参照してください。

コマンドM-x lgrep (local grep)およびM-x rgrep (recursive grep)は、grepおよびgrep-findのユーザーフレンドリーなバージョンで、これらはマッチにたいする正規表現、検索するファイル、検索の基準となるディレクトリーを個別に尋ねます。検索での大文字小文字の区別は、case-fold-searchの値で制御されます。コマンドM-x zrgrepM-x rgrepと似ていますが、これはgrepのかわりにzgrepを呼び出し、gzipされたファイルの内容を検索します。

これらのコマンドは、変数grep-template(lgrep用)、およびgrep-find-template(rgrep用)にもとづいてシェルコマンドを構築します。検索するファイルには、変数grep-files-aliasesで定義されたエイリアスを使用できます。

変数grep-find-ignored-directoriesにリストされたディレクトリーは、M-x rgrepの検索で自動的にスキップされます。デフォルト値には、さまざまなバージョンコントロールシステムで使用されるデータディレクトリーが含まれます。