http://www.cnblogs.com/napoleon_liu/archive/2011/01/23/1942738.html简介ctags ? Generate tag files for source code ctags 最先是用来生成C代码的tags文件,后来扩展成可以生成各类语言的tags, 有些语言也有专有的tags生成工具(比如java的jtags, python的 ptags).
ctags 生成的 tags文件可用于 vi 来做代码导航和 vi的onmicppcomplete 插件来做代码补全。 ctags -e生成的 TAGS文件可以用于 emacs.
技巧最简单使用是 : ctags –R . -R 表示递归子目录, 这个命令的意思就是为 当前目录下和其子目录下的文件建立索引( 索引只包含了函数的定义位置)
ctags 把 .cpp当成 c++来处理, .c当成c语言来处理, .h当成C++的头文件处理。
如果你程序中有的.c文件其实是C++程序,这该怎么办? 使用ctags --langmap=c++:+.c
像C++标准库stl中文件名没有后缀,怎么办? 使用 ctags –force-language=c++ 这样就把所有文件当成C++来处理了。
如果一个目录下只有部分文件需要建立 tags, 怎么办呢? 使用 find 命令查找文件,bash 做后续处理,生成一个文件列表 比如叫 project.files, 最后使用 ctags –L project.files 命令
高级为了字段补全有效, 需要加上其它的额外信息 这是很多推荐的C++ 需要的选项: --c++-kinds=+p --fields=+iaS --extra=+q 选项 fileds 用于指定每条标记的扩展字段域
选项c++-kinds 用于指定C++语言的 tags记录类型, --c-kinds用于指定c语言的, 通用格式是 --{language}-kinds使用 ctags --list-kinds=c++ 可以查看选项:
我最后使用的—{language}—kinds 选项是
extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目
多目录如果一个工程有多个完全不同的目录 保持文件,这该怎么办呢? 可 以为不同的目录生成不同的 tags文件, 最后在 vi中使用 let tags+=tags_file1 和let tags+=tags_file2 方式添加
vi 技巧vi中如果在vimrc文件中初始话tags变量为 tags; (有分号) , 那么 vi会先在当前目录中搜索 tags文件,如果没有查找到, 会到父级目录中查找tags文件,依次类推。
tags的局限性tags文件之包含了 函数, 类或变量的定义的信息,而没有包含使用信息。 如果要知道一个函数都在什么地方使用过,需要使用 cscope工具
资料程序站点: http://ctags./ctags.html ctags文件格式:http://ctags./FORMAT Vimer中资料:http://www./2009/10/%E5%9C%A8vim%E4%B8%AD%E4%BD%BF%E7%94%A8ctags.html |
|