ctags 基本使用方法
簡介
ctags(Generate tag files for source code)是vim下方便代碼閱讀的工具。盡管ctags也可以支持其它編輯器,但是它正式支持的只有 Vim。并且 Vim 中已經默認安裝了 ctags,它可以幫助程序員很容易地瀏覽源代碼。
ctags 最先是用來生成C代碼的tags文件,后來擴展成可以生成各類語言的tags, 有些語言也有專有的tags生成工具(比如java的jtags, python的 ptags)。ctags 支持的語言可以通過這個網站查看,目前共41種,基本上主流的 C/C++、Java、Python、C#、JavaScript、MATLAB、Assembler 等語言都是支持的。
安裝
ubuntu (debian) 直接安裝
Ubuntu系統(Debian),可以直 apt 接安裝:
sudo apt-get install ctags
源碼編譯安裝
到 ctags 官網下載源碼,解壓安裝:
tar -xzvf ctags-5.8.tar.gz
cd ctags-5.8/
./configure
make
sudo make install
安裝檢驗
安裝完成后執行命令:
ctags --version
若正常輸出類似以下的版本信息,則安裝成功:
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren HiebertCompiled: Dec 14 2021, 22:52:05Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.netOptional compiled features: +wildcards, +regex
使用
RTFM:man ctags
生成索引文件
在源碼目錄下執行
ctags –R .
-R
表示遞歸創建,也就包括源代碼根目錄(當前目錄)下的所有子目錄。.
表示當前目錄,結合起來就是當前目錄及所有子目錄下文件。這條命令會在當前目錄下產生一個 tags
文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。Tags文件中包括這些對象的列表:
- 用 #define 定義的宏枚舉型變量的值函數的定義
- 原型和聲明名字空間(namespace)
- 類型定義(typedefs)
- 變量(包括定義和聲明)
- 類(class)
- 結構體(struct)
- 枚舉類型(enum)
- 聯合體(union)
類、結構和聯合中成員變量或函數 Vim 用這個 tags
文件來定位上面這些做了標記的對象。
配置
使用 sudo vim /etc/vim/vimrc
編輯vim的配置文檔,在其中加入如下命令:
set tags=/home/zhouyl/linux-3.4.7/tags;
后面的路徑是使用 ctags -R .
后生成的tags文件所在目錄,如果需要配置多個 tags,只需如下再添加即可
set tags=/home/zhouyl/rap/libpcap-1.3.0/tags;
set autochdir
注意:運行vim的時候,必須在“tags”文件所在的目錄下運行。如果要在該目錄的子目錄下使用 ctags,可在 Vim 配置文件中再加入:
set tags=./tags;,tags
常用命令
ctags 最常用的命令:
ctags –R .
上面介紹過了,不再贅述Ctrl+ ]
跳到光標所在變量的定義處Ctrl+ t
返回查找或跳轉,從哪里跳過來的跳回哪里,即使用了很多次Ctrl+]
,該命令也會回到最初一次的位置vi –t tag
找到名為 tag 的變量的定義處g]
列出變量的所有引用供用戶選擇:ts
tagslist,同g]
:tp
tagspreview,上一個tag標記文件:tn
tagsnext),下一個tag標記文件
以上 :
是 Vim 中從正常模式切換到底行命令模式。在完成編碼后,可以直接刪掉tags文件。
https://baike.baidu.com/item/ctags/3470337?fr=aladdin
https://www.bilibili.com/video/BV1PL411M7bg?from=search&seid=12655157522675339145&spm_id_from=333.337.0.0