一.概述
首先, vim+cscope+ctags真的很強大,對於一個在Linux下玩了近2年的我來說,我在此感到十分慚愧。我之前極少使用vim,沒接觸過cscope和ctags,看程式也就用gedit和find。如今學習Linux核心時發現這3個工具非常有用,有了它們,我不用再在find之後的檔案清單裡苦苦找尋某個函數或者某個變數的定義,而是很輕鬆地找到想要的東西,最重要的是,對學習Linux核心的信心大增。在此僅以簡單的形式記錄(不完全,以後用到時再記錄)這三個東東是怎麼使用的,方便以後查詢。
二.筆記
在Linux核心源碼根目錄下執行兩條命令:make cscope和make tags,此時會在源碼根目錄下產生cscope.out和tags等幾個檔案。
1. #vim /path/filename
如果filename檔案存在則開啟它,如果不存在則建立之。
2. 在命令模式下:
:q 退出,:q!強制退出(不報存),:w 儲存,:wq 儲存並退出
/string + Enter
向前尋找字串string
?string + Enter
向後尋找字串string
n
尋找同一個字串的下一個
N
反方向尋找同一個字串的前一個
i
進入編輯模式
Esc按鍵
退出編輯模式
v
進入可視模式
在可視模式下,通過上,下,左,右鍵選中文本後:
y表示複製
p表示粘貼
x表示剪下
d表示刪除
3. cscope使用
:cs add cscope.out
載入庫檔案,為後面利用cscope來尋找做準備
:cs help
查看cscope命令的用法,輸入後,顯示如下
add :添加一個新的資料庫 (用法: add file|dir [pre-path] [flags])
find :查詢一個模式 (用法: find c|d|e|f|g|i|s|t name)
c:找到調用這個函數的函數
d:找到被這個函數調用的函數
e:找到這個 egrep 模式
f:找到此檔案夾
g:找到這個定義
i:找檔案 #包括這個檔案
s:找到這個 C 符號
t:找到對其的賦值
help :顯示此資訊 (用法: help)
kill :結束一個串連 (用法: kill #)
reset:重設所有串連 (用法: reset)
show :顯示串連 (用法: show)
比如說要找調用test函數的函數,則輸入:
:cs find c test
4. catgs使用
在命令模式下:
ctrl + ] :找到游標所在位置的標籤的定義
ctrl + t :回到跳轉之前的標籤處
“找到tag:1/3或更多”其他定義的查看方法:
:tselect 顯示列表
然後輸入相應的數字後斷行符號再尋找
: tag definition
跳轉到definition定義處(可以是函數名,變數),即使它在另一個檔案中