Previous: その他の検索およびループコマンド, Up: 検索と置換 [Contents][Index]
このセクションでは、他では説明されていない、その他の検索に関連した機能を説明します。
インクリメンタル検索にたいするデフォルトの検索モードは、変数search-default-mode
により指定されます。この変数には、nil
、t
、または関数を指定できます。nil
の場合、デフォルトのモードはcharacter
foldingなしのリテラル検索です。しかし、case
foldingにたいしてはcase-fold-search
、lax-whitespace
matchにたいしてはsearch-whitespace-regexp
により決定されます(検索中のLaxマッチングを参照してください)。値がt
の場合、インクリメンタル検索のデフォルトはregexp検索になります。デフォルト値には、case
foldingとlax-whitespace matchingだけを行なう関数が指定されています。
継続的なインクリメンタル検索でのカレントマッチは、isearch
フェイスでハイライトされます。変数search-highlight
をnil
にセットすることにより、このハイライトを無効にできます。
(たとえば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-3
、isearch-group-4
、…のようにこの同じ番号付けスキームを使用してフェイスを追加定義する場合にはM、N+M
、2N+M
、…番目の部分式のハイライトにフェイスisearch-group-M
が使用されます。ここでNはisearch-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-sやC-rをタイプしても、それらすべてのマッチのハイライトを終了するまで、Emacsは反応しないでしょう。したがって小さな数を指定することにより、Emacsの反応を改善できます。
isearch-lazy-count
¶検索プロンプトにカレントマッチ数とマッチ総数を表示します。
lazy-count-prefix-format
¶lazy-count-suffix-format
これらの2つの変数はisearch-lazy-count
の表示にたいするカレントマッチ数とマッチ総数のフォーマットを決定します。
インクリメンタル検索で検索文字列が空のときにRETを入力すると、通常これは非インクリメンタル検索を開始します(実際には、これにより検索文字列の編集が開始され、次のRETで検索を行ないます)。しかし、変数search-nonincremental-instead
をnil
にセットした場合、検索文字列が空でも、RETのタイプは常にインクリメンタル検索をexitします。
デフォルトではインクリメンタル検索および問い合わせ付き置換コマンドは不可視のテキストにもマッチしますが、そのようなマッチは隠され、不可視のテキストの外にできるだけ早くカレントマッチを移動させます。変数isearch-hide-immediately
をnil
にカスタマイズした場合、マッチが見つかった任意の不可視テキストは、検索または置換コマンドがexitするまで表示され続けます。
遅い回線で接続されたリモートマシンのディスプレイなど、遅い端末でインクリメンタルな検索をすると、検索によりディスプレイの大きな範囲を再描画しなければならないことが、煩わしくなるかもしれません。Emacsは、遅い端末にたいして特別なディスプレイモードを提供します。これは検索が別の小さなウィンドウをポップアップして、マッチの周辺テキストをそのウィンドウに表示します。小さいウィンドウは早く表示できるので、遅いスピードの影響による煩わしさは軽減されます。変数search-slow-speed
は、Emacsがこのディスプレイモードを使用する、ボーレートの下限値を決定します。変数search-slow-window-lines
は、Emacsがポップアップして検索結果を表示するウィンドウの行数を制御します(デフォルトは1)。このウィンドウは通常、検索を開始したバッファーを表示するウィンドウの下部にポップアップされますが、search-slow-window-lines
の値が負の場合、ウィンドウは上部に配され、search-slow-window-lines
の絶対値が表示される行数になります。