Next| Prev|Index|凡例


B.3 タグの作成

ctags コマンドでタグファイルを作成しておくと、キーワードにカーソルを合わせ (Ctrl)+] によって、その内容を定義している場所を即座に参照できます。
【例題】
カレントディレクトリにあるソースファイル群を元にタグファイルを作成し、ユーザ定義関数を参照する。

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

Next| Prev| Up| Index