Подтвердить что ты не робот

Как перемещаться по нескольким совпадениям ctags в Vim?

Я использую Ctrl - ] в Vim для навигации по Ctags. Как перейти к альтернативному файлу, если есть несколько совпадений?

Ex. something.publish в кодовой базе, содержащей несколько вхождений publish:

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end
4b9b3361

Ответ 1

:tn[ext] переходит к следующему тегу, :tp[revious] переходит к предыдущему. :ts[elect] дает вам список на выбор.

:help tag-matchlist для более интересных и захватывающих вещей, чтобы попробовать!

Ответ 2

Используйте g] вместо C-], чтобы получить список всех совпадений.

Возможно, вы захотите прочитать :help g]

Ответ 3

Добавление ответа, который я в конечном счете искал, если он помогает другим:

g<C-]> будет переходить к тегу, если имеется только одно совпадение, и будет представлен список, если имеется несколько совпадений.

Я добавил это сопоставление в мой .vimrc, чтобы сделать то, что я хочу по умолчанию:

nnoremap <C-]> g<C-]>

Ответ 4

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