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