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