正規表現でマッチを検索するその他のコマンドをいくつか紹介します。パターンに大文字が含まれず、かつ case-fold-search が nil
でない場合、これらはすべて大文字小文字を区別せずにマッチします。常にバッファ全体を検索する multi-occur と multi-occur-in-matching-buffers
を除き、すべてのコマンドはポイントからバッファ末尾までのテキスト、またはリージョンが有効な場合はそのリージョンに対して動作します。
1つ以上のバッファ名(末尾は RET)を入力し、それらのバッファを対象にマルチバッファ漸進検索を開始します。(あるバッファで検索に失敗した場合は、次の C-s で次に指定されたバッファの検索を試み、以降も同様に続きます。)接頭辞引数が指定された場合は、正規表現を入力し、その正規表現に一致するバッファを対象にマルチバッファ漸進検索を開始します。
このコマンドはmulti-isearch-buffersと同様ですが、インクリメンタルな正規表現検索を行います。
1つ以上のファイル名(末尾は RET)の入力を求め、その後、それらのファイルに対して複数ファイルにわたるインクリメンタル検索を開始します。(あるファイルで検索に失敗した場合は、次の C-s で次に指定されたファイルを検索し、以降も同様に続きます。)接頭辞引数が指定された場合は、正規表現の入力を求め、その正規表現に一致するファイルに対して複数ファイルにわたるインクリメンタル検索を開始します。
このコマンドはmulti-isearch-filesと同様ですが、インクリメンタルな正規表現検索を行います。
バッファローカル変数 multi-isearch-next-buffer-function
を設定する一部のモード(例:Change Log モード)では、複数ファイルにわたるインクリメンタル検索が自動的に有効になります。
正規表現のプロンプトを表示し、バッファ内でそれに一致する各行の一覧を表示します。プロンプトで 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 を実行することもできます。この場合、現在の検索文字列が使用されます。
なお、入力した正規表現に一致する箇所は行全体を含むように拡張され、直前の一致箇所が終わる前に始まる一致は一致とはみなされない点にご注意ください。
*Occur* バッファでは、Occur モードがメジャーモードとして設定されています。n および p
キーを使用すると、次のマッチまたは前のマッチに移動できます。数値引数をプレフィックスとして指定すると、これらのコマンドはその数だけマッチを移動します。数字キーは
digit-argument に割り当てられているため、5
n では5つ先のマッチに移動します(C-u と入力する必要はありません)。SPC と DEL で *Occur* バッファを上下にスクロールします。マッチ箇所をクリックするか、そこにポイントを移動して RET と入力すると、検索対象となった元のバッファの対応する位置へ移動します。o と C-o はマッチ内容を別のウィンドウに表示します。C-o はそのウィンドウを選択しません。あるいは、M-g M-n
(next-error) コマンドを使用して、出現箇所を一つずつ辿ることもできます(コンパイルモード を参照)。最後に、q は *Occur*
バッファを表示しているウィンドウを閉じ、バッファを破棄します。
*Occur* バッファに e と入力すると、バッファが書き込み可能になり、Occur Edit モードに入ります。このモードでは、一致する行を編集でき、その編集内容が元のバッファのテキストにも反映されます。C-c C-c と入力すると、Occur Edit モードを終了して Occur モードに戻ります。
コマンド M-x list-matching-lines は M-x occur の別名です。
このコマンドはoccurと同様ですが、複数のバッファを検索できる点が異なります。バッファ名を一つずつ指定するよう求められます。
このコマンドは multi-occur
と同様ですが、検索対象のバッファが、訪問済みファイル名に一致する正規表現で指定される点が異なります。接頭辞引数を指定すると、代わりにその正規表現を用いてバッファ名を照合します。
正規表現を指定し、ポイント以降のバッファ内でのマッチ数を表示します。リージョンが有効な場合は、代わりにそのリージョンに対して処理が行われます。
正規表現を指定し、ポイント以降のテキストを対象に、それに一致する行をそれぞれ削除します。コマンドの実行が完了すると、削除された一致行の数が表示されます。
このコマンドは、現在の行にポイント以降でマッチする部分が含まれている場合、その行を削除します。リージョンが有効な場合は、代わりにリージョンに対して動作し、リージョンに部分的に含まれる行に、リージョンに完全に含まれるマッチ部分が含まれている場合、その行が削除されます。
マッチが複数行にまたがる場合、flush-lines
はそれらすべての行を削除します。次のマッチを探し始める前に行を削除するため、別のマッチが終了したのと同じ行から始まるマッチは無視されます。
正規表現を指定し、ポイント以降のテキストを対象に、その正規表現に一致しない各行を削除します。ポイントが行頭にない場合、このコマンドは常に現在の行を保持します。リージョンが有効な場合は、代わりにリージョンを対象に処理が行われます。リージョンに部分的にしか含まれていない行が削除されることはありません(行末の改行は、その行の一部としてカウントされます)。
マッチが複数行にわたる場合、このコマンドはそれらすべての行を保持します。
flush-linesと同様ですが、一致する行もキルリングに追加します。このコマンドは、行を区切る改行を含む単一の文字列として、一致する行をキルリングに追加します。
kill-matching-linesと同様ですが、マッチした行はバッファから削除されません。