在vim中如何使用ctags

2021-06-10 14:29:49 字數 1489 閱讀 5012

轉出處: 

如何在vim中使用ctags?之前在《把vim打造成真正的ide》系列裡已經講過大致的ctags在vim中的使用,這篇文章我們就詳細的講一下。

首先要明白,ctags是什麼?

官方的解釋是:產生標記檔案以幫助在原始檔中定位物件。

其生成的標記檔案tags中包括這些物件的列表:

用#define定義的巨集

列舉型變數的值

函式的定義、原型和宣告

名字空間(namespace

型別定義(typedefs)

變數(包括定義和宣告)

類(class)、結構(struct)、列舉型別(enum)和聯合(union

類、結構和聯合中成員變數或函式

那麼我們用怎樣的引數來使ctags正常的生成我們需要的tags檔案呢?在這裡我們就不去挨個學習那些枯燥的引數了,直接參看 omnicppcomplete 提供的ctags生成語句:

ctags -r --c++

-kinds=

+px --fields=

+ias --extra=

+q .

每個引數解釋如下:

-r:ctags迴圈生成子目錄的tags

--c++-kinds=+px :ctags記錄c++檔案中的函式宣告和各種外部和前向宣告

--fields=+ias :ctags要求描述的資訊,其中i表示如果有繼承,則標識出父類;a表示如果元素是類成員的話,要標明其呼叫許可權(即是public還是private);s表示如果是函式,則標識函式的signature。

--extra=+q:強制要求ctags做如下操作—如果某個語法元素是類的乙個成員,ctags缺省會給其記錄一行,可以要求ctags對同乙個語法元素再記一行,這樣可以保證在vim中多個同名函式可以通過路徑不同來區分。

ok,那麼tags檔案就生成好啦,利用這個檔案我們可以做很多強大的事情,包括前面用過的外掛程式,omnicppcomplete、taglist、showfunc之類的,都是依賴於它的。

那麼除了外掛程式上的作用外,我們使用者在vim裡面怎麼使用他呢?

其實最簡單的就是:把游標移動到某個元素上,ctrl+],就會跳轉到對應的定義啦。ctrl+o可以回退到原來的地方。

還有乙個操作經常被人忽略,就是,如果當前游標下是個區域性變數,在vim裡輸入gd的話,就會跳到這個區域性變數的定義處,也是非常方便滴~~

另外,tags必須在vim執行的當前目錄,才能在vim裡面正確跳轉,當然也不是沒有辦法解決:settags="tags的檔案路徑"即可,不過如果像我前面文章說的那樣定義了f12來快速生成tags的話(快速連線),也不會經常用到更改路徑吧,哈哈。

順便說一句,tags生成路徑最好不要包含中文哦~~

ok,在vim中使用ctags就到這裡,下次我們會一起看看據說ctags的公升級替代品,cscope~

使用ctags生成tags,在vim中實現跳轉

安裝ctags sudo apt get install ctags生成tags 在函式源 的上級目錄 也不一定是上一級,在需要跳轉到的源 的目錄也可以,r會遞迴地尋找 執行 ctags r生成tags,將生成的tags的路徑新增到vim的配置檔案.vimrc中 vimrc可以在 目錄下自行建立 s...

五 VIM使用手冊 在vim中配置ctags

ctags可以建立原始碼樹的索引,使程式設計師在程式設計時能迅速定位函式 變數 巨集定義等位置去檢視原形 sudo apt get install exuberant ctags 建立原始碼索引,比如我經常需要查閱linux的核心 而這些 放在 home hjw951 arm linux 2.6.1...

vim中ctags的安裝和使用

這兩天看到網上有將vim 改造成功能強大的ide的blog,突然心血來潮,親身經歷了一下。的帖子都不錯,我這裡只是將各種外掛程式分開羅列,然後加上一些使用技巧。希望本文對你有所幫助!外掛程式介紹 ctags工具是用來遍歷源 檔案生成tags檔案,這些tags檔案能被編輯器或其它工具用來快速查詢定位源...