Encontrar definiciones/referencias a miembros de la clase C++ en Vim
c vim (4)
He buscado mejores soluciones que cscope en el pasado, pero nunca encontré algo. Al final, tal vez la falta de inteligencia no sea tan molesta.
El problema es que no existe una biblioteca inteligente y abierta en el mercado. Quizás CodeInsight .
Estoy usando Vim para un proyecto en C ++ en el que comencé a trabajar y últimamente he pasado mucho tiempo buscando el código existente para entenderlo. Para facilitar la navegación, he configurado ctags y cscope en Vim para saltar a las definiciones y encontrar referencias.
Sin embargo, encuentro que ninguno de ellos es lo suficientemente inteligente como para saber a qué clase pertenece una variable / función miembro. Por ejemplo:
class Square;
...
Square a;
...
a.rotate();
Intentar encontrar la definición de rotate()
activará las funciones miembro de otras clases, como Triangle. Utilizo g]
en Vim para mostrar una lista de etiquetas coincidentes y, afortunadamente, ctags enumera la clase asociada para cada entrada. Sin embargo, cuando hay 200 clases con la misma función miembro, puede resultar agotador buscar la etiqueta correcta.
Además, si estoy en una definición de función:
Square::rotate()
{
...
}
Al intentar encontrar todas las llamadas a rotate rotate()
usando cscope, se activan las llamadas a las funciones de rotación de Triangle y de otras clases.
Debido a esto, me encuentro saltando a Visual Slickedit de vez en cuando para encontrar la definición o referencia a una función miembro o variable miembro. ¿Hay alguna manera de que pueda lograr esto en el viejo Vim ?
Parece que este sería un buen candidato http://vim.wikia.com/wiki/C%2B%2B_code_completion . Tuve un poco de suerte haciendo cosas similares en Java. Aunque no estoy completamente seguro de que te consiga todo lo que estás tratando de hacer.
Puede probar el complemento de la lista de taglist , aunque todavía en cierta medida tiene el mismo problema que el soporte de ctag incorporado. Funciona de la misma manera que SrcExpl.
SrcExpl podría ser el complemento que necesita. Intentalo.