65

我正在使用Ctrl-]在 Vim 中使用 Ctags 进行导航。如果有多个匹配项,我如何导航到备用文件?

前任。something.publish在包含多次出现的代码库中publish

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end
4

4 回答 4

122

使用g]而不是C-]获取所有匹配项的列表。

您可能想阅读:help g]

于 2013-01-22T19:25:07.763 回答
83

:tn[ext]转到下一个标签,:tp[revious]转到上一个标签。 :ts[elect]为您提供一个可供选择的列表。

:help tag-matchlist尝试更多有趣和令人兴奋的事情!

于 2013-01-22T18:23:43.553 回答
32

添加我最终寻找的答案,以防它帮助其他人:

g<C-]>如果只有一个匹配项,将跳转到标签,如果有多个匹配项,将显示一个列表。

我已将此映射添加到我的 .vimrc 以使其默认执行我想要的操作:

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

于 2017-02-06T22:34:03.527 回答
0

ltag

ltag the_tag_name
lopen

打开标签匹配的位置窗口。

这对于正则表达式标签搜索特别强大:

ltag /tag_na
lopen

它将列出包含字符串的所有标签tag_na(因此包括the_tag_name)。

然后,您可以在位置列表中进一步搜索,然后按回车键跳转到标签。

要将其用于光标下的单词,您可能需要定义映射:

nnoremap <leader>l exec("ltag ".expand("<cword>"))<CR>

那么,如果你是像我一样的标签狂:

command! -nargs=1 Ltag silent ltag <args> | execute "normal \<C-o>" | tab lopen

将打开一个包含位置列表和所有匹配项的新选项卡,而不是直接跳转到该选项卡:

:Ltag /my_struct
于 2017-05-09T10:06:38.030 回答