【ctags功能】:
為原始碼的變數/物件、結構體/類、函式/介面、巨集等產生索引檔案,以便快速定位。目前支援41種語言,這裡僅以c/c++為例:ctags可以產生c/c++語言所有型別的索引檔案,具體如下:
-> class names(類名)
-> macro definitions(巨集定義)
-> enumeration names(列舉名)
-> enumerators(列舉變數)
-> function definitions(函式定義)
-> function prototypes/declarations(函式定義/宣告)
-> class, inte***ce, struct, and union data members(類,介面,結構體,聯合體)
-> structure names(結構體名)
-> typedefs(別名)
-> union names(聯合體名)
-> variables (definitions and external declarations)變數
【ctags的安裝】sudo apt-get install ctags (ubuntu)
vim online:
參考步驟(以5.8版本ctags-5.8.tar.gz為例)
解壓後$ cd ctags-5.8
$ ./configure
$ make
# make install
安裝結束後,使用ctags命令測試是否成功
或whatis ctags, whereis ctags等
【生成tags檔案】
安裝成功後,要為原始碼檔案生成tags檔案,才可享受ctags為閱讀**帶來的便利。
$ ctags -r
遞迴的為當前目錄及子目錄下的所有**檔案生成tags檔案
為某些原始碼生成tags檔案,使用如下命令
$ ctags filename.c filename1.c file.h
或$ ctags *.c *.h
為了使得字段補全有效,在生成tags時需要一些額外的引數,推薦的c++引數主要是:
ctags -r --c++-kinds=+px --fields=+ias --extra=+q
其中:選項c++-kinds 用於指定c++語言的 tags記錄型別, --c-kinds用於指定c語言的, 通用格式是 ---kinds
選項 fileds 用於指定每條標記的擴充套件字段域
extra 選項用於增加額外的條目: f表示為每個檔案增加乙個條目, q為每個類增加乙個條目
【使用方法】
在vim開啟原始碼時,指定tags檔案,才可正常使用,通常手動指定,在vim命令列輸入:
:set tags=./tags(當前路徑下的tags檔案)
若要引用多個不同目錄的tags檔案,可以用逗號隔開
或者,設定 ~/.vimrc,加入一行,則不用手動設定tags路徑:
set tags=~/path/tags
若要加入系統函式或全域性變數的tag標籤,則需執行:
ctags -i __throw –file-scope=yes –langmap=c:+.h –languages=c,c++ –links=yes –c-kinds=+p --fields=+s -r -f ~/.vim/systags /usr/include /usr/local/include
並且在~/.vimrc中新增(亦可用上面描述的手動加入的方式):
set tags+=~/.vim/systags
這樣,便可以享受系統庫函式名補全、原型預覽等功能了。
如果經常在不同工程裡查閱**,那麼可以在~/.vimrc中新增:
set tags=tags;
set autochdir
設定好了tags檔案,在定位變數/函式的定義時,最常用的快捷鍵是:
ctrl + ]
跳轉到變數或函式的定義處,或者用命令
:ta name
而使用快捷組合鍵
ctrl + o/t
返回到跳轉前的位置。
另外,ctags不會生成區域性變數的索引,不過可以使用gd組合鍵(對游標所在處的word進行快捷查詢定位)來定位,也是相當快捷的。
$ vim -t myadd
用vim開啟檔案時,新增引數-t funcname會自動開啟定義該函式的檔案並定位到定義首行,上面這句就是找到myadd定義的檔案開啟並將游標置於定義的第一行處。
:tags
會列出查詢/跳轉過程(經過的標籤列表)
另外,附上vim環境中其他較為好用的快捷鍵:
* 定位至當前光游標所指單詞的下一次出現的地方
# 定位至當前光游標所指單詞的上一次出現的地方
n 定位至跳至已被標記出的單詞下一次出現的地方
shift+n 定位至跳至已被標記出的單詞上一次出現的地方
關於更詳細的ctags用法,vim中使用
:help tags
使用 ctags -r,再用vim開啟其目錄下的原始檔時,出現了
cstag:tag not found
但是已經在頂層目錄下已經有了tags;
這是因為原始檔在當前目錄下沒有找到tags檔案,
解決辦法是在在vim的配置檔案~/vimrc新增set tags=tags;
使如果原始檔在當前資料夾下沒有找到tags,可以到它的上層目錄下繼續尋找;
2023年04月10日 20:09:39
我們利用ctags生成當前目錄的tags檔案並放到別的目錄
會發現tags生成的位址是相對位址,導致我們在vim中時候ctrl+]無法定位,如果此時我們新增了--tag-relative即可,但是--tag-relative只能保證你的path和tag目錄是相對的,tags檔案依然無法移動。
利用awk命令進行糾正
cat tags | awk -f '\t' ''
即可正常使用。
vim外掛程式之ctags和taglist安裝使用
一.vim安裝配置 1.安裝vim sudo apt get install vim 2.建立外掛程式目錄,在home目錄下 mkdir vim 3.複製配置檔案 cp usr share vim vimrc vimrc 二.ctags安裝和使用 1.sudo apt get install exu...
VIm的ctags外掛程式安裝
接觸了一段時間vim,感覺vim真的很強大,完全的私人定製的感覺。它的強大也就注定了它上手慢,學習時間長的特點。單是它的指令都得熟悉一陣子。vim強大之處在於它的外掛程式擴充套件,這得益於開源的精神,強大的使用者總是能設計出各種強大的外掛程式來滿足你的需求,這樣就將vim可以打造成功能上完全不輸於整...
怎麼裝vim Vim 翻譯外掛程式
vim 上面的翻譯外掛程式,我最開始用的是這個 他可以直接回顯翻譯內容,簡單明瞭,而且還用了job不阻塞當前編輯 後來發現了這個,它除了在底部回顯之外,還可以在視窗中顯示,而且還加了語法高亮和翻譯替換功能,於是我又切換到了這個 用著用著發現這個外掛程式沒有支援非同步,有時網路慢的時候會嚴重阻塞編輯行...