"Suche einschließen" ist ein solches Werkzeug:
[I and ]I " search current buffer and included files for
" the word under the cursor, skipping comments
:ilist foo " same as above but for 'foo'
:ilist /foo " same as above but for a word containing 'foo'
Im Zusammenhang mit "Suche einschließen" ist auch "Definitionssuche" interessant:
[D and ]D " search current buffer and included files for
" the definition of the symbol under the cursor
:dlist foo " same as above but for definition of 'foo'
:dlist /foo " same as above but for a definition containing 'foo'
:dlist / " list all definitions from the current buffer
" and included files
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
und gD
als Lightweight-Versionen von [D
und verwenden ]D
.
Siehe :help gd
.
Im aktuellen Puffer listet der folgende Befehl jede Funktionsdefinition und ihre Zeilennummer auf:
:g/func/#
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.