2009-12-02 7 views
17

Ich verwende Vim für ein C++ - Projekt, an dem ich angefangen habe zu arbeiten, und ich habe viel Zeit damit verbracht, den vorhandenen Code zu durchsuchen es. Um das Browsen zu erleichtern, habe ich ctags und cscope in Vim eingerichtet, um zu Definitionen zu springen und Referenzen zu finden.Definitionen/Verweise auf C++ - Klassenmitglieder in Vim finden

Allerdings finde ich, dass keiner von ihnen intelligent genug ist zu wissen, zu welcher Klasse eine Mitgliedsvariable/Funktion gehört. Zum Beispiel:

class Square; 
... 

Square a; 
... 
a.rotate(); 

Der Versuch, die Definition von rotate() finden zu Mitgliederfunktionen aus anderen Klassen bringen, wie Dreieck. Ich benutze g] in Vim, um eine Liste passender Tags aufzurufen, und glücklicherweise listet ctags die zugehörige Klasse für jeden Eintrag auf. Wenn es jedoch 200 Klassen mit der gleichen Elementfunktion gibt, kann es mühsam sein, das richtige Tag zu suchen.

Auch, wenn ich bei einer Funktionsdefinition bin:

Square::rotate() 
{ 
    ... 
} 

Der Versuch, alle Anrufe zu rotate() mit cscope zu finden bringt Anrufe Triangle und anderen Klassen drehen Funktionen auf.

Aus diesem Grund finde ich mich zu Visual Slickedit hin und wieder springen, um die Definition oder den Verweis auf eine Elementfunktion oder Elementvariable zu finden. Gibt es eine Möglichkeit, dies in guten alten Vim zu erreichen?

Antwort

1

Ich habe in der Vergangenheit nach besseren Lösungen als cscope gesucht, aber nie etwas gefunden. Am Ende ist vielleicht ein Mangel an Intelligenz nicht wirklich störend.

Das Problem ist, dass es keine leistungsfähige und offene Intellisense-Bibliothek auf dem Markt gibt. Vielleicht CodeInsight.

3

SrcExpl könnte das Plugin sein, das Sie benötigten. Versuch es.

1

Sie könnten versuchen taglist Plugin, obwohl es immer noch zu einem gewissen Grad leidet das gleiche Problem wie die integrierte Ctag-Unterstützung. Es funktioniert genauso wie SrcExpl.

Verwandte Themen