"Incluir pesquisa" é uma dessas ferramentas:
[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'
Relacionado a "incluir pesquisa", "pesquisa por definição" também é 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
Ambas as ferramentas dependem de uma variedade de opções que podem ou não ser definidas pelos plugins do tipo de arquivo.
Veja :help include-search
.
Você também pode usar gd
e gD
como versões leves de [D
e ]D
.
Veja :help gd
.
No buffer atual, o comando abaixo listará todas as definições de funções e seu número de linha:
:g/func/#
Veja :help :g
.
:grep
e :vimgrep
também são úteis, mesmo porque seu resultado é alimentado na lista quickfix que pode ser navegado com :cn
, :cp
... e exibido na janela quickfix muito útil.
Ver :help :grep
, :help :vimgrep
e :help quickfix
.
Falando de lista quickfix / janela, eu escrevi essa função (com base no trabalho dos outros) para exibir os resultados de [I
, ]I
, :ilist
, [D
, ]D
e :dlist
na lista quickfix / janela. YMMV é claro.
Embora não seja estritamente uma ferramenta de navegação, acho a janela de visualização muito útil para examinar a assinatura da função com a qual estou trabalhando.
Veja :help preview-window
.
Dito isto…
O Vim não sabe nada sobre o seu código além de alguns padrões regex que podem ou não se encaixar no seu estilo de codificação ou o que seja. Isso significa que a navegação de código é melhor realizada com a ajuda de ferramentas externas como ctags, cscope ou GNU GLOBAL.