vim程式碼進階 cscope & ctags 簡單上手
現在我也是小白,剛入門這是一些簡單的用法,更多高階用法,快捷鍵這些暫時沒測試,先能用起來再說吧。
先說一下這兩個軟體的特點
ctags: 可以搜尋到一些函式,變數的定義位置,並且可以快速的跳入跳出,非常方便。
cscope: 功能更強大點,可以搜尋到函式的呼叫可被呼叫的情況。但是在一些簡單操作上感覺沒有ctags方便。
軟體安裝
apt-get install cscope
apt-get install ctags
跳轉到原始碼根目錄
先建立cscope索引,再建立 ctags 庫。
cd /work/src cscope -Rbq ls -lh cscope.* ctags -R ls -lh tags
新增兩個庫到 vim 中
vim ~/.vimrc
在末尾新增如下資訊
" cscope 配置 quickfix 視窗 "
set cscopequickfix=s-,c-,d-,i-,t-,e-
" 新增 cscope 索引 "
cs add /work/src/cscope.out /work/src/kernel
" 新增 ctags 庫 "
set tags=/work/src/tags
使用方法:
ctags比較簡單容易上手
在vim命令模式輸入
ts 函式/變數 列出所有的函式和變數的定義和宣告位置。然後輸入序號跳轉到指定的位置。
:ts 返回索引列表 以及所在的檔名
:tp 上一個位置
:tn 下一個位置
Ctrl+] 跳轉到游標所在位置 函式/變數 所在位置
Ctrl+t 返回上一次的位置
cscope比較複雜些
在vim命令模式輸入
:cs find c|d|e|f|g|i|s|t name
0或者s —— 查詢這個C符號
1或者g —— 查詢這個定義
2或者d —— 查詢被這個函式呼叫的函式(們)
3或者c —— 查詢呼叫這個函式的函式(們)
4或者t —— 查詢這個字串
6或者e —— 查詢這個egrep匹配模式
7或者f —— 查詢這個檔案
8或者i —— 查詢#include這個檔案的檔案(們)
按下回車後vim會自動跳轉到第一個符合要求的地方, 並且在命令欄顯示有多少符合要求的結果
如果想看其他的結果, 可以用下面的命令開啟QuickFix視窗:
:cw
然後通過下面指令慢慢挑選了。
:cc 顯示詳細錯誤資訊 ( :help :cc )
:cp 跳到上一個錯誤 ( :help :cp )
:cn 跳到下一個錯誤 ( :help :cn )
:cl 列出所有錯誤 ( :help :cl )
:cw 如果有錯誤列表,則開啟quickfix視窗 ( :help :cw )
:col 到前一箇舊的錯誤列表 ( :help :col )
:cnew 到後一個較新的錯誤列表 ( :help :cnew )
其它高階用法快捷鍵配置,有機會在測試。