我已經安裝了vim 7.2和ctags 5.8,並創建了帶有「ctags -R/foopath」的標記文件。試圖去定義Vim中的類/函數
我有許多方法,這些方法在幾類稱爲具有相同的名稱,所以如果我把光標放在一個函數調用與我執行「:標籤」它顯示列出的標籤的第一。如果我執行「:TN」有好幾次我終於找到方法..
所以我的問題是:是否有任何的方式來顯示直接其中的類,它包含正確的方法我打電話路徑?
我已經安裝了vim 7.2和ctags 5.8,並創建了帶有「ctags -R/foopath」的標記文件。試圖去定義Vim中的類/函數
我有許多方法,這些方法在幾類稱爲具有相同的名稱,所以如果我把光標放在一個函數調用與我執行「:標籤」它顯示列出的標籤的第一。如果我執行「:TN」有好幾次我終於找到方法..
所以我的問題是:是否有任何的方式來顯示直接其中的類,它包含正確的方法我打電話路徑?
:tselect tagname
會給你一個匹配標籤的列表,你可以輸入你想要的標籤的編號。
:stselect tagname
將首先拆分窗口。
您也可以將光標置於單詞上並輸入g]
以獲取與該單詞匹配的標籤列表。
<CTRL-W>]
將拆分窗口並轉到與光標下的單詞相匹配的第一個標籤。
<CTRL-W>g]
將拆分窗口並給出匹配列表。
您可以使用taglist()將標記中的原始數據讀入緩衝區。然後,您可以在緩衝區中搜索您感興趣的其他條件,包括類名稱和文件目錄的某些部分。
因此,要對「mytag」嘗試更精確的搜索:
:new | put =taglist(\"^mytag$\")
爲了獲得最多的信息,一定要使用Exuberant Ctags。
你搜索你想要的數據後,你會看到與「文件名」爲前綴的標籤相關的文件名稱:與「加利福尼亞」打頭的一行文字:。
把它在一個函數與一些代碼來美化和妥善處理緩衝區:
" List information about matching tags in a buffer
function! BrowseTags(tagStr)
new [Tag Brower]
setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
put =taglist(a:tagStr)
" Beautify it a little
normal 1G
while search('^{', 'W')
call setline(".", split(getline("."), "\\(\\(}$\\)\\|\\('\\w\\+':\\)\\)\\@="))
endw
normal 1G
endfunc
您可以使用呼叫BrowseTags(「^ myTag $」)運行功能的精確匹配myTag,或者使用一些正則表達式來獲得相似的匹配。
雖然我從來沒有打擾過這麼做,但是編寫各種命令並不難,不用打開緩衝區即可自動執行最常見的任務。
謝謝戴夫,但我想你不理解我,或者我沒有解釋正確。 讓我們看看:假設我已經標記了幾個具有foo()方法的類(class1,class2,class3等)。 如果我有這樣的代碼: $ class3_object = new class3(); class3_object-> foo(); 我想去_directly_對應於class3的標籤,因爲它是對象「class3_object」的類。 Javi – ziiweb 2010-02-23 10:54:40