Estoy tratando de reunir una caja de herramientas de comandos / consultas de Vim, en modo comando o búsqueda, para navegar por una base de código sin usar Ctags u otras herramientas externas. Los Ctags son geniales, pero el soporte puede variar según el entorno de desarrollo en el que esté atascado. Me gustaría confiar en el conocimiento de Vim.
9
gd
. Esto lleva el cursor a la declaración local de la variable debajo del cursor.Respuestas:
"Incluir búsqueda" es una de esas herramientas:
Relacionado con "incluir búsqueda", "búsqueda de definición" también es interesante:
Ambas herramientas dependen de una variedad de opciones que los complementos de tipo de archivo pueden establecer o no.
Ver
:help include-search
.También puede usar
gd
ygD
como versiones livianas de[D
y]D
.Ver
:help gd
.En el búfer actual, el siguiente comando enumerará cada definición de función y su número de línea:
Ver
:help :g
.:grep
y:vimgrep
también son útiles, aunque sólo sea porque su resultado se introduce en la lista quickfix que se puede navegar con:cn
,:cp
... y se muestran en la ventana quickfix muy práctico.Ver
:help :grep
,:help :vimgrep
y:help quickfix
.Hablando de la lista quickfix / ventana, escribí esta función (basado en el trabajo de otros) para mostrar los resultados de
[I
,]I
,:ilist
,[D
,]D
y:dlist
en la lista quickfix / ventana. YMMV por supuesto.Aunque no es estrictamente una herramienta de navegación, la ventana de vista previa me parece muy útil para echar un vistazo a la firma de la función con la que estoy trabajando.
Ver
:help preview-window
.Dicho eso ...
Vim no sabe nada sobre su código más allá de unos pocos patrones de expresiones regulares que pueden o no ajustarse a su estilo de codificación o lo que sea. Esto significa que la navegación de código se realiza mejor con la ayuda de herramientas externas como ctags, cscope o GNU GLOBAL.
fuente
Hay muchas formas de navegar a través del código (incluido en Vim y externo), todavía las descubro. Lo que uso en el trabajo diario es:
gf
-commandCtrl+O
,Ctrl+I
- retroceder o avanzar en el "historial" de la navegacióng;
- saltar al último lugar editado en el archivo'[some_letter]
comando, si la letra es mayúscula, obtendrá una marca a la que se podrá acceder desde cualquier archivo (búfer).fuente