このセクションのコマンドは、識別子自身、またはファイル内の識別子にたいするリファレンスにたいして、様々な検索と置換を行ないます。
ポイント位置の識別子にたいする、すべてのリファレンスを探します。
*xref*バッファーに表示されているすべての識別子の名前にたいして、regexpをreplacementにインタラクティブに置換します。
識別子fromのすべてのインスタンスを、新たな名前toにインタラクティブにリネームします。
選択されたタグテーブルのファイルから、regexpを検索します。
選択されたタグテーブルの各ファイルにたいして、query-replace-regexp
を実行します。
ポイントのカレント位置から、上記コマンドの最後の2つを再開します。
M-?は、ポイント位置の識別子にたいして、必要に応じて補完つきで識別子の入力を促しつつ、すべてのリファレンスを探します。カレントのバックエンド(識別子のリファレンスを探すを参照)に依存して、ポイント位置に有効な識別子を見つけた場合でも、このコマンドは識別子の入力を促すかもしれません。プレフィクス引数が指定された場合、このコマンドは常に識別子の入力を求めます(常に入力を求めるようにしたい場合はxref-prompt-for-identifier
をt
、ポイント位置に利用できる識別子がない場合のみ入力を求めるようにするにはnil
にカスタマイズすればよい)。それからこのコマンドは、その識別子にたいするすべてのリファレンスについて、ファイル名と識別子が参照されている行を、*xref*バッファーに表示します。このバッファーではXREFモードのコマンドが利用可能です。*xref*バッファーで利用可能なコマンドを参照してください。
変数xref-auto-jump-to-first-xref
の値がt
なら、xref-find-references
は*xref*バッファーの最初の結果に自動的にジャンプして、そのリファレンスを表示するウィンドウを選択します。M-g M-n (next-error
)やM-g M-p
(previous-error
)で他の結果を選択することもできます(Compilationモードを参照)。値がshow
なら最初の結果を表示しますが、*xref*バッファーを表示するウィンドウが選択されたままになります。値がmove
なら*xref*バッファーで最初の結果を選択しますが表示はしません。RETを用いることによってそのリファレンスを実際に表示できます。デフォルト値のnil
では*xref*バッファーに結果を表示するだけで、結果を何も選択しないし結果のリファレンスも表示しません。
r (xref-query-replace-in-results
)は通常のM-x
query-replace-regexpのように、replacement文字列を読み取ります。そして*xref*バッファーに表示されたその識別子を参照するすべてのファイル、すべての箇所において、その識別子を新たな名前replacementに置き換えます。これはリファクタリングの一環として識別子の名称を変更する際に役に立つでしょう。このコマンドはM-?で生成された*xref*バッファーで呼び出す必要があります。このコマンドはデフォルトでは識別子の名前全体をreplacementで置き換えますが、プレフィックス引数とともに呼び出した場合には識別子の名前にマッチさせるregexpの入力を求めて、識別子の名称からregexpにマッチした部分だけをreplacementで置き換えます。
M-x
xref-find-references-and-replaceはxref-query-replace-in-results
と似ていますが、これは名前fromで指定される単一の識別子をリネームしたい場合に特に便利なコマンドです。
M-x
tags-searchは、ミニバッファーを使用してregexpを読み取り、選択されたタグテーブルのすべてのファイルから、1ファイルずつマッチを検索します。これは検索しているファイル名を表示するので、進行状況を確認することができます。マッチが見つかった場合、tags-search
はリターンします。このコマンドには利用可能なタグテーブル(tagsテーブルを参照してください)が必要です。
tags-search
で1つのマッチが見つかったら、おそらく残りのすべてについても検索したいと思うでしょう。M-x
fileloop-continueは、多くのマッチを探すためにtags-search
を再開します。これはカレントバッファーの残りの部分を検索して、その後タグテーブルの残りのファイルを検索します。
M-x
tags-query-replaceは、タグテーブルのすべてのファイルにたいして、1つのquery-replace-regexp
を実行します。これは、通常のM-x
query-replace-regexpと同様、検索するregexpと、それを置換する文字列を読み取ります。この検索はむしろM-x
tags-searchに似ていますが、入力へのマッチを繰り返し処理します。問い合わせ付き置換については、問い合わせつき置換を参照してください。
変数tags-case-fold-search
の値をカスタマイズすることにより、タグ検索コマンドの大文字小文字の扱いを制御できます。デフォルトには、case-fold-search
の値と同じ設定が使用されます(検索中のLaxマッチングを参照してください)。
1回のM-x tags-query-replaceの呼び出しで、タグテーブルのすべてのファイルを検索することが可能です。しかし、一時的に検索を抜けられると便利なときもあります。これは、問い合わせ付き置換として特別な意味をもたない入力イベントで行うことができます。つづけて問い合わせ付き置換を再開するには、M-x fileloop-continueとタイプします。このコマンドは、最後のタグ検索または置換コマンドを再開します。たとえばカレントファイルの残りをスキップするには、M-> M-x fileloop-continueとタイプします。
上記で説明したコマンドは、xref-find-definitions
系の検索より広範な検索を行うことに注意してください。xref-find-definitions
コマンドは、部分文字列または正規表現にマッチする識別子の定義だけを検索します。コマンドxref-find-references
、tags-search
、tags-query-replace
は、通常の検索および置換コマンドがカレントバッファーにたいして行うように、識別子またはregexpにたいするマッチを検索します。
xref-find-references
やtags-search
のかわりに、サブプロセスとしてgrep
を実行して、Emacsにマッチした行を1つずつ表示させることができます。Emacs下でのGrepによる検索を参照してください。