Question Conseils et astuces Vim et Ctags [fermé]


Je viens d'installer Ctags (pour aider au développement de C ++) avec mon Vim (ou plutôt gVim), et aimerais trouver vos commandes préférées, macros, raccourcis, astuces qui vont avec ...

Partagez votre meilleur arsenal. Quels autres modules complémentaires Vim recommanderiez-vous pour le développement de C ++ sur Vim?

MODIFIER Quel autre add-on utiliseriez-vous avec Ctags?

EDIT2 Quelle version de gVim utilisez-vous avec les tags? Est-ce que cela fait une différence?

EDIT3 Comment améliorez-vous votre expérience de programmation pour les petits et grands projets?


486
2018-02-19 01:37


origine


Réponses:


Ctrl+] - aller à la définition
Ctrl+T - Revenez de la définition.
Ctrl+W  Ctrl+] - Ouvrir la définition en une division horizontale

Ajoutez ces lignes dans vimrc
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR> 

Ctrl+\ - Ouvrir la définition dans un nouvel onglet
Alt+] - Ouvrir la définition dans une division verticale

Après les balises sont générées. Vous pouvez utiliser les touches suivantes pour marquer et déconnecter des fonctions:

Ctrl+Left MouseClick - Aller à la définition
Ctrl+Right MouseClick - Revenir de la définition


395
2018-02-19 04:54



Une ligne qui va toujours dans mon .vimrc:

set tags=./tags;/

Cela va chercher dans le répertoire courant des "tags", et travailler l'arbre vers la racine jusqu'à ce qu'on en trouve un. IOW, vous pouvez être n'importe où dans votre arbre source au lieu de la racine.


177
2018-04-12 08:58



Un autre plugin utile pour le développement de C est cscope Tout comme Ctags vous permet de sauter aux définitions, Cscope saute à la appel les fonctions.

Si vous avez cscope dans votre répertoire ~ / bin /, ajoutez ce qui suit à votre fichier .vimrc et utilisez g ^] pour accéder à la fonction appelante (voir: help cscope).

if has("cscope")
    set csprg=~/bin/cscope
    set csto=0
    set cst
    set nocsverb
    " add any database in current directory
    if filereadable("cscope.out")
        cs add cscope.out
        " else add database pointed to by environment
    elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
    endif
endif

Presque oublié ... Tout comme ctags - vous devez générer (et mettre à jour périodiquement) la base de données. J'utilise le script suivant

select_files > cscope.files
ctags -L cscope.files
ctags -e -L cscope.files
cscope -ub -i cscope.files

Où 'select_files' est un autre script qui extrait la liste des fichiers C et d'en-tête du Makefile. De cette façon, je n'indexe que les fichiers réellement utilisés par le projet.


45
2018-02-19 15:40



Vous pouvez ajouter des répertoires à votre recherche de ctags. Par exemple, j'ai un index ctags construit pour Qt4 et je l'ai dans mon fichier .vimrc:

set tags+=/usr/local/share/ctags/qt4

27
2018-02-19 01:41



Tout ce qui précède et ...

code_complete: paramètre de fonction complet, extraits de code et bien plus encore.

taglist.vim: Navigateur de code source (supporte C / C ++, java, perl, python, tcl, sql, php, etc.)


23
2018-03-05 19:45



J'utilise ALT-left et ALT-right pour faire apparaître / pousser depuis / vers la pile de tags.

" Alt-right/left to navigate forward/backward in the tags stack
map <M-Left> <C-T>
map <M-Right> <C-]>

Si tu utilises hjkl pour le mouvement, vous pouvez cartographier <M-h> et <M-l> au lieu.


16
2018-02-19 01:40



Plusieurs définitions du même nom

<C-w>g<C-]> ouvrir la définition dans une scission, mais aussi faire :tjump qui va soit à la définition ou, s'il y a plusieurs définitions, vous présente une liste de définitions à choisir.


10
2018-04-22 19:06



La commande que j'utilise le plus est C-] qui saute à la définition de la fonction sous le curseur. Vous pouvez l'utiliser plus souvent pour suivre plus d'appels. Après cela, C-o vous ramènera à un niveau, C-i repartira plus profondément.


8
2018-02-19 01:45



J'ai trouvé le taglist plug-in un must-have. Il répertorie toutes les balises connues (fichiers que vous avez ouverts) dans une fenêtre séparée et facilite la navigation dans les fichiers plus volumineux.

Je l'utilise principalement pour le développement en Python, mais cela ne peut être que meilleur pour C / C ++.


6
2018-02-21 09:52



J'ai une manipulation de tags encapsulés dans un plugin expérimental à moi.

En ce qui concerne le développement C ++ dans vim, j'ai déjà répondu : J'utilise ma propre suite et quelques autres plugins.


5
2018-02-19 15:03



J'ai adapté mes plugins vim pendant deux ans pour supporter un projet c ++ assez grand. Vous pouvez les regarder.

Ils utilisent ctags et cscsope.

http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507


5
2018-03-05 10:50