GNU/Linux >> Tutoriels Linux >  >> Linux

Ctags et Taglist :convertissez l'éditeur Vim en un magnifique navigateur de code source pour n'importe quel langage de programmation


Avec l'aimable autorisation de la menthe impériale

Cet article fait partie de la série Vi / Vim Tips and Tricks en cours. En tant que programmeur ou administrateur système, vous naviguerez constamment dans les codes sources et les scripts shell.

Voici quelques activités typiques que vous pouvez effectuer lorsque vous parcourez un fichier de code source :

  1. Naviguer vers la définition de la fonction en spécifiant le nom de la fonction.
  2. Naviguer vers la définition de la fonction à partir de "l'appel de la fonction".
  3. Revenir à nouveau à l'appel de fonction à partir de la définition.
  4. Affichage du prototype/de la signature des fonctions ou des variables.
  5. Affichage du nombre de fonctions dans un fichier, etc.,


Dans cet article, voyons comment effectuer efficacement les activités ci-dessus dans l'éditeur Vim en utilisant ctags et le plugin taglist.

Les techniques mentionnées dans cet article utilisant l'éditeur Vim peuvent être utilisées pour n'importe quel langage de programmation.

Je. Installation et configuration du package Ctags

Étape 1 :Installer le package ctags

# apt-get install exuberant-ctags

(or)

# rpm -ivh ctags-5.5.4-1.i386.rpm
warning: ctags-5.5.4-1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...          ########################################### [100%]
   1:ctags            ########################################### [100%]

Étape 2 :Générer des ctags sur votre code source

Allez dans le répertoire où se trouve votre code source. Dans l'exemple ci-dessous, j'ai stocké tout mon code source de programmation C sous le répertoire ~/src.

# cd ~/src

# ctags *.c

La commande ctags créera des balises de nom de fichier qui contiendront toutes les informations requises (balises) sur les fichiers de programme *.c. Voici la sortie partielle des entrées de balises dans le fichier ctags.

# cat tags
AddAcl  dumputils.c     /^AddAcl(PQExpBuffer aclbuf, const char *keyword)$/;"   f       file:
ArchiveEntry    pg_backup_archiver.c    /^ArchiveEntry(Archive *AHX,$/;"        f
AssignDumpId    common.c        /^AssignDumpId(DumpableObject *dobj)$/;"        f

II. 4 utilisations puissantes de Ctags dans l'éditeur Vim

1. Accédez à la définition de la fonction en spécifiant le nom de la fonction à l'aide de :ta

Dans l'exemple ci-dessous, :ta main vous mènera à la définition de la fonction principale dans mycprogram.c

# vim mycprogram.c
:ta main

En utilisant cette fonction, vous pouvez accéder à n'importe quelle définition de fonction en spécifiant le nom de la fonction.

2. Naviguer vers la définition de la fonction à partir de "l'appel de la fonction" en utilisant Ctrl + ]

Lorsque le curseur est sous l'appel de la fonction, appuyez sur CTRL + ] pour accéder à la définition de la fonction. Dans l'exemple suivant, lorsque le curseur se trouve dans l'appel de fonction ssh_xcalloc, appuyer sur Ctrl + ] vous amènera à la définition de la fonction ssh_xcalloc.

# vim mycprogram.c
            av = ssh_xcalloc(argc, sizeof(char *));

Remarque : Si les ctags ne trouvent pas cette fonction, vous obtiendrez le message suivant dans la barre d'état vim en bas :E426 tag not found ssh_xcalloc

3. Revenir à nouveau à l'appel de fonction à partir de la définition en utilisant Ctrl + t

Appuyez sur CTRL + t qui ramènera à nouveau à l'appel de la fonction.

4. Naviguer dans une liste de noms de fonctions qui ont des noms similaires

Dans cet exemple, :ta ira à la définition de fonction dont le nom commence par get, et construit également une liste pour naviguer avec les fonctions pertinentes.

# vim mycprogram.c

:ta /^get

Les commandes vim suivantes peuvent être utilisées pour naviguer dans les fonctions pertinentes

  • :ts – affiche la liste.
  •  :tn – passe à la balise suivante dans cette liste.
  •  :tp – va à la balise précédente dans cette liste.
  • :tf – va à la fonction qui est dans la première de la liste.
  • :tl – va à la fonction qui est dans la dernière de la liste.

III. Plugin Taglist :Éditeur Vim comme navigateur de code source ultime

Les Ctags ci-dessus n'ont peut-être pas donné une sensation de navigation dans le code source, car ils sont pilotés par des commandes au lieu de parcourir visuellement le code. Donc, si vous voulez naviguer dans la source comme si vous naviguiez dans le navigateur de fichiers, vous devez utiliser le plugin vim taglist qui fait de vim un navigateur de code source.

L'auteur du plugin vim taglist Yegappan Lakshmanan, en parle comme

Le plugin "Tag List" est un plugin de navigateur de code source pour Vim et fournit un aperçu de la structure des fichiers de code source et vous permet de parcourir efficacement les fichiers de code source pour différents langages de programmation.

Étape 1 :Téléchargez le plugin Vim Taglist

Téléchargez-le à partir du site Web vim.org comme indiqué ci-dessous.

$ cd /usr/src

$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

Étape 2 :Installez le plug-in TagList Vim

$ mkdir ~/.vim # if the directory does not exist already

$ cd ~/.vim

$ unzip /usr/src/taglist.zip
Archive:  /usr/src/taglist.zip
  inflating: plugin/taglist.vim
  inflating: doc/taglist.txt

Étape 3 :Activez le plug-in dans ~/.vimrc

Ajoutez la ligne suivante au ~/.vimrc pour activer le plugin pour l'éditeur Vim.

$ vim ~/.vimrc
filetype plugin on

Prérequis : ctags doit être installé pour utiliser le plugin taglist. Mais il n'est pas indispensable de générer la liste de balises manuellement par la commande ctags pour utiliser le plug-in de liste de balises.

IV. 5 fonctionnalités puissantes du plugin Taglist Vim

1. Ouvrez la fenêtre de liste de balises dans Vim en utilisant :TlistOpen

# vim mycprogram.c
:TlistOpen

Depuis l'éditeur vim, exécutez :TlistOpen comme indiqué ci-dessus, ce qui ouvre la fenêtre de la liste des balises avec les balises du fichier actuel, comme indiqué dans la figure ci-dessous.


Fig : Vim - Fenêtres de liste de balises/fonctions de code source

2. Accéder à la définition de fonction dans un code source

En cliquant sur le nom de la fonction dans le panneau de gauche, vous pourrez accéder à la définition de la fonction comme indiqué dans la figure ci-dessous.


Fig : Accéder rapidement à une définition de fonction

En plus de sauter rapidement aux noms de fonction, vous pouvez sauter aux classes, structures, variables, etc., en cliquant sur les valeurs correspondantes dans le navigateur de balises sur le côté gauche.

3. Sauter à la définition de fonction qui se trouve dans un autre fichier source

Lorsque vous parcourez une fonction dans un fichier source et que vous souhaitez accéder à la définition de la fonction qui se trouve dans un autre fichier, vous pouvez le faire de deux manières différentes.

Méthode 1 :

Si vous avez généré les ctags pour ce fichier, lorsque le curseur est dans l'appel de fonction, appuyer sur CTRL + ] vous amènera à la définition de la fonction. Et automatiquement, la fenêtre de la liste des balises affichera les balises de ce fichier nouvellement ouvert.

Méthode 2 :

Ouvrez également un autre fichier dans la même session vim qui mettra à jour la fenêtre de la liste des balises avec les informations sur ce fichier. Recherchez ce nom de fonction dans la fenêtre de la liste de balises, et en appuyant sur sur ce nom de fonction dans la fenêtre de la liste de balises, vous pouvez accéder à la définition de la fonction.

4. Visualisation du prototype/signature des fonctions ou des variables.

Appuyez sur "espace" dans le nom de la fonction ou dans le nom de la variable dans la fenêtre de la liste des balises pour en afficher le prototype (signature de fonction) dans la barre d'état VIM, comme indiqué ci-dessous. Dans l'exemple ci-dessous, cliquez sur la fonction selectDumpableTable dans la fenêtre Tag et appuyez sur la barre d'espace, ce qui affiche la signature de la fonction pour la fonction selectDumptableTable dans la barre d'état inférieure de Vim.


Fig : Afficher la signature de la fonction dans la barre d'état de Vim

5. Affichage du nombre total de fonctions ou de variables dans un fichier de code source

appuyez sur "espace" dans le type de balise dans la fenêtre de la liste des balises, qui en affiche le nombre. Dans l'exemple ci-dessous, lorsque le curseur est sur "fonction", appuyez sur espace, ce qui affichera le nombre total de fonctions dans le code source actuel.


Fig : Afficher le nombre total de fonctions disponibles dans le code source

Pour écrire efficacement de nouveaux fichiers de code source à l'aide de Vim, veuillez vous reporter à nos articles précédents :

  • Faites de Vim votre IDE Perl à l'aide du plug-in perl-support.vim
  • Faites de Vim votre IDE C/C++ à l'aide du plug-in c.vim
  • Faites de Vim votre Bash-IDE à l'aide du plugin bash-support.

Lecture recommandée

Vim 101 Hacks, par Ramesh Natarajan . Je suis un accro de la ligne de commande. Donc, naturellement, je suis un grand fan des éditeurs Vi et Vim. Il y a plusieurs années, lorsque j'écrivais beaucoup de code C sur Linux, je lisais tous les trucs et astuces disponibles pour l'éditeur Vim. Sur la base de mon expérience dans l'éditeur Vim, j'ai écrit le livre électronique Vim 101 Hacks qui contient 101 exemples pratiques sur diverses fonctionnalités avancées de Vim qui vous rendront rapide et productif dans l'éditeur Vim. Même si vous utilisez les éditeurs Vi et Vim depuis plusieurs années et que vous n'avez pas lu ce livre, rendez-vous service et lisez ce livre. Vous serez étonné des capacités de l'éditeur Vim.

Articles géniaux de l'éditeur Vim

Voici quelques excellents tutoriels pour l'éditeur Vi / Vim qui pourraient vous être utiles.

  • 12 exemples puissants de recherche et de remplacement pour l'éditeur Vim
  • Didacticiel sur les macros Vi et Vim :comment enregistrer et lire
  • Turbochargez le navigateur Firefox avec la fonctionnalité de l'éditeur Vim à l'aide du module complémentaire Vimperator

Remarque : Veuillez vous abonner à The Geek Stuff et ne manquez aucun des futurs trucs et astuces des éditeurs Vi et Vim .


Linux
  1. Outils et astuces open source pour améliorer les performances de votre PC Linux

  2. MuditaOS :un système d'exploitation mobile open source magnifique et minimal pour les téléphones polyvalents

  3. vifm :un navigateur de fichiers de terminal pour les amateurs de Vim hardcore

  4. MIXXX - Un logiciel DJ magnifique, gratuit et open source

  5. Comment trouver les appelants et l'appelé d'une fonction en code C dans vi/vim ?

5 jeux de course et de vol open source pour Linux

Comment enregistrer un fichier dans Vim / Vi et quitter l'éditeur

Plugins d'éditeur Vim utiles pour les développeurs de logiciels - partie 1

Visual Studio Code - Un éditeur de code gratuit et open source pour Ubuntu

Qu'est-ce que Python :une introduction à un langage de programmation multiplateforme

Éditeur Vi et Vim :5 exemples impressionnants pour la complétion automatique de mots à l'aide de Ctrl-X Magic