Después de generar un archivo de etiquetas con exuberant-ctagspuedo saltar de una llamada de función a su declaración con lo <C-]>cual es bastante conveniente.
Mi pregunta es cómo hacerlo de otra manera. Cuando mi cursor está en la definición de una función, ¿cómo puedo ir a las líneas donde se llama la función?
Cuando miro el archivo generado por ctags solo veo información relacionada con la ubicación de la definición y no de las llamadas, ¿significa que no puedo hacer eso, que Vim es una solución inteligente o que necesito usar algo? más que exuberant-ctags?

Respuestas:
No puede saltar a las llamadas de función con
ctags. Para C / C ++ y Java existecscope, y se integra muy bien con Vim (ver:help cscope). Para otros idiomas, puede encontrar una herramienta que genere / exportecscopebases de datos compatibles (fihscopepara Haskell, ystarscopepara Ruby, Go y JavaScript). También se puede utilizarcscopecon GNU globales bases de datos, señalandocscopeprgagtags-cscope.En una nota al margen: si no se desanima por el uso desconcertante de Engrish ,;) probablemente también desee usar ctags universales en lugar de
exuberant-ctags. Este último no se ha actualizado en años. El primero es un tenedor mantenido activamente.fuente
cscopees compatible con C / C ++, Lex y Yacc. El soporte para Java es marginalmente útil. Puede obtener soporte para PHP (antiguo) PHP y JavaScript de GNUglobal, a través de lagtags-cscopeutilidad. Y, como dije anteriormente, hay otros indexadores que pueden exportarcscopebases de datos compatibles.No puedes hacer eso con ctags.
Pruebe una alternativa más robusta como cscope (que incluso tiene su propia sección de ayuda :)
:help cscopeo global .fuente
cscopesí mismo no admite ni PHP ni JavaScript. Sin embargo, puede indexar archivos PHP y JavaScript con GNUglobal, luego ejecutargtags-cscopepara usar elgtagsarchivo resultante concscope.cscopelas fuentes en lugar de especular basándose en experimentos rápidos.cscopetiene un analizador de C bastante relajado. Eso es todo lo que tiene, y todo lo que hace. Con ese analizador "soporta" muchos idiomas, para valores adecuados de "soporte". Las construcciones se reconocen siempre que se vean más o menos como C. Por eso no se reconocen las clases de Java y las construcciones PHP más nuevas. Compare fi con starscope , que en realidad permite agregar nuevos idiomas.Puede usar el comando grep de Vim para buscar todos los archivos en su proyecto:
Pongamos eso en una combinación de teclas:
Encuentro esta búsqueda clave de todo el proyecto invaluable cuando estoy explorando una gran base de código desconocida.
\<y\>son secuencias regexp que indican el inicio y el final de una palabra, por lo que no obtendrá coincidencias parciales. (La-wopción de grep podría ser otra forma de lograr esto).Sin embargo, esta es una búsqueda poco inteligente , por lo que puede producir falsos positivos si la misma palabra aparece en contextos no relacionados.
A decir verdad, utilizo mi propia versión modificada del complemento grep.vim . Esto es un poco más amigable de usar:
src/ lib/lugar de.) y recuerda los cambios.\bdebe usarse en lugar de\<y\>.Lo configuro y excluyo algunos archivos estándar como este .
Para un acceso rápido, creo dos combinaciones de teclas . F3me permite editar la línea de comandos, F4usa la línea de comandos configurada previamente sin ninguna pulsación de tecla adicional. El mecanismo es bastante feo y podría usar algo de limpieza, pero me ha servido bien.
fuente