J'essaie de rassembler une boîte à outils de commandes / requêtes Vim, en mode commande ou recherche, pour naviguer dans une base de code sans utiliser Ctags ou d'autres outils externes. Les ctags sont excellents mais le support peut varier en fonction de l'environnement de développement sur lequel vous êtes bloqué. Je voudrais simplement me fier aux connaissances de Vim.
9
gd
. Cela amène le curseur à la déclaration locale de la variable sous le curseur.Réponses:
"Inclure la recherche" est l'un de ces outils:
En ce qui concerne "inclure la recherche", la "recherche par définition" est également intéressante:
Les deux outils dépendent d'une variété d'options qui peuvent ou non être définies par vos plugins de type de fichier.
Tu vois
:help include-search
.Vous pouvez également utiliser
gd
etgD
comme versions légères de[D
et]D
.Tu vois
:help gd
.Dans le tampon actuel, la commande ci-dessous répertorie chaque définition de fonction et son numéro de ligne:
Tu vois
:help :g
.:grep
et:vimgrep
sont également utiles, ne serait-ce que parce que leur résultat est introduit dans la liste des quickfix avec laquelle vous pouvez naviguer:cn
,:cp
… et affiché dans la fenêtre très pratique des quickfix.Voir
:help :grep
,:help :vimgrep
et:help quickfix
.En parlant de la liste quickfix / fenêtre, je l' ai écrit cette fonction (basée sur le travail des autres) pour afficher les résultats de
[I
,]I
,:ilist
,[D
,]D
et:dlist
dans la liste des quickfix / fenêtre. YMMV bien sûr.Bien que n'étant pas strictement un outil de navigation, je trouve la fenêtre d'aperçu très utile pour jeter un œil à la signature de la fonction avec laquelle je travaille.
Tu vois
:help preview-window
.Cela dit…
Vim ne sait rien de votre code au-delà de quelques modèles d'expression régulière qui peuvent ou non correspondre à votre style de codage ou autre. Cela signifie que la navigation dans le code est mieux effectuée à l'aide d'outils externes tels que ctags, cscope ou GNU GLOBAL.
la source
Il existe de nombreuses façons de naviguer dans le code (inclus dans Vim et externe), je les découvre encore. Ce que j'utilise dans le travail quotidien est:
gf
-commandCtrl+O
,Ctrl+I
- sauter en arrière ou en avant dans "l'historique" de la navigationg;
- sauter sur la dernière place éditée dans le fichier'[some_letter]
commande, si la lettre est en majuscule, vous obtiendrez une marque qui sera accessible à partir de n'importe quel fichier (tampon).la source