次: , 前: Find Tag, 上: Tags


20.13.5 タグテーブルを用いた探索と置換

ここで紹介するコマンドは、選択されたタグテーブルに記録されている すべてのファイルを1つ1つ訪れては探索を行います。 これらのコマンドに対しては、タグテーブルは探索対象となる 一連のファイルを指定するだけです。

M-x tags-search <RET> regexp <RET>
選択されたタグテーブル内の各ファイルから 指定された正規表現を探索する。
M-x tags-query-replace <RET> regexp <RET> replacement <RET>
選択されたタグテーブル内の各ファイルに対して、 query-replace-regexpを実行する。
M-,
ポイント位置から上記のコマンドのいずれかを再実行する (tags-loop-continue)。

M-x tags-searchは、ミニバッファで正規表現を読み取り、 選択されたタグテーブル内のすべてのファイル1つ1つについて、 正規表現に一致する部分を探します。 このコマンドは探索しているファイル名を表示するので、 進行状況がわかります。 正規表現に一致する部分がみつかると、tags-searchはすぐに戻ります。

一致する部分をみつけたあとに、残りも探したくなるでしょう。 つぎの一致を探すには、 M-,tags-loop-continue)と打って、 tags-searchを再開します。 これは、カレントバッファの残りを探索してから、 タグテーブルの残りのファイルについても探索します。

M-x tags-query-replaceは、タグテーブル内のすべてのファイルを対象に、 query-replace-regexpを実行します。 このコマンドは、通常のM-x query-replace-regexp (問い合わせ型置換)と同じく、 探索すべき正規表現と置換文字列を読み取ります。 そして、M-x tags-searchのように探索を行い、 利用者の入力に応じて一致部分を処理することを繰り返します。 問い合わせ型置換について詳しくは、See Replace

M-x tags-query-replaceを一度起動するだけで、 タグテーブル内の全ファイルの置換を行うことができます。 しかし、一時的に置換作業から抜け出して、 問い合わせ型置換とは関係ないことを行えると便利です。 M-,と打てば、問い合わせ型置換を再開できます。 このコマンドは、最後に行ったタグの探索コマンドか置換コマンドを 再開します。

ここで紹介したコマンドは、find-tag系列のコマンドよりも、 幅広い探索を実行します。 find-tagコマンドは、指定した部分文字列や正規表現に一致する タグの定義だけをみつけます。 コマンドtags-searchtags-query-replaceは、 通常の探索コマンドや置換コマンドがカレントバッファで行うように、 正規表現に一致するあらゆる部分を探し出します。

これらのコマンドは、(Emacsバッファにまだ訪れていないものに対しては) 探索すべきファイル用に一時的なバッファを作成します。 一致部分がみつからなければバッファはただちに消されますが、 みつかれば存続します。

tags-searchは、grepプログラムにたいへんよく似ていると 思われたかもしれません。 Emacsの下位プロセスとしてgrepを実行して、 Emacsに一致した行を1つずつ表示させることもできます。 これは、コンパイルを実行するのと同じように動作します。 grepが一致を検出したソース箇所を探すことは、 コンパイルエラーを探すのと同様に動作します。 See Compilation