Previous: , Up: 検索と置換   [Contents][Index]


15.12 必要に応じて検索を調整する

このセクションでは、他では説明されていない、その他の検索に関連した機能を説明します。

インクリメンタル検索にたいするデフォルトの検索モードは、変数search-default-modeにより指定されます。この変数には、nilt、または関数を指定できます。nilの場合、デフォルトのモードはcharacter foldingなしのリテラル検索です。しかし、case foldingにたいしてはcase-fold-search、lax-whitespace matchにたいしてはsearch-whitespace-regexpにより決定されます(検索中のLaxマッチングを参照してください)。値がtの場合、インクリメンタル検索のデフォルトはregexp検索になります。デフォルト値には、case foldingとlax-whitespace matchingだけを行なう関数が指定されています。

継続的なインクリメンタル検索でのカレントマッチは、isearchフェイスでハイライトされます。変数search-highlightnilにセットすることにより、このハイライトを無効にできます。

(たとえばC-M-sによる)正規表現の検索時には、search-highlight-submatches変数に応じて部分式は特別にハイライトされます。この変数の値がnilなら特別なハイライトは行われませんが、値が非nilなら正規表現内の‘\( … \)’構文にマッチするテキスト(いわゆる“部分式”)は異なるフェイスでハイライトされます。デフォルトではisearch-group-1およびisearch-group-2という名前の2つの異なるフェイスが定義されています。これら2つのフェイスでは奇数番目の部分式はisearch-group-1フェイス、偶数番目の部分式はisearch-group-2フェイスを使用してハイライトされます。たとえば‘foo-\([0-9]+\)\([a-z]+\)’の検索時には‘[0-9]+’がマッチする部分がisearch-group-1フェイス、‘[a-z]+’がマッチする部分はisearch-group-2フェイスを使用してハイライトされます。isearch-group-3isearch-group-4、…のようにこの同じ番号付けスキームを使用してフェイスを追加定義する場合にはMN+M2N+M、…番目の部分式のハイライトにフェイスisearch-group-Mが使用されます。ここでNisearch-group-M形式のフェイス総数です。

ディスプレーに表示されている、検索文字列にたいするその他のマッチは、lazy-highlightフェイスを使用してハイライトされます。変数isearch-lazy-highlightをセットして、このハイライトを無効にできます。以下はlazy-highlightをカスタマイズする、その他の変数です:

lazy-highlight-initial-delay

可視なマッチをハイライトする前に待機する秒数です。検索文字列がlazy-highlight-no-delay-length文字より短い場合のみ適用されます。

lazy-highlight-no-delay-length

検索文字列の長さが少なくともこの変数の値であれば、マッチの遅延ハイライトは即座に開始されます。

lazy-highlight-interval

マッチをハイライトする秒数です。

lazy-highlight-max-at-a-time

入力をチェックする前にハイライトする、マッチの最大数です。大きな数を指定するとハイライトに時間を要するかもしれず、その間に検索を継続するためにC-sC-rをタイプしても、それらすべてのマッチのハイライトを終了するまで、Emacsは反応しないでしょう。したがって小さな数を指定することにより、Emacsの反応を改善できます。

isearch-lazy-count

検索プロンプトにカレントマッチ数とマッチ総数を表示します。

lazy-count-prefix-format
lazy-count-suffix-format

これらの2つの変数はisearch-lazy-countの表示にたいするカレントマッチ数とマッチ総数のフォーマットを決定します。

インクリメンタル検索で検索文字列が空のときにRETを入力すると、通常これは非インクリメンタル検索を開始します(実際には、これにより検索文字列の編集が開始され、次のRETで検索を行ないます)。しかし、変数search-nonincremental-insteadnilにセットした場合、検索文字列が空でも、RETのタイプは常にインクリメンタル検索をexitします。

デフォルトではインクリメンタル検索および問い合わせ付き置換コマンドは不可視のテキストにもマッチしますが、そのようなマッチは隠され、不可視のテキストの外にできるだけ早くカレントマッチを移動させます。変数isearch-hide-immediatelynilにカスタマイズした場合、マッチが見つかった任意の不可視テキストは、検索または置換コマンドがexitするまで表示され続けます。

遅い回線で接続されたリモートマシンのディスプレーなど、遅い端末でインクリメンタルな検索をすると、検索によりディスプレーの大きな範囲を再描画しなければならないことが、煩わしくなるかもしれません。Emacsは、遅い端末にたいして特別なディスプレーモードを提供します。これは検索が別の小さなウィンドウをポップアップして、マッチの周辺テキストをそのウィンドウに表示します。小さいウィンドウは早く表示できるので、遅いスピードの影響による煩わしさは軽減されます。変数search-slow-speedは、Emacsがこのディスプレーモードを使用する、ボーレートの下限値を決定します。変数search-slow-window-linesは、Emacsがポップアップして検索結果を表示するウィンドウの行数を制御します(デフォルトは1)。このウィンドウは通常、検索を開始したバッファーを表示するウィンドウの下部にポップアップされますが、search-slow-window-linesの値が負の場合、ウィンドウは上部に配され、search-slow-window-linesの絶対値が表示される行数になります。