在vim中使用CTRL+] 可以查找到變量,函數(shù)等的定義,使用它CTRL+t可以返回到上一個(gè)光標(biāo)
ctags工具是用來生成查找定義時(shí)所需的符號(hào)文件的,可以使用如下的指令為當(dāng)前文件夾下的所有文件生成符號(hào)
ctags -R *
vim中的tags變量指明符號(hào)文件位置,在vim中使用如下語句可以重新設(shè)置tag
文件的位置
:set tags=xxx/tags
無法跳轉(zhuǎn)變量
ctags生成符號(hào)的時(shí)候可以進(jìn)行符號(hào)類型控制,可以選擇是否生成函數(shù)、變量、枚舉的符號(hào),以下指令可以查看到各語言的選型
ctags --list-kinds
如果只使用 ctags -R * 生成符號(hào)文件,是采用默認(rèn)的策略選項(xiàng),當(dāng)發(fā)現(xiàn)不包含相應(yīng)類型的符號(hào),可使用以下方式重新生成tags文件,如下一個(gè)test.cpp文件需要重新生成符號(hào),使用+l表示添加local vairable的符號(hào),前面的減號(hào)代表去除這類型的符號(hào),這些在man ctags 中對(duì)應(yīng)
ctags --c++-kinds=+l test.cpp
結(jié)構(gòu)和類成員
對(duì)于c/c++ 對(duì)象內(nèi)的成員,需要使用--fields=+iaS,--extra=+q 添加額外的選項(xiàng),詳情使用man ctag 查看
i:繼承信息Inheritance information
a:類成員的訪問控制信息 Access (or export) of class members
S: 常規(guī)簽名信息,如原型或參數(shù)表 Signature of routine(e.g. prototype or parameter list)
–extra=[+|-]flags
指定是否包含某種擴(kuò)展信息到tags入口。
q:包含類成員信息(如c++,java,Eiffel)。