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

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

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

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end

person Sathish    schedule 22.01.2013    source источник


Ответы (4)


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

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

person dash-tom-bang    schedule 22.01.2013

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

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

person Dmitry Frank    schedule 22.01.2013

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

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

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

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

person Ross Hambrick    schedule 06.02.2017
comment
Очень круто .. Как это бывает в vim очень часто ... Я случайно нажал на это ... и мне было интересно, как я могу снова получить эту функциональность :) - person alpha_989; 17.06.2018

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
person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 09.05.2017