1. タグファイルの作成
ctags コマンドでタグファイルを作成する。
% ls cdmat.c fdump fdump.c fdump.h fline.c fread.c libSAMPLE.a makefile s.cdmat.c s.fdump.c s.fline.c s.fread.c % ctags *.c Duplicate entry in files s.cdmat.c and cdmat.c: cdmat (Warning only) Duplicate entry in files s.fline.c and fline.c: f_line (Warning only) Duplicate entry in files s.fread.c and fread.c: f_read (Warning only)
2. タグの参照
vi で fdump.c を開き、後半部分の f_read() 関数を呼び出している部分を探し、
関数名の上にカーソルを位置づける(この例では r に位置づけられている)
% cat tags Mfdump fdump.c /^main (argc, argv)$/ Ms.fdump s.fdump.c /^main (argc, argv)$/ cdmat cdmat.c /^char cdmat(code)$/ f_line fline.c /^void f_line(array)$/ f_read fread.c /^int f_read(fid,buff)$/ % vi fdump.c : : for(;;){ printf("%04X | ",count ); ret = f_read( fid, line ); f_line( line ); if( 0 == ret ){ break; } count += WIDTH; } fclose( fid ); } ↓(Ctrl)+] を押す #include "fdump.h" char freadVER[]=" %W% %D%,%T%"; int f_read( fid, buff ) FILE *fid; char *buff; { int ret,i; : :f_read()を定義している fread.c がバッファに読み込まれ、該当位置にカーソルが移動します。
この例ではC言語でしたが、ctags は数多くの言語に対応しています。
$ ctags --list-languages Ant Asm Asp Awk Basic :PHP を使った例を以下に示します。 --langmap で使用する言語を指定し、:+ でファイルの拡張子を追加しています。
$ ctags --langmap=PHP:+.inc $ cat tags bdr_header common.inc /^function bdr_header( $t1, $t2, $lang="ja", $scsw=0 ) $/;" f bdr_headerI18N common.inc /^function bdr_headerI18N( $msgid, $lang, $scsw=0)$/;" f bdr_headerLight common.inc /^function bdr_headerLight( $t1, $t2 ) $/;" f bdr_session common.inc /^function bdr_session()$/;" f bdr_top common.inc /^function bdr_top() {$/;" f