Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ctags(1)			 User Commands			      ctags(1)

       ctags - create a	tags file for use with ex and vi

       /usr/bin/ctags [-aBFtuvwx] [-f tagsfile]	file...

       /usr/xpg4/bin/ctags [-aBFuvwx] [-f tagsfile] file...

       The  ctags  utility  makes  a tags file for ex(1) from the specified C,
       C++, Pascal, FORTRAN, yacc(1), and  lex(1) sources. A tags  file	 gives
       the  locations  of  specified objects (in this case functions and type-
       defs) in	a group	of files.  Each	line of	the  tags  file	 contains  the
       object name, the	file in	which it is defined, and an address specifica-
       tion for	the object definition. Functions are searched with a  pattern,
       typedefs	with a line number. Specifiers are given in separate fields on
       the line, separated by <SPACE> or  <TAB>	 characters.  Using  the  tags
       file, ex	can quickly find these objects'	definitions.

       Normally,   ctags  places  the  tag descriptions	in a file called tags;
       this may	be overridden with the -f option.

       Files with names	ending in  .c or .h are	assumed	to be either C or  C++
       source files and	are searched for C/C++	routine	and macro definitions.
       Files with names	ending in .cc, .C, or  .cxx, are  assumed  to  be  C++
       source  files.  Files  with  names ending in .y are assumed to be  yacc
       source files. Files with	names ending in	.l  are	 assumed  to  be   lex
       files.	Others are first examined to see if they contain any Pascal or
       FORTRAN routine definitions; if not, they are processed	again  looking
       for C  definitions.

       The tag main is treated specially in C or C++ programs.	The tag	formed
       is created by prepending	M to file, with	a trailing  .c ,  .cc  .C,  or
       .cxx  removed,  if  any,	and leading path name components also removed.
       This makes use of ctags practical in directories	 with  more  than  one

       The  precedence of the options that pertain to printing is -x, -v, then
       the remaining options. The following options are	supported:

       -a    Appends output to an existing tags	file.

       -B    Uses backward searching patterns (?...?).

       -f tagsfile
	     Places the	tag descriptions in a file called tagsfile instead  of

       -F    Uses forward searching patterns (/.../) (default).

       -t    Creates  tags  for	typedefs. /usr/xpg4/bin/ctags creates tags for
	     typedefs by default.

       -u    Updates the specified files in tags, that is, all	references  to
	     them  are	deleted,  and the new values are appended to the file.
	     Beware: this option is implemented	in a way that is rather	 slow;
	     it	is usually faster to simply rebuild the	tags file.

       -v    Produces  on  the	standard  output an index listing the function
	     name, file	name, and page number (assuming	64 line	pages).	 Since
	     the  output  will	be  sorted into	lexicographic order, it	may be
	     desired to	run the	output through sort -f.

       -w    Suppresses	warning	diagnostics.

       -x    Produces a	list of	object names, the line number and file name on
	     which  each  is  defined,	as  well  as the text of that line and
	     prints this on the	standard output. This is a simple index	 which
	     can be printed out	as an off-line readable	function index.

       The following file operands are supported:

	     Files  with basenames ending with the .c suffix are treated as C-
	     language source code.

	     Files with	basenames ending with the .h suffix are	treated	as  C-
	     language source code.

	     Files  with  basenames  ending  with the .f suffix	are treated as
	     FORTRAN-language source code.

       The -v option is	mainly used with vgrind	which  will  be	 part  of  the
       optional	BSD Compatibility Package.

       Example 1: Producing entries in alphabetical order

       Using  ctags  with the -v option	produces entries in an order which may
       not always be appropriate for vgrind. To	produce	results	in  alphabeti-
       cal order, you may want to run the output through sort -f.

       example%	ctags -v filename.c filename.h | sort -f > index
       example%	vgrind -x index

       Example 2: Building a tags file

       To  build  a tags file for C sources in a directory hierarchy rooted at
       sourcedir, first	create an empty	tags file, and then run	 find(1)

       example%	cd sourcedir  ;	rm -f tags ; touch tags
       example%	find . \( -name	SCCS -prune -name \\
	      '*.c' -o -name '*.h' \) -exec ctags -u {}	\;

       Notice that spaces must be entered exactly as shown.

       See environ(5) for descriptions of the following	environment  variables
       that  affect the	execution of ctags: LC_COLLATE,	LC_CTYPE, LC_MESSAGES,
       and NLSPATH.

       The following exit values are returned:

       0     Successful	completion.

       >0    An	error occurred.

       tags  output tags file

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Availability		     |SUNWtoo			   |

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Availability		     |SUNWxcu4			   |

       ex(1), lex(1), vgrind(1), vi(1),	 yacc(1),  attributes(5),  environ(5),

       Recognition  of	functions, subroutines,	and procedures for FORTRAN and
       Pascal is done in a very	simpleminded way. No attempt is	made  to  deal
       with  block  structure;	if you have two	Pascal procedures in different
       blocks with the same name, you lose.

       The method of deciding whether to look for  C  or  Pascal  and  FORTRAN
       functions is a hack.

       The ctags utility does not know about #ifdefs.

       The  ctags  utility should know about Pascal types. Relies on the input
       being well formed to detect typedefs. Use of -tx	shows  only  the  last
       line of typedefs.

SunOS 5.9			  18 Mar 1997			      ctags(1)


Want to link to this manual page? Use this URL:

home | help