如何在Vim中导航多个ctags匹配?

时间:2013-01-22 18:20:11

标签: vim ctags exuberant-ctags

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

实施例。 something.publish代码库中包含多次出现的publish

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end

4 个答案:

答案 0 :(得分:102)

使用g]代替C-]获取所有匹配的列表。

您可能需要阅读:help g]

答案 1 :(得分:69)

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

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

答案 2 :(得分:14)

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

如果只有一个匹配,

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

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

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

答案 3 :(得分:1)

<强> document.write

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