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


15.1.2 インクリメンタル検索の繰り返し

前方に‘FOO’を検索してマッチしたが探しているマッチではなく、探しているのはバッファーのもっと前方に出現する‘FOO’だとしましょう。ここでもう1度C-s (isearch-repeat-forward)をタイプすることにより、検索文字列が次に出現する場所、C-r (isearch-repeat-backward)とタイプすれば検索文字列が前に出現した場所に移動します。これは何回でも繰り返すことができます。次、または前へn個目の出現場所を見つけるためにC-sC-rにプレフィクス数引数nをかわりに供給することもできます。もしタイプしすぎたときは、C-sコマンドをDELで取り消すことができます。同様に後方へのインクリメンタル検索では、C-r (isearch-repeat-backward)により後方検索が繰り返されます。

インクリメンタル検索中に手を止めて眺めてみると、検索文字列にたいするカレントマッチ以外に、スクリーンに表示されている他のマッチもハイライトされていることがわかります。これは検索するために、何回C-sまたはC-rを繰り返せばよいのか予測しやすくするためです。その他のマッチは、カスタマイズ可能なフェイスlazy-highlight (Facesを参照してください)を使って、現在のマッチとは異なってハイライトされます。この機能を無効にするには、isearch-lazy-highlightnilをセットしてください。マッチのハイライトに関連するその他のカスタマイズについては、Search Customizationsを参照してください。

検索を終了した後、同じ文字列を再度検索するには、C-s C-sとタイプします。最初のC-sはインクリメンタル検索を呼び出し、2回目のC-sは最後に検索した文字列の再検索を意味します。同様に、C-r C-rは最後に検索した文字列を後方に検索します。最後に検索された文字列の決定では、その文字列がC-sで検索されたのか、C-rで検索されたのかは問題ではありません。

前方に検索していて、検索している対象が検索開始点より後方にあるのに気付いたときは、検索文字列を変更すること無く、C-rで後方検索に切り替えることができます。同様に後方検索でC-sをタイプすると、前方検索に切り替わります。

検索が失敗したとき、バッファーの先頭から検索を再開するには、もう一度C-sをタイプします。逆向きの繰り返し検索が失敗したときは、C-rでバッファーの最後から検索を再開します。これはwrapping around(巻き直し)と呼ばれ、これが発生すると、‘Wrapped’という単語が検索プロンプトに表示されます。検索を続けて元の検索開始ポイントを通過すると、‘Overwrapped’に変化します。これはすでに見たマッチを再訪していることを意味します。

以前に検索した文字列を再利用するには、サーチリング(search ring)を使います。コマンドM-p (isearch-ring-retreat)またはM-n (isearch-ring-advance)で、リングを移動して再使用したい文字列を取り出します。これらのコマンドは、選択されたリング要素の文字列をミニバッファーに残すので、それを編集することができます。C-sC-r、またはRETとタイプすると、その文字列を受け入れて、その文字列にたいする検索を開始します。サーチリングの中に保存されている、最近使用された検索文字列の数は、変数search-ring-maxで指定され、デフォルトは16です。

ミニバッファーの現在の検索文字列を、サーチリングのアイテムで置き換えずに編集するときは、M-e (isearch-edit-string)とタイプするか、ミニバッファーをmouse-1でクリックします。RETC-sC-rとタイプすれば、編集を終了してそれを検索できます。バッファーの検索を開始したポイントの後に続く文字を検索文字列に追加するには、C-fまたはRIGHTとタイプしてください。