VIM ctags的乙個小技巧

2021-06-26 13:41:55 字數 1020 閱讀 7321

vim可以使用ctags製作的tags檔案來瀏覽程式原始檔。問題是,當原始檔存放在目錄樹(也就是所謂的source tree)的時候,該怎麼辦呢? 

在預設情況下,ctags只會處理當前目錄裡的原始檔,而且vim也只會參考當前目錄的tags檔案。這時候,如果當前目錄裡的原始檔引用了其他目錄裡的定義,那麼vim就無法利用tags檔案自動跳轉了。解決這個問題主要依靠兩個技巧: 

一,在目錄樹的根目錄裡,使用命令:

ctags -r 或 ctags --recurse

這兩個命令應該是等效的,但是在我目前使用的ctags(版本5.5.4),ctags -r似乎無效。--recurse引數會讓ctags遍歷整個目錄樹,分析所有子目錄裡的檔案。最後形成的tags檔案會放在根目錄裡。 

二,編輯vim的設定檔案(_vimrc或.vimrc),新增兩行 

set tags=tags

;set autochdir

注意第乙個命令裡的分號是必不可少的。這個命令讓vim首先在當前目錄裡尋找tags檔案,如果沒有找到tags檔案,或者沒有找到對應的目標,就到父目錄 中查詢,一直向上遞迴。因為tags檔案中記錄的路徑總是相對於tags檔案所在的路徑,所以要使用第二個設定項來改變vim的當前目錄。

使用這兩個技巧後,就可以在目錄樹中自由的瀏覽源程式了。

另外,幾個相關的話題:乙個是,我發現用這種方法跳轉到別的目錄,只對ctrl-]和g ctrl-]有效果,而:ta或:ts命令,卻還是只使用當前目錄的tags檔案,不知道這算不算是vim的bug。

另外,就算是在根目錄使用了ctags命令,最好也還是在常用的目錄裡再使用一次ctags命令。因為vim總是首先在當前目錄中尋找tags檔案,所以如果第一次搜尋就能找到的話,那麼速度就會快多了。

另外乙個話題是,儘管用g ctrl-]來跳轉是非常方便的命令,但是因為這個命令要搜尋整個tags檔案來找出所有的匹配定義,所以速度上就比只找出第乙個定義的ctrl-]要慢多了。如果對於定義比較確定的話,那麼最好還是用ctrl-]來執行吧。

關於vim,ctags的乙個小技巧

關於vim,ctags的乙個小技巧 vim可以使用ctags製作的tags檔案來瀏覽程式原始檔。問題是,當原始檔存放在目錄樹 也就是所謂的source tree 的時候,該怎麼辦呢?在預設情況下,ctags只會處理當前目錄裡的原始檔,而且vim也只會參考當前目錄的tags檔案。這時候,如果當前目錄裡...

關於vim,ctags的乙個小技巧

vim可以使用ctags製作的tags檔案來瀏覽程式原始檔。問題是,當原始檔存放在目錄樹 也就是所謂的source tree 的時候,該怎麼辦呢?在預設情況下,ctags只會處理當前目錄裡的原始檔,而且vim也只會參考當前目錄的tags檔案。這時候,如果當前目錄裡的原始檔引用了其他目錄裡的定義,那麼...

乙個小技巧

下午去牙科看牙,順便幫我媽把鞋上個鞋絆。修鞋的老太太慈眉善目,於是跟她攀談起來。我問她,您看這鞋怎麼樣啊?老太太瞅瞅鞋,笑笑不說話。我又說,這是在沂蒙大樓專櫃買的,打折處理的 款,也不知道質量怎麼樣。老太太嗯嗯幾聲,還是不言語。一邊修著鞋,老太太看我態度還算虛心,就跟我傳授了經驗。大意就是,專櫃處理...