Exuberant Ctags用法:选择tag文件中所包含的tag类型

网友SamPeng问:

请问哪个参数是不解析方法中变量的。

方法中的变量纯粹是浪费tag标签。从来不用。因为一个文件里有多个同明变量

这个问题比较普遍,因此写一篇文章来解释一下。

大多数人在使用Exuberant Ctags时,一般都使用缺省的ctags -R。一般来讲,这条缺省命令已经可以满足大部分人的需求了。在某些情况下,可能对tag文件中标签的类型有特殊要求,这时就需要进行定制了。

对SamPeng所提出的问题,解决方法如下:

  1. 首先用ctags –list-kinds=<LANG>列出这个语言所支持的标签类型
  2. 然后在生成tag文件时,用ctags –<LANG>-kinds=[+|-]kinds来增加或去掉这种tag类型
  3. 需要把<LANG>换成你所用的编程语言的名字,用ctags –list-languages查看ctags支持哪些语言。

其实我们在文章vim使用进阶: 智能补全中已经用过Exuberant Ctags的定制功能了,在那篇文章里,我们使用命令

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src 

来为OmniCppComplete插件生成定制的tag文件。仔细分析一下上面这条命令,相信你对Exuberant Ctags的了解会更加深一层的。

从上面的介绍我们可以看到,Exuberant Ctags的功能非常强大(例如,甚至可以用它为任意文件提取tag,你只需要指定生成tag的规则就行了),只是大多数人并不了解。如果你对tag文件的内容有特殊的需求,建议你仔细阅读一下Exuberant Ctags的手册。你可以在这里找到我翻译的Exuberant Ctags中文手册

“Exuberant Ctags用法:选择tag文件中所包含的tag类型”的9个回复

  1. 博主你好,我在使用ctags时候遇到了一个问题。首先我把linu2.6.0下的所有c文件合在了同一个.c文件中使用ctags,使用-x –c-kinds=f参数,但是只显示了6000多的函数,这是远远不够的,我用其他版本的Linux c文件合并后使用ctags也是同样的结果。不知道为什么

  2. 博主你好。又来请教您问题了。

    我平时在linux下用vim。现在在win下装了一个gvim。发现gvim好多地方使用和vim不一样。比如ctrl+v是粘贴,本来想进入列模式的。现在不知道如何进入列模式了。
    请问,如何设置,才能使windows下的gvim的操作习惯和linux上的vim操作习惯完全一致,而不要windows下的那些ctrl+c / ctrl+v 那些键绑定?

    thanks。

  3. Easywy您好,我有一个问题想请教您。
    问题是这样的,我要移植一个gtk+项目到Windows下,gtk+环境配置好了,在linux下面我可以利用vim自动补全补全#include 中包含的难记忆的API名称,在Windows下我不知道如何设置vim使他可以自动补全include文件中的内容。
    不知道linux下它是如何实现这一功能的。如果只是在环境变量中注册gtk的头文件位置,我在Windows环境变量中也加入了gtk的路径,没有反应。在vimrc中设置set path=…也不管用。

  4. 谢谢你的指导。。我发贴的时候已经根据你翻译的手册搞定了。。
    但taglist好像还是用的常规ctags来获得tags的。
    我也设置了 Tlist_Ctag_CMD属性指定到Exuberant Ctags目录。。没反应啊没反应

  5. 我也有个问题,我习惯在 ( 前面加个空格,可是自动补全函数名的时候函数名和括号总是紧挨着的,有什么办法设置么?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注