2013-01-22 65 views
39

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

Ex。 something.publish在含有publish多次出现一个代码库:

class Foo 
    def publish 
    end 
end 

class Bar 
    def publish 
    end 
end 

回答

57

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

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

88

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

您可能需要阅读:help g]

6

添加我最终寻找的情况下,它可以帮助别人的答案:

g<C-]>将跳转到该标签如果只有一场比赛,然后会出现一个列表如果有多个匹配。

我已经添加了这个映射到我的.vimrc让它做我想做的默认:

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

0

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