Soweit ich weiß, hat Vim eine integrierte Unterstützung für Tags ( ctags
in diesem Fall).
Jetzt habe ich eine gemeinsame C-Quelle und C-Header-Datei. Die Header-Datei hat void foo(void);
und die Quelldatei hat void foo(void) { /* */ }
.
Wenn ich jetzt in der Quelldatei bin, die ich verwenden kann :tags foo
, springt sie zur Funktionsdefinition in der Quelldatei. Aber wenn ich es :tnext
jetzt benutze , springt es nicht zur Funktionsdeklaration in der Header-Datei.
Ich denke, das sollte irgendwie möglich sein. Ist es?
tags
ctags
filetype-c
hgiesel
quelle
quelle
ctags
? Siehe auch:h gD
.ctags -R
, das war der FehlerAntworten:
Okay, ich habe es geschafft:
Es hat alles zu tun mit
ctags
: Zuerst zwei aufgerufene Dateien erstellenfoo.c
undfoo.h
testen: Beimfoo.h
Aufschreiben:Beim
foo.c
Aufschreiben:Führen Sie in dem Verzeichnis, in dem sich diese beiden Dateien befinden, Folgendes aus:
Sie erhalten eine lange Liste von Sprachen mit diesen Arten von Tags. Suchen Sie C. Beachten Sie die folgende Zeile:
Ich würde es aber trotzdem Funktionsdeklaration nennen . Daher müssen Sie bei der Ausführung Tags für Funktionsprototypen aktivieren
ctags
. Sie tun dies, indem Sie anrufen:Beachten Sie, dass dies auch für andere Sprachen gilt, z.
Jetzt können Sie öffnen
foo.c
(vim foo.c
) und eingeben:tag bar
. Es zeigt Ihnen die Funktionsdefinition. Geben:tnext
Sie ein und Sie springen infoo.h
die Deklaration vonbar
.Beachten Sie jedoch auch, dass
ctags
die Korrektheit keine Rolle spielt.bar
Zum Beispiel konnte die Deklaration nicht einmal auf die Definition vonbar
angewendet werden, da ich die Header-Datei nicht aufgenommen habe.quelle