Как перемещаться по нескольким матчам ctags в Vim?
Я использую Ctrl-] в Vim для навигации с помощью Ctags. Как перейти к альтернативному файлу, если есть несколько совпадений?
Ex. something.publish
в кодовой базе, содержащей несколько вхождений publish
:
class Foo
def publish
end
end
class Bar
def publish
end
end
4 ответов
:tn[ext]
переходит к следующему тега :tp[revious]
переходит к предыдущему. :ts[elect]
дает вам список на выбор.
:help tag-matchlist
для более интересных и захватывающих вещей, чтобы попробовать!
добавление ответа, который я в конечном итоге искал, если это поможет другим:
g<C-]>
перейдет к тегу, если есть только одно совпадение, и представит список, если есть несколько совпадений.
я добавил это отображение моего .vimrc, чтобы сделать его делать то, что я хочу по умолчанию:
nnoremap <C-]> g<C-]>
ltag
ltag the_tag_name
lopen
открывает окно расположение с тегом соответствует.
это особенно мощный с регулярным выражением поиска тегов:
ltag /tag_na
lopen
в котором будут перечислены все теги, содержащие строку tag_na
(включая the_tag_name
).
вы можете продолжить поиск внутри списка местоположения, прежде чем нажать enter, чтобы перейти к тегу.
чтобы использовать его для слова под курсором, вы можете определите карту:
nnoremap <leader>l exec("ltag ".expand("<cword>"))<CR>
тогда, если вы таб маньяк, как я:
command! -nargs=1 Ltag silent ltag <args> | execute "normal \<C-o>" | tab lopen
откроется новая вкладка со списком местоположений и всеми матчами, вместо того, чтобы прыгать на вкладку напрямую:
:Ltag /my_struct