Frecuentemente necesitamos acceder a una clase, método, función o constante de nuestro código. Y tenemos que hacerlo desde otro fichero en el que nos encontramos programando. Para hacer esto fácilmente tenemos los Tags.
Con los tags, podemos poner el cursor sobre una palabra (clase, método, función...) y, pulsando CTRL-], o CTRL-LeftMouse, accederemos directamente a su definición. Pulsando CTRL-T o CTRL-RightMouse volveremos al fichero y posición anteriores.
Debo indicar que, al menos en mi caso CTRL-] no funciona (porque estoy en modo visual). Debo utilizar CTRL-5 (o las opciones con el ratón ya indicadas).
Si queremos que la definición del término se abra en una nueva ventana, debemos pulsar previamente CTRL-W.
Para instalarlo necesitaremos el programa ctags-exuberant en nuestro sistema.
Para hacerlo funcionar primero debemos generar el fichero de tags, en el que se guardan referencias de cada término y luego indicarle a Vim qué fichero debe utilizar como fichero de tags. Vamos por pasos:
Para generar el fichero de tags de un directorio de trabajo se puede utilizar un script como este:
#!/bin/bash
cd /path/directorio/proyecto
exec ctags-exuberant -f proyecto.tags \
-h ".php" -R \
--exclude="\.svn" \
--exclude="\doc" \
--exclude="\PHPUnit" \
--exclude="\jsunit" \
--totals=yes \
--tag-relative=yes \
--PHP-kinds=+cf \
--regex-PHP='/abstract class ([^ ]*)/\1/c/' \
--regex-PHP='/interface ([^ ]*)/\1/c/' \
--regex-PHP='/(public |static |abstract |protected |private )+function ([^ (]*)/\2/f/'
Estas opciones, que se basan en la explicación de Mathew Weier O'Phinney Exuberant ctags with PHP in Vim, generan un fichero de tags con el nombre proyecto.tags, excluyen diversos directorios (svn, doc, PHPUnit y jsunit), con paths relativos al directorio, incluyendo funciones, etc. (ver man ctags-exuberant).
Una vez creado el fichero de tags (actualizado periódicamente según avance el proyecto), lo cargamos en Vim con :set tags=proyecto.tags.
Y ya lo tenemos listo.