Ich versuche, eine Toolbox mit Vim-Befehlen / Abfragen im Befehls- oder Suchmodus zu sammeln, um in einer Codebasis zu navigieren, ohne Ctags oder andere externe Tools zu verwenden. Ctags sind großartig, aber der Support kann je nach Entwicklungsumgebung, in der Sie sich befinden, variieren. Ich möchte mich nur auf das Wissen von Vim verlassen.
9
gd
. Dies führt den Cursor zur lokalen Deklaration der Variablen unter dem Cursor.Antworten:
"Suche einschließen" ist ein solches Werkzeug:
Im Zusammenhang mit "Suche einschließen" ist auch "Definitionssuche" interessant:
Beide Tools hängen von einer Vielzahl von Optionen ab, die von Ihren Dateityp-Plugins festgelegt werden können oder nicht.
Siehe
:help include-search
.Sie können auch
gd
undgD
als Lightweight-Versionen von[D
und verwenden]D
.Siehe
:help gd
.Im aktuellen Puffer listet der folgende Befehl jede Funktionsdefinition und ihre Zeilennummer auf:
Siehe
:help :g
.:grep
und:vimgrep
sind auch nützlich, wenn auch nur, weil ihr Ergebnis in die Quickfix-Liste eingespeist wird, mit der navigiert werden kann:cn
,:cp
… und im sehr praktischen Quickfix-Fenster angezeigt wird.Siehe
:help :grep
,:help :vimgrep
und:help quickfix
.Das Sprechen der quickfix Liste / Fenster, schrieb ich diese Funktion (basierend auf der Arbeit anderer) die Ergebnisse angezeigt werden
[I
,]I
,:ilist
,[D
,]D
und:dlist
in der quickfix Liste / Fenster. YMMV natürlich.Obwohl es sich nicht ausschließlich um ein Navigationswerkzeug handelt, finde ich das Vorschaufenster sehr nützlich, um einen Blick auf die Signatur der Funktion zu werfen, mit der ich arbeite.
Siehe
:help preview-window
.Das gesagt…
Vim weiß nichts über Ihren Code außer ein paar Regex-Mustern, die möglicherweise zu Ihrem Codierungsstil passen oder nicht. Dies bedeutet, dass die Code-Navigation besser mit Hilfe externer Tools wie ctags, cscope oder GNU GLOBAL durchgeführt werden kann.
quelle
Es gibt viele Möglichkeiten, durch Code zu navigieren (in Vim und extern enthalten). Ich entdecke sie immer noch. Was ich in der täglichen Arbeit benutze, ist:
gf
-commandCtrl+O
,Ctrl+I
- im "Verlauf" der Navigation vor- oder zurückspringeng;
- Springe zur zuletzt bearbeiteten Stelle in der Datei'[some_letter]
Befehl eine Markierung setzen . Wenn der Buchstabe ein Großbuchstabe ist, erhalten Sie eine Markierung, die von jeder Datei (Puffer) aus erreichbar ist.quelle