「FOO」を前方検索して一致箇所が見つかったものの、それが期待していた箇所ではなかったとします。つまり、目的としていた「FOO」がバッファのより後方に存在していた場合です。このとき、別の C-s (isearch-repeat-forward)
を入力して検索文字列の次の出現箇所へ移動するか、C-r (isearch-repeat-backward)
を入力して前の出現箇所へ移動できます。これらのコマンドは何度でも繰り返し実行可能です。あるいは、数値のプレフィックス引数として n から C-s および C-r を指定することで、n
番目の次または前の出現箇所を探すこともできます。範囲を超えてしまった場合は、DEL で一部の C-s コマンドをキャンセルできます。同様に、後方インクリメンタル検索における各 C-r (isearch-repeat-backward)
は、後方検索を繰り返します。
インクリメンタル検索中にしばらく操作を中断すると、Emacsは画面上に存在する検索文字列の他のすべての候補をハイライト表示します。これにより、C-s や C-r
と入力して検索を繰り返すことで、どこまで辿り着けるかを予測しやすくなります。他の候補は、カスタマイズ可能なフェイス lazy-highlight(テキストフェイスを参照)を用いて、現在の候補とは異なる方法でハイライトされます。この機能が不要な場合は、isearch-lazy-highlight を nil
に設定することで無効にできます。候補のハイライトに関するその他のカスタマイズについては、ニーズに合わせた検索の調整を参照してください。
検索を終了した後、C-s C-s と入力するだけで、同じ文字列を再度検索できます。最初の C-s はインクリメンタル検索を呼び出すキーであり、2番目の C-s は最後に検索した文字列を再度検索することを意味します。同様に、C-r C-r は最後に検索した文字列を逆方向に検索します。最後に検索した文字列を判定する際、その文字列が C-s で検索されたものか C-r で検索されたものかは問いません。
前方検索を行っている際に、開始点より前の何かを探していたことに気づいた場合は、検索文字列をそのままにしたまま C-r と入力して後方検索に切り替えてください。同様に、後方検索中の C-s は前方検索に切り替えます。
検索方向を変更すると、最初に入力したコマンドはデフォルトで同一のマッチ箇所に留まり、カーソルはマッチ箇所のもう一方の端に移動します。すぐに別のマッチ箇所へ移動するには、変数
isearch-repeat-on-direction-change を t に設定してください。
検索が失敗し、別の C-s を入力して再実行すると、バッファの先頭から再開されます。失敗した逆方向検索を C-r で再実行すると、末尾から再開されます。これは ラップアラウンド と呼ばれ、この状態になると検索プロンプトに ‘Wrapped’ と表示されます。検索の元の開始地点を通り過ぎて進み続けると、‘Overwrapped’ に変わり、これは既に見つかったマッチを再度辿っていることを意味します。
isearch-wrap-pause
ユーザーオプションをカスタマイズすることで、一致する項目がなくなった際の動作を制御できます。値が t(デフォルト)の場合は、エラーを通知します。(検索を繰り返すとループします。)no の場合は、ding
を発行し、最後の一致項目に達した直後にループします。no-ding
の場合は、直ちにループしますが、ding は発行しません。no および no-ding
の値を指定すると、文字を入力した際にもループを試みます。最後に、nil
の場合は、決してループせず、最後の一致項目で停止します。
以前に使用した検索文字列を再利用するには、検索リングを使用します。コマンド M-p (isearch-ring-retreat) および
M-n (isearch-ring-advance)
でリング内を移動し、再利用する検索文字列を選択します。これらのコマンドは、選択した検索リングの要素をミニバッファに残し、そこで編集することができます。C-s/C-r または RET
と入力すると、その文字列が確定し、検索が開始されます。検索リングに保存される直近に使用した検索文字列の数は、変数 search-ring-max で指定され、デフォルトは 16 です。
ミニバッファ内の現在の検索文字列を、検索リングの項目で置き換えることなく編集するには、M-e (isearch-edit-string) と入力するか、ミニバッファ内の mouse-1 をクリックしてください。文字列の編集を完了して検索を行うには、RET、C-s または C-r と入力してください。検索文字列に、検索を開始したバッファのポイント以降の文字を追加するには、C-f または RIGHT と入力してください。