Next: , Previous: , Up: Find Identifiers   [Contents][Index]


28.4.1.3 識別子の検索と置換

このセクションのコマンドは、識別子自身、またはファイル内の識別子にたいするリファレンスにたいして、様々な検索と置換を行ないます。

M-?

ポイント位置の識別子にたいする、すべてのリファレンスを探します。

M-x xref-query-replace-in-results RET regexp RET replacement RET

*xref*バッファーに表示されているすべての識別子の名前にたいして、regexpreplacementにインタラクティブに置換します。

M-x tags-search RET regexp RET

選択されたタグテーブルのファイルから、regexpを検索します。

M-x tags-query-replace RET regexp RET replacement RET

選択されたタグテーブルの各ファイルにたいして、query-replace-regexpを実行します。

M-x fileloop-continue

ポイントのカレント位置から、上記コマンドの最後の2つを再開します。

M-?は、ポイント位置の識別子にたいして、必要に応じて補完つきで識別子の入力を促しつつ、すべてのリファレンスを探します。カレントのバックエンド(Xrefを参照)に依存して、ポイント位置に有効な識別子を見つけた場合でも、このコマンドは識別子の入力を促すかもしれません。プレフィクス引数が指定された場合、このコマンドは常に識別子の入力を求めます(常に入力を求めるようにしたい場合はxref-prompt-for-identifiert、ポイント位置に利用できる識別子がない場合のみ入力を求めるようにするにはnilにカスタマイズすればよい)。それからこのコマンドは、その識別子にたいするすべてのリファレンスについて、ファイル名と識別子が参照されている行を、*xref*バッファーに表示します。このバッファーではXREFモードのコマンドが利用可能です。Xref Commandsを参照してください。

変数xref-auto-jump-to-first-xrefの値がtなら、xref-find-referencesは最初の結果に自動的にジャンプして、それを表示するウィンドウを選択します。値がshowならまず結果を表示しますが、*xref*バッファーを表示するウィンドウが選択されたままになります。値がmoveなら*xref*バッファーで最初の結果を選択しますが表示はしません。デフォルト値のnilでは*xref*バッファーに結果を表示するだけで、結果を何も選択しません。

M-x xref-query-replace-in-resultsは、通常のM-x query-replace-regexpと同様に、識別子の名前にマッチするregexpと、置換する文字列を読み取ります。それから、その識別子が参照されている、すべてのファイルのすべての場所で、マッチする識別子の名前にたいして指定された置換を行ないます。これはリファクタリングの一部として、識別子のリネームを行なうときに有用です。このコマンドはM-?により生成された*xref*バッファーで呼び出されるべきです。

M-x tags-searchは、ミニバッファーを使用してregexpを読み取り、選択されたタグテーブルのすべてのファイルから、1ファイルずつマッチを検索します。これは検索しているファイル名を表示するので、進行状況を確認することができます。マッチが見つかった場合、tags-searchはリターンします。このコマンドには利用可能なタグテーブル(Tags Tablesを参照してください)が必要です。

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に似ていますが、入力へのマッチを繰り返し処理します。問い合わせ付き置換については、Query Replaceを参照してください。

変数tags-case-fold-searchの値をカスタマイズすることにより、タグ検索コマンドの大文字小文字の扱いを制御できます。デフォルトには、case-fold-searchの値と同じ設定が使用されます(Lax Searchを参照してください)。

1回のM-x tags-query-replaceの呼び出しで、タグテーブルのすべてのファイルを検索することが可能です。しかし、一時的に検索を抜けられると便利なときもあります。これは、問い合わせ付き置換として特別な意味をもたない入力イベントで行うことができます。つづけて問い合わせ付き置換を再開するには、M-x fileloop-continueとタイプします。このコマンドは、最後のタグ検索または置換コマンドを再開します。たとえばカレントファイルの残りをスキップするには、M-> M-x fileloop-continueとタイプします。

上記で説明したコマンドは、xref-find-definitions系の検索より広範な検索を行うことに注意してください。xref-find-definitionsコマンドは、部分文字列または正規表現にマッチする識別子の定義だけを検索します。コマンドxref-find-referencestags-searchtags-query-replaceは、通常の検索および置換コマンドがカレントバッファーにたいして行うように、識別子またはregexpにたいするマッチを検索します。

xref-find-referencestags-searchのかわりに、サブプロセスとしてgrepを実行して、Emacsにマッチした行を1つずつ表示させることができます。Grep Searchingを参照してください。