C'est un outil qui génère un fichier tag contenant les endroits où sont définis les éléments (fonctions, classes) dans les fichiers source. Ce fichier tag est ensuite utilisable par des éditeurs de texte comme vim. Je pensais qu'il ne marchait que pour le C et le C++, mais en fait il prend en compte beaucoup de langages :
romain@lilibox:~$ ctags --list-languages
Ant
Asm
Asp
Awk
Basic
BETA
C
C++
C#
Cobol
DosBatch
Eiffel
Erlang
Flex
Fortran
HTML
Java
JavaScript
Lisp
Lua
Make
MatLab
OCaml
Pascal
Perl
PHP
Python
REXX
Ruby
Scheme
Sh
SLang
SML
SQL
Tcl
Tex
Vera
Verilog
VHDL
Vim
YACC
Vous construisez le fichier avec
ctags -R
Dans le code source avec vim, faites Ctrl+] pour aller à la définition d'une fonction[1] et Ctrl+t pour revenir à l'endroit précédent.
L'inconvénient est qu'il faut générer les tags dès qu'on retouche aux fichiers où sont définies les fonctions appelées, mais pour débugger du shell ou du C tordu, ça aide bien !
[1] et oui, cela marche mieux avec la disposition américaine des touches !