Emacsからコンパイラーを実行して、コンパイルエラーの行をvisitできるように、grep
を実行して見つかったマッチの行をvisitすることもできます。これはgrep
が報告するマッチを、エラーのように扱うことで機能します。出力バッファーはGrepモードを使用します。これはCompilationモードの変種です(Compilationモードを参照してください)。
Emacs下でgrep
を非同期で実行し、*grep*という名前のバッファーにマッチした行をリストします。
find
を通じてgrep
を実行し、出力を*grep*バッファーに収集します。
zgrep
を実行して、出力を*grep*バッファーに収集します。
実行中のgrep
サブプロセスをkillします。
grep
を実行するには、M-x
grepとタイプしてから、どのようにgrep
を実行するかを指定するコマンドラインを入力します。これは通常、grep
を実行するとき与える引数と同じです。grep
スタイルのregexp(通常、シェルのスペシャル文字をクォートするためシングルクォートで囲む)の後に、ファイル名(ワイルドカードも使用できる)を続けます。M-x
grepにプレフィクス引数を指定した場合、バッファーのポイント位置周辺の識別子(識別子のリファレンスを探すを参照してください)を探して、それをgrep
コマンドのデフォルトにします。
指定するコマンドは、単純にgrep
を実行するものである必要はありません。同じフォーマットで出力を生成するシェルコマンドを使用することができます。たとえば、以下のように、grep
コマンドを連結することができます:
grep -nH -e foo *.el | grep bar | grep toto
grep
コマンドの出力は、*grep*バッファーに送られます。オリジナルのファイルの対応する行は、コンパイルエラーと同様、M-g M-n、RETなどで見つけることができます。コマンドのより詳細な説明と、*grep*バッファー内で利用可能なキーバインディングについては、Compilationモードを参照してください。
マッチをハイライトするために、その周囲に特別なマーカーを出力する‘--color’オプションを指定できるgrepプログラムもあります。この機能を使うには、grep-highlight-matches
をt
にセットします。これによりソースバッファーのマッチを表示するとき、ソース行全体ではなく、正確なマッチだけがハイライトされます。ハイライトはgrep
が発行するANSIエスケープシーケンスにたいするマッチを通じて提供されます。このシーケンスにたいするマッチングはgrep-match-regexp
により制御されており、これは別のgrep
プログラムに対応するようにカスタマイズできます。
コンパイルコマンド(Emacs下でのコンパイルの実行を参照)のときと同様、grepコマンド実行中には、モードラインにはそれまでに見つかったマッチ数が表示されて、ハイライトされます。
grep
コマンドは、実行前にバッファーの保存を提案するでしょう。これは、変数grep-save-buffers
により制御されます。利用できる値はnil
(保存しない)、ask
(保存前に尋ねる)、または述語として使用される関数(ファイル名をパラメーターとして呼び出され、バッファーを保存する場合は非nil
をリターンすべきである)のいずれかである。その他の非nil
値は、すべてのバッファーが確認なしで保存されるべきであることを意味します。デフォルト値はask
です。
デフォルトではgrepのマッチ行それぞれにたいしてプレフィックスとしてファイル名が表示されます。しかし変数grep-use-headings
が非nil
値にカスタマイズされていると、マッチはセクションに分割されます。1つのセクションがマッチしたファイルそれぞれに対応しており、ファイル名は特別なフェイスgrep-heading
を用いてセクションヘッダーに表示されます。
コマンドM-x grep-find(M-x find-grepでも利用可能)は、M-x
grepと似ていますが、コマンドにたいして提供される初期のデフォルトが異なります —
このデフォルトはfind
とgrep
の両方を実行するもので、これによりディレクトリーツリーの各ファイルを検索できます。Diredとfind
のfind-grep-dired
コマンドも参照してください。
コマンドM-x lgrep (local grep)およびM-x rgrep (recursive
grep)は、grep
およびgrep-find
のユーザーフレンドリーなバージョンで、これらはマッチにたいする正規表現、検索するファイル、検索の基準となるディレクトリーを個別に尋ねます。検索での大文字小文字の区別は、case-fold-search
の値で制御されます。コマンドM-x
zrgrepはM-x
rgrepと似ていますが、これはgrep
のかわりにzgrep
を呼び出し、gzipされたファイルの内容を検索します。
これらのコマンドは、変数grep-template
(lgrep
用)、およびgrep-find-template
(rgrep
用)にもとづいてシェルコマンドを構築します。検索するファイルには、変数grep-files-aliases
で定義されたエイリアスを使用できます。
変数grep-find-ignored-directories
にリストされたディレクトリーは、M-x
rgrepの検索で自動的にスキップされます。デフォルト値には、さまざまなバージョンコントロールシステムで使用されるデータディレクトリーが含まれます。
デフォルトではlgrep
、rgrep
、zgrep
にたいして構築されるシェルコマンドは、ファイルとディレクトリーの長いリストを含む部分を隠蔽することにより省略して表示されます。隠蔽された部分を表す省略記号のボタンをクリックすれば隠蔽部分を表示できます。M-x
grep-find-toggle-abbreviationとタイプしてインタラクティブに隠蔽部分の表示を切り替えることもできます。このシェルコマンドの隠蔽を無効にするにはオプションgrep-find-abbreviate
をnil
値にカスタマイズしてください。