«Включить поиск» является одним из таких инструментов:
[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'
В связи с «включить поиск», «определение поиска» тоже интересно:
[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
Оба инструмента зависят от множества опций, которые могут или не могут быть установлены вашими плагинами типов файлов.
См :help include-search
.
Вы также можете использовать gd
и gD
как облегченные версии [D
и ]D
.
См :help gd
.
В текущем буфере команда ниже перечислит каждое определение функции и ее номер строки:
:g/func/#
См :help :g
.
:grep
и :vimgrep
также полезны, хотя бы потому, что их результаты вводятся в список быстрых исправлений, по которому можно перемещаться :cn
, :cp
… и отображаются в очень удобном окне быстрых исправлений.
Видите :help :grep
, :help :vimgrep
и :help quickfix
.
Говоря о списке QuickFix / окна, я написал эту функцию (на основе работы других) , чтобы отобразить результаты [I
, ]I
, :ilist
, [D
, ]D
и :dlist
в списке QuickFix / окна. YMMV конечно.
Хотя это не совсем инструмент навигации, я нахожу окно предварительного просмотра очень полезным, чтобы взглянуть на сигнатуру функции, с которой я работаю.
См :help preview-window
.
Это сказал ...
Vim ничего не знает о вашем коде, кроме нескольких шаблонов регулярных выражений, которые могут соответствовать или не соответствовать вашему стилю кодирования или что-то еще. Это означает, что навигацию по коду лучше выполнять с помощью внешних инструментов, таких как ctags, cscope или GNU GLOBAL.