vim學習筆記 tags用法

2021-10-07 12:57:15 字數 1721 閱讀 4567

1、ctags用法

ctags --list-languages 檢視支援語言

ctags --list-kinds檢視ctags可以識別的語法元素

ctags --list-maps 預設支援的副檔名

ctags -r: 生成tag檔案,-r表示也為子目錄中的檔案生成tags

:set tags=path -- 告訴ctags使用哪個tag檔案

:set tags=tags;

:set autochdir 兩個一起用,ctags自動尋找tags檔案,預設當前路徑,其次是父路徑,依次向上遞迴,tags後的冒號是必須有的

:tag xyz -- 跳到xyz的定義處,或者將游標放在xyz上按ctrl+],返回用ctrl+t  nctrl+t 返回跳轉 n 次

:stag xyz -- 用分割的視窗顯示xyz的定義,或者ctrl+w ], 如果用ctrl+w n ],就會開啟乙個n行高的視窗

:ptag xyz -- 在預覽視窗中開啟xyz的定義,熱鍵是ctrl+w }。

:pclose -- 關閉預覽視窗。熱鍵是ctrl+w z。

:pedit abc.h -- 在預覽視窗中編輯abc.h

:psearch abc -- 搜尋當前檔案和當前檔案include的檔案,顯示包含abc的行。

:tag main --可以從開啟的檔案中跳到main函式處,即使開啟的檔案中沒有main函式(在別的檔案中也可以跳過去)

有時乙個tag可能有多個匹配,如函式過載,乙個函式名就會有多個匹配。 這種情況會先跳轉到第乙個匹配處。

:[n]tnext或tn -- 下一[n]個匹配。

:[n]tprev或tp -- 上一[n]個匹配。

:tfirst -- 第乙個匹配

:tlast -- 最後乙個匹配

:tselect tagname -- 開啟選擇列表

tab鍵補齊

:tag xyz-- 補齊以xyz開頭的tag名,繼續按tab鍵,會顯示其他的。

:tag /xyz-- 會用名字中含有xyz的tag名補全。

:tags -- 列出已經跳轉到過哪些tag了

:tag /^block查詢以block開頭的可能的tag

2、cscope用法

cscope -rbq: 生成cscope.out檔案

:cs add /path/to/cscope.out /your/work/dir

:cs find c func -- 查詢func在哪些地方被呼叫

:cw -- 開啟quickfix視窗檢視結果

3、gtags用法

gtags綜合了ctags和cscope的功能。 使用gtags之前,你需要安裝gnu gtags。 然後在工程目錄執行 gtags 。

:gtags funcname 定位到 funcname 的定義處。

:gtags -r funcname 查詢 funcname被引用的地方。

:gtags -s symbol 定位 symbol 出現的地方。

:gtags -g string goto string 出現的地方。 :gtags -gi string 忽略大小寫。

:gtags -f filename 顯示 filename 中的函式列表。 你可以用 :gtags -f % 顯示當前檔案。

:gtags -p pattern 顯示路徑中包含特定模式的檔案。 如 :gtags -p .h$ 顯示所有標頭檔案, :gtags -p /vm/ 顯示vm目錄下的檔案。

vim 的 tags 模組 與 ctags

一般來說,在 中跳轉,離不開 ctags。實際上,vim 中 跳轉是由 vim tags 模組完成的,tags 模組依賴於 tags 檔案。ctags generate tag files for source code 是產生 tags 檔案的。tags 檔案只包含了函式 類 變數的定義的資訊,而...

linux學習筆記11 vim用法2

實操專案 使用vim開啟.man.config檔案,設定顯示行號 vim man.config set nu 設定顯示行號 set nonu 設定不顯示行號移動到第58行行首,再向右移動30字元,移動到第8行行尾,再向左移動3單詞 58g 移動到58行行首 30l 向右移動移動30字元 8g 移動到...

vim學習筆記

首先安裝vim,接著進行最基本命令的聯絡。在命令列模式下輸入 vimtutor 會開啟乙個文件,按照文件上的步驟進行最基本的使用練習。1 檢視文件編碼 開啟乙個在windows下的文字時中文顯示亂碼,於是網上搜了一下,首先是檢視編碼 set fileencoding 2 查詢替換 s aaa bbb...