Etags
ナビゲーションに移動
検索に移動
タグファイルを作る
Emacsでタグを使うには、あらかじめタグファイルを作っておく必要がある。
タグファイルは、etags
というコマンドで作る。
Emacsをインストールすると、デフォルトでは/usr/local/bin/etags
にインストールされる。
カレントディレクトリにすべてのソースファイルがある場合
etags *.[ch]
で、カレントディレクトリにTAGS
という名前のタグファイルができる。
ソースファイルがディレクトリで階層化されている場合は
find `pwd` -name "*.[ch]" -print | etags -
TAGS
以外の名前やカレントディレクトリ以外にタグファイルを作りたい場合
etags *.[ch] -o ~/TAGS.1
オプション-o
で、タグファイル名を明示的に指定できる。
もちろん、作った後でコピーしても同じことだけど、cron等で自動生成する場合は便利。
既存のタグファイルに追加する
例えば、上のTAGS
に*.cpp
用のタグを追加するなら、
find `pwd` -name "*.cpp" -print | etags - -a -o $HOME/TAGS
オプション-a
で、追加を指定できる。
注意
ソースファイルを変更した場合は、タグファイルを新たに作りなおす必要がある。
コマンド
タグファイルを作れば、関数名、#define
された定数、typedef
されたタイプ名が、シンボル名として検索できる。
キー | 機能 |
---|---|
M-. | 関数の定義箇所へ |
C-x 4 . | 関数の定義を別ウィンドウに表示 |
M-* | 前に戻る |
C-u M-. | 同名の定義の次の箇所へ |
C-u M-* | 同名の定義の前に戻る |
M-x list-tags | 関数の一覧を表示 |
M-x tags-search | タグファイルに登録されているすべてのファイルに対してタグジャンプ |
M-x visit-tags-table | TAGSファイルの切り替え |
M-x tags-apropos | 正規表現に一致した関数のみ表示 |
M-x tags-reset-tags-tables | タグファイルの情報をリセット |
Meta+.の後にはシンボル名を指定する。 シンボル名はTab ↹キーで補完できる。 シンボル名を入力せず↵ Enterキーを押せば、カーソルがある位置のシンボル名を定義している場所に飛ぶ。 たまに、シンボル名を正確に認識せず変なところに飛ぶ。
タグ置換
Meta+x tags-query-replaceをすることで、タグファイルに登録されているすべてのファイルに対して置換が行える。 そのときの操作方法は以下の通り。
キー | 機能 |
---|---|
y | 置換を実行し、次の候補へ移動する |
n | 置換を実行せず、次の候補へ移動する |
q or RET | 置換を実行せず、次の候補に移動せず終了 |
. | 置換を実行して、次の候補に移動せず終了 |