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*バッファーはメジャーモードとしてOccurモードを使用します。次または前のマッチに移動するためにnおよびpのキーを使うことができます。プレフィックス数引数を指定した場合には、その個数分のマッチを移動します。数字キーはdigit-argumentにバインドされているので、5 nなら次の5番目のマッチに移動します(C-uのタイプは不要)。SPCおよびDELはそれぞれ*Occur*バッファーを上または下へとスクロールします。マッチをクリックするかそこにポイントを移動してRETをタイプすれば、検索した元バッファーの対応する位置をvisitします。oおよびC-oはマッチを別ウィンドウに表示しますが、C-oはソンウィンドウを選択しません。マッチを1つずつvisitするために、かわりにM-g M-n (next-error)を使用できます(Compilation Modeを参照)。最後にq*Occur*バッファーを表示しているウィンドウをquitするとともに、そのバッファーをバリーします。

*Occur*バッファーでeをタイプすることにより、バッファーを編集可能にするとともにOccur Editモードに切り替えます。このモードではマッチした行を編集することができ、更に編集結果は元のバッファーのテキストに適用されます。C-c C-cとタイプすることにOccur Editモードを抜けて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の入力を求め、ポイント以降にあるテキストにたいして、マッチを含まない行を削除します。ポイントが行の先頭でない場合、このコマンドは常にカレント行を維持します。リージョンがアクティブのときは、リージョンにたいして操作を行います。このコマンドは一部がリージョンに含まれるだけの行は削除しません(行を終端する改行は、その行の一部と判断します)。

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

M-x kill-matching-lines

flush-linesと同様ですがマッチした行はkillリングへも追加されます。このコマンドは行区切りの改行を含めて、マッチした行を単一の文字列としてkillリングに追加します。

M-x copy-matching-lines

kill-matching-linesと同様ですが、マッチした行をバッファーから削除しません。