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


15.11 その他の検索およびループコマンド

ここでは正規表現にたいするマッチを検索する、その他のコマンドを説明します。これらのコマンドは、パターンに大文字が含まれていないカ、case-fold-searchが非nilのときは、マッチングで大文字小文字を区別しません。常にバッファー全体を検索するmulti-occurmulti-occur-in-matching-buffersをのぞき、これらはすべて、ポイント位置からバッファーの最後まで、リージョンがアクティブなときはそのリージョンにたいして処理を行います。

M-x multi-isearch-buffers

1つ以上のバッファー名の入力を求め(RETで終了)、それらのバッファーにたいして複数バッファーのインクリメンタル検索を開始します(あるバッファーでの検索に失敗すると、次のC-sにより、指定された次のバッファーへと検索を試みます)。プレフィクス引数を指定すると、regexpの入力を求め、regexpにマッチするバッファーにたいして、複数バッファーでのインクリメンタル検索を開始します。

M-x multi-isearch-buffers-regexp

このコマンドはmulti-isearch-buffersと同様ですが、インクリメンタルなregexp検索を行います。

M-x multi-isearch-files

1つ以上のファイル名の入力を求め(RETで終了)、それらのファイルにたいして複数ファイルのインクリメンタル検索を開始します(あるファイルで検索に失敗すると、次のC-sにより、指定された次のファイルへと検索を試みます)。プレフィクス引数を指定すると、regexpの入力を求め、regexpにマッチするファイルにたいして、複数ファイルでのインクリメンタル検索を開始します。

M-x multi-isearch-files-regexp

このコマンドはmulti-isearch-filesと同様ですが、インクリメンタルなregexp検索を行います。

バッファーローカルな変数multi-isearch-next-buffer-functionをセットするいくつかのモード(たとえばChange Logモード)では、複数ファイルにたいするインクリメンタル検索は自動的にアクティブになります。

M-x occur
M-s o

regexpの入力を求め、それへのマッチを含むバッファー内の各行をリスト表示します。プロンプトでM-nをタイプした場合は、前のインクリメンタル検索から検索文字列を再利用できます。マッチするテキストは、matchフェイスを使用してハイライトされます。数引数nを指定すると、そのコンテキストでマッチした各行の、前後n行を表示します。

コンテキスト行のデフォルト行数は、変数list-matching-lines-default-context-linesにより指定されます。list-matching-lines-jump-to-current-lineが非nilのとき、カレント行はフェイスlist-matching-lines-current-line-faceでハイライト表示され、ポイントはその行の最初のマッチの後にセットされます。

インクリメンタル検索がアクティブのときはM-s oを実行して、カレントのサーチリングを使うこともできます。

あなたがタイプしたregexpにたいするマッチは完全な行を含むように拡張され、1つ前のマッチの終了の前から開始するマッチは考慮されないことに注意してください。

*Occur*バッファーでは、エントリーをクリックするか、ポイントをそこに移動してRETをタイプすることにより、検索されたバッファーの対応する位置をvisitします。oC-oはマッチを他のウィンドウに表示します(C-oはそのウィンドウを選択しません)。かわりにM-g M-n (next-error)コマンドを使うことにより、マッチした場所を1つ1つvisitできます(Compilation Modeを参照してください)。

*Occur*バッファーでeをタイプすることにより、Occur Editモードに切り替えます。このモードではエントリーにたいする編集結果が、元のバッファーのテキストに適用されます。C-c C-cとタイプすることにより、Occurモードに戻ります。

コマンドM-x list-matching-linesは、M-x occurの別名です。

M-x multi-occur

このコマンドはoccurと同じですが、複数のバッファーを検索する点が異なります。このコマンドは、1つずつバッファー名の入力を求めます。

M-x multi-occur-in-matching-buffers

このコマンドはmulti-occurと似ていますが、visitしているファイル名にマッチする正規表現を指定することにより、検索するバッファーを指定する点が異なります。プレフィクス引数を指定すると、正規表現にマッチするバッファー名となります。

M-x how-many

regexpの入力を求め、バッファーのポイント位置以降に、何個のマッチがあるか表示します。リージョンがアクティブのときは、リージョンにたいして操作を行います。

M-x flush-lines

regexpの入力を求めて、ポイントの後のテキストでマッチを含む各行を削除します。コマンドの終了時には削除したマッチ行の行数をプリントします。

カレント行のポイント以降にマッチする文字列が含まれているときはカレント行を削除します。リージョンがアクティブのときはリージョンにたいして操作を行います。行の一部ににリージョンが含まれていて、さらにマッチの全体がリージョンに含まれているときには行は削除されます。

マッチが行をまたいでいる場合、flush-linesはそれらの行すべてを削除します。このコマンドは行を削除してから、次のマッチを検索します。したがって、1行にマッチ全体と、次の行にまたがるマッチが両方含まれるとき、次の行にまたがるマッチは無視されます。

M-x keep-lines

regexpの入力を求め、ポイント以降にあるテキストにたいして、マッチを含まない行を削除します。ポイントが行の先頭でない場合、このコマンドは常にカレント行を維持します。リージョンがアクティブのときは、リージョンにたいして操作を行います。このコマンドは一部がリージョンに含まれるだけの行は削除しません(行を終端する改行は、その行の一部と判断します)。

マッチが行をまたぐ場合、このコマンドはそれらすべての行を維持します。