L’autocomplétion C / C ++ dans vim

La complétion automatique est une fonctionnalité intéressante pour les programmeurs qui travaillent sur différents types de langages de programmation, tels que les langages C / C ++. L'éditeur Vim fournit cette fonctionnalité sous Windows ou Linux . La complétion automatique de C / C ++ dans Vim recherche les mots saisis dans un fichier qui a précédemment enregistré ses balises . L’utilisateur, à l’aide du composant matériel du système, c’est-à-dire du clavier, configurera une touche pour lancer le processus de recherche dans les balises stockées. Cependant, il serait prudent de garder un œil ouvert sur les mots incohérents.

  • Installation
  • Configuration
  • Utilisation
  • Liens

Ce tutoriel est destiné aux personnes utilisant Vim sous Linux. La saisie automatique est une fonction familière pour les utilisateurs de Linux, mais elle peut parfois suggérer des mots qui n'ont pas de sens dans leur contexte. Cela peut être frustrant lors de la programmation, car la saisie semi-automatique peut suggérer, par exemple, un type lorsqu'une méthode est attendue à ce stade du code.

 classe plop () {protected: int plopons; public: plop () {} void plopez () {}}; int main () {plop p; p. // <- Ctrl P proposera successivement: plopez, plop ... alors que c'est forcément plopons return 0; } 

Un plugin, basé sur les ctags Vim, vous permet de créer une saisie automatique plus intelligente, capable de prendre en compte le contexte dans lequel un mot est utilisé.

Installation

Nous commençons par installer les balises ctags. Par exemple, sous Debian ou dans des distributions basées sur Debian (ubuntu, xandros, etc.):

 sudo aptitude update sudo aptitude safe-upgrade sudo aptitude installer exuberant-ctags 

Il récupère également le plugin Vim pour l'auto-complétion:

//www.vim.org/scripts/script.php?script_id=1520

Nous ferons tout ce qui concerne l'auto-achèvement dans ~ /. Vim:

 mkdir -p ~ / .vim / tags mv omnicpp * zip ~ / .vim cd ~ / .vim décompressez omnicpp * zip cd - 

Ctags est capable de considérer le problème des en-têtes QT, OpenGL, SDL. Cependant, pour la STL, vous devez récupérer les en-têtes "simples" ici:

//www.vim.org/scripts/script.php?script_id=2358

Il décompresse l'archive et crée des tags à partir de la STL:

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - genres = + p --fichiers = + iaS --extra = + q --language-force = C ++ balises cpp_src && mv ~ / .vim / tags / stl 

Maintenant, il génère les balises pour les bibliothèques installées (à adapter si les bibliothèques sont installées ailleurs). Par exemple, dans les bibliothèques OpenGL, SDL et QT, tapez simplement les trois commandes suivantes:

c

 balises -R --c ++ - genres = + p --fichiers = + iaS --extra = + q --language-force = C ++ / usr / inclure / GL / & mv tags ~ / .vim / tags / gl ctags - R --c ++ - genres = + p --fichiers = + iaS --extra = + q --language-force = C ++ / usr / include / SDL / && mv tags ~ / .vim / tags / sdl ctags -R - -c ++ - genres = + p --fichiers = + iaS --extra = + q --language-force = C ++ / usr / inclure / qt4 / && mv tags ~ / .vim / tags / qt4 

Configuration

Maintenant, nous devons dire à vim de charger les fichiers du plugin et les différentes balises. Pour ce faire, ajoutez simplement à la fin du fichier ~ /. Vimrc les lignes suivantes:

 "balises prérequis définir le plugin nocp filetype sur" configurer les balises - ajouter des balises ici ou mettre en commentaire les balises non utilisées définir les balises + = ~ / .vim / tags / stl définir les balises + = ~ / .vim / tags / gl définir les balises + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 "construisent les tags de votre propre projet avec CTRL + F12" map:! ctags -R --c ++ - genres = + p --fields = + iaS - -extra = + q. noremap:! ctags -R --c ++ - genres = + p - champs = + iaS --extra = + q. inoremap:! ctags -R --c ++ - types = + p --fichiers = + iaS --extra = + q. "OmMidiCppComplete laisser OmCirc_NamespaceSearch = 1 laisser OmComp_MayCompleteDot = 1 laisser om CursorMovedI, InsertLeave * if pumvisible () == 0 | silent! pclose | endif set completeopt = menuone, menu, le plus long, aperçu 

Si les balises n'ont été générées que pour certains fichiers, commentez les autres en ajoutant au début de la ligne. Par exemple, si nous n'avons pas généré ~ /.vim/tags/gl et ~ / .vim / tags / sdl:

 set tags + = ~ / .vim / tags / stl "set tags + = ~ / .vim / tags / gl" set tags + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 

Il suffit de sauvegarder le fichier et de (re) démarrer vim pour qu’ils reflètent les modifications apportées à ~ /. Vimrc.

Utilisation

Tout ce qui a déjà été tagué (c'est-à-dire dans ce tutoriel, les tags STL, QT, SDL et OpenGL) est déjà disponible en complétion automatique. Appuyez simplement sur ctrl p ou n. Une fois que la liste apparaît, vous pouvez utiliser les flèches pour mettre en surbrillance la bonne proposition et appuyer sur Entrée.

Cependant, ce n'est pas complètement fini. Il convient de régénérer les balises de symboles (variables, fonctions, types ...) spécifiques au projet en cours de développement. Cela générera à nouveau un fichier de balises. Et bien sûr, il actualisera le fichier chaque fois que vous ajoutez, supprimez ou modifiez un symbole du projet afin qu'il soit actuel.

Comme il est assez courant, il est recommandé de mapper une touche sur le clavier pour déclencher un processus de ctags. Dans l'exemple de fichier ~ / .Vimrc que j'ai donné, cela est assuré en appuyant sur F12.

Liens

//vim.wikia.com/wiki/C++_code_completion

//www.vim.org/scripts/script.php?script_id=1520

//www.vim.org/scripts/script.php?script_id=2358

Article Précédent Article Suivant

Les Meilleurs Conseils