*
в обычном режиме выполнит поиск слова под курсором вперед. Оттуда вы можете нажать n
, чтобы получить следующий экземпляр слова, или вы можете нажать N
, чтобы получить предыдущий экземпляр слова.
Чтобы ответить на вопрос поиска в обратном направлении, вы можете использовать #
, чтобы выполнить поиск текущего слова в обратном порядке. Оттуда, нажав n
, вы получите следующий экземпляр, в то время как N
перевернет назад и ищет следующий экземпляр.
Чтобы сделать то, что вы действительно хотите сделать, то есть перейти к определению функции, рассмотрите возможность использования ctags
. Если вы создаете теги для своего проекта с помощью такой утилиты, как ctags
или etags
, вы можете использовать ctrl - ] , чтобы перейти к определению функции под курсором. Если он находится в том же файле (который, учитывая, что вы выполняете поиск, чтобы получить такую функциональность, должен применяться к вашей текущей ситуации), я думаю, что он может работать до некоторой степени даже без настройки файла тегов.
Если вам также интересно узнать, где вызывается функция (по крайней мере, в c
), есть другая утилита под названием cscope
, которая может помочь. Как и в случае ctags, вам нужно создать файл cscope.out
с помощью утилиты cscope. Как только вы это сделаете, вы можете использовать vim's cscope hooks. Чтобы получить список вызовов функции с помощью cscope, вы можете вызвать ее с помощью этого (обратите внимание, что CTRL - R ):
:cs find c <C-R>=expand("<cword>")
Это немного горстка, чтобы писать все время, поэтому я положил это в свой .vimrc, чтобы его можно было вызывать g[
:
nnoremap g[ :cs find c <C-R>=expand("<cword>")<CR><CR>