天天看點

在vim中,把idc檔案,作為c檔案來使用

author: hjjdebug

甲. 把idc 檔案 按照 c檔案來解析出tag,友善跳轉

idc 檔案 是ida 的腳本檔案, ctags 并不能識别idc,

但其實idc 就是 c檔案.

要讓ctags 識别idc檔案,一種簡單方法是把字尾改為.c

但有時候這種簡單方法是不友善的, 更好的辦法是讓ctags認為.idc檔案

就是.c檔案, 按照.c檔案分析就可以了.

ctags 支援這種轉換. 當然,是通過指令行參數告訴ctags 程式的.

1.簡單粗暴的做法,将檔案強制認為是某種類型的檔案 --language-force

例如. 将該目錄下所有檔案都按c檔案來解析

$ctags --language-force=c -R

2.優雅的做法是告訴它,某種字尾的檔案請按某某類型檔案來分析--langmap=map:

$ctags --langmap=c:+.idc –R

幫助:

ctags --help

man ctags

ctags 有三個list

 --list-languages   

       Output list of supported languages.

//列出所支援的各種語言, 不支援的可以添加噢,不過要修改定義的模闆

 --list-maps=[language|all]  

        Output list of language mappings.

//檢視各種語言所對應的檔案名字尾, 也可以在這裡把不同字尾添加到已知語言類型中,

//上面的例子就是這麼做的

 --list-kinds=[language|all]

       Output a list of all tag kinds for specified language or all.

//可以控制ctags 都記錄哪些内容, list 顯示了它的預設kind.

ctags --list-kinds=c 可以看到,有的kinds 預設是關閉的.

乙. 在vim中使用.

打開idc 檔案, :set filetype=c, 這樣就有c 的高亮文法了.

就能在vim中查閱了, taglist 插件也能識别了.

更好的辦法是放到.vimrc中, 在打開和建立檔案時執行一個自動指令.

au BufRead,BufNewFile *.idc set ft=c tags+=~/include/tags

補充:

1. 為c++ kind 打開頭檔案定義, 用如下指令觀察

 ctags --c++-kinds=+p --list-kinds=c++

2. 把.h 檔案當成c 語言來解析. (參考前面描述)

ctags --langmap=c:+.h

3. 把.i 檔案當成c++檔案來生成tags

ctags --langmap=c++:+.i -R