29 Oct 2009, Tagged in : ctags, php, and vim

Ce billet est certainement les millionième howto du web sur vim+ctags. Je partage quand même ce mémo au cas où il soit utile à quelqu’un.

sudo aptitude install exuberant-ctags

Ajoutez les lignes suivantes au fichier ~/.vimrc :

set tags=tags;/ " Permet de rechercher un fichier "tags" en remontant depuis le répertoire courant jusqu'à la racine jusqu'à ce qu'il soit trouvé
map  :tab split:exec("tag ".expand(""))
map  :vsp :exec("tag ".expand(""))

Ajoutez ceci à votre ~/.bashrc ou ~/.bash_aliases :

phptags () {
    ctags-exuberant -h ".php" -R                     \
        --exclude="\.svn"                            \
        --totals=yes                                 \
        --tag-relative=yes                           \
        --PHP-kinds=+cf                              \
        --regex-PHP='/abstract class ([^ ]*)/\1/c/'  \
        --regex-PHP='/interface ([^ ]*)/\1/c/'       \
        --regex-PHP='/trait ([^ ]*)/\1/c/'           \
        --regex-PHP='/(public |static |abstract |protected |private )+function ([^ (]*)/\2/f/'
}

Puis placez vous à la racine de votre projet et exécutez :

phptags

Un fichier tags devrait avoir été créé, et devrait être pris en compte au prochain démarrage de vim.

Voici donc les différentes façon de naviguer dans vos sources (en vous plaçant au début d’un appel de fonction) :

  • Ctrl ] Devrait vous amener à la définition de la fonction/classe (= Ctrl ClicGauche)
  • Ctrl T Vous ramènera à l’appel de la fonction (= Ctrl ClicDroit)
  • Ctrl W Ctrl ] Ouvrira la définition dans un panneau horizontal
  • Alt ] Ouvrira la définition dans un panneau vertical
  • Ctrl \ Ouvrira la définition dans un nouvel onglet