Etags

提供: mechanical Wiki
ナビゲーションに移動 検索に移動

タグファイルを作る

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 置換を実行せず、次の候補に移動せず終了
. 置換を実行して、次の候補に移動せず終了