2013-01-22 73 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