"Includi ricerca" è uno di questi strumenti:
[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'
Relativo a "includi ricerca", anche la "ricerca per definizione" è interessante:
[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
Entrambi gli strumenti dipendono da una varietà di opzioni che possono o meno essere impostate dai plugin del tipo di file.
Vedere :help include-search
.
Puoi anche usare gd
e gD
come versioni leggere di [D
e ]D
.
Vedere :help gd
.
Nel buffer corrente, il comando seguente elenca ogni definizione di funzione e il suo numero di riga:
:g/func/#
Vedere :help :g
.
:grep
e :vimgrep
sono anche utili, se non altro perché il loro risultato viene inserito nell'elenco degli aggiornamenti rapidi con cui è possibile navigare :cn
, :cp
... e visualizzato nella pratica finestra degli aggiornamenti rapidi.
Vedi :help :grep
, :help :vimgrep
e :help quickfix
.
Parlando della lista quickfix / finestra, ho scritto questa funzione (sulla base del lavoro degli altri) per visualizzare i risultati di [I
, ]I
, :ilist
, [D
, ]D
e :dlist
nella lista quickfix / finestra. YMMV ovviamente.
Pur non essendo strettamente uno strumento di navigazione, trovo la finestra di anteprima molto utile per dare un'occhiata alla firma della funzione con cui sto lavorando.
Vedere :help preview-window
.
Detto ciò…
Vim non sa nulla del tuo codice oltre ad alcuni schemi regex che possono o meno adattarsi al tuo stile di codifica o altro. Ciò significa che la navigazione del codice viene eseguita meglio con l'aiuto di strumenti esterni come ctags, cscope o GNU GLOBAL.