如何讓ctags在C++中佔用類?當我跳到一個函數的標籤時,我得到了相同的函數名,但是在錯誤的類中。ctag忽略C++中的類
B b; b.init();
和有
A ::的init(){} B ::的init(){}
我把光標放在b.init的init()和將跳轉到甲:: init(){}而不是B :: init(){}。
請注意,我沒有在我的代碼中使用a和b。所以這可能無法運行,如果你運行ctags。如果這不是一個常見的問題,我可以發佈實際的代碼。
如何讓ctags在C++中佔用類?當我跳到一個函數的標籤時,我得到了相同的函數名,但是在錯誤的類中。ctag忽略C++中的類
B b; b.init();
和有
A ::的init(){} B ::的init(){}
我把光標放在b.init的init()和將跳轉到甲:: init(){}而不是B :: init(){}。
請注意,我沒有在我的代碼中使用a和b。所以這可能無法運行,如果你運行ctags。如果這不是一個常見的問題,我可以發佈實際的代碼。
我不知道有任何方法可以做到這一點,因爲它需要vim來做C++解析。在這種情況下,我使用:tselect
來顯示整個列表並選擇一個。
這不解決您原來的問題,但如下面的映射可以幫助:
nnoremap CTRL+] :exe 'tj' expand('<cword>')<CR>
這將至少讓CTRL+]
告訴你的時候也有init()
多個定義一個選擇菜單。
我寫lh-tags來解決這個問題[這將需要lh-vim-lib]
它不承認B是否是A或B,但它提出了一個小GUI來選擇我們要跳轉到哪個標籤。
把它看作是一個互動的:tselect
。將光標置於標識符上並在正常模式下鍵入<c-w><m-down>
(可配置)。它還建議基於<c-x>ta
和:w
構建和更新ctags的方法,因爲已爲當前項目設置了g:
/b:ctags_dirname
。
我試過「--extra = + q」,如http://ctags.sourceforge.net/faq.html#7中所述。沒有幫助 – 2010-10-21 22:20:46
使用visual studio。它會識別適當範圍的令牌,而不僅僅是相同的單詞。 – JoshD 2010-10-21 22:21:53
它不會有任何幫助。 Vim必須理解C++來知道b的類型,而不是。 – 2010-10-22 07:45:23