崇高文本中的ctags

时间:2012-02-29 01:23:27

标签: c++ sublimetext2 sublimetext ctags

我刚刚使用Exuberant Ctags 5.8在ubuntu 10.10下载sublime text 2 beta 2182

我想将它用于c ++编码,我需要一些自动完成和代码导航。 (我习惯用cdt遮蔽)

我用谷歌搜索,我发现ctags是一个很酷的工具,可以做到这一点,并且有一个插件支持sublime text here

问题是我想要创建标记文件:

  1. c ++标准库(std::vector std::map etc

  2. 我正在使用的所有框架类。

  3. 第1点(我认为)与第2点相同,我只需要在/usr/include/c++/4.4.5/

    中创建std lib的标记列表

    所以我下载了插件并安装了它,我用这种方式制作了一个标签列表:

    $ cd /absolute_path_of_my_cpp_framework/
    $ ctags -R *
    

    我用这一行修改了/home/me/.config/sublime-text-2/Packages/CTagss/CTags.sublime-settings

    "extra_tag_files" : [".gemtags", "/absolute_path_of_my_cpp_framework/tags"]
    

    现在我打开一个cpp文件,将光标指向我的框架的类名并使用键绑定ctrl+t ctrl+t并且没有任何反应。只在底部栏中显示此消息:

      

    找不到“class_name”

    有人可以帮助我吗?

2 个答案:

答案 0 :(得分:7)

我个人不使用Sublime Text,但假设它以与vim类似的方式使用标记文件,则需要为C ++完成生成其他信息。

使用带有以下选项的ctags:

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

信息来自this article,它还提供了可用于生成标记的标准库标题的副本。

答案 1 :(得分:2)

Shell命令:

$ cd /absolute_path_of_my_cpp_framework/(1)

$ ctags -R --languages=c++ --langmap=c++:+.inl --fields=+iaS --extra=+q --totals=yes --verbose=yes(2)

$ ctags -a -R --languages=c++ /usr/include/c++/4.4.5/ --fields=+iaS --extra=+q --totals=yes --verbose=yes(3)

$ subl .(4)

说明

(1)转到项目的根文件夹以确保将在那里创建标记文件。

(2)为项目中的所有C ++文件生成一个新的标签文件,添加对.inl文件,继承,访问修饰符,类限定范围等的支持。

(3)将C ++标准lib头的标签附加到生成的标签文件中。

(4)在Sublime Text中打开文件夹。

参考文献:

  1. http://ctags.sourceforge.net/ctags.html
  2. https://www.chromium.org/developers/sublime-text
  3. http://www.tarosys.com/2014/07/adding-another-file-type-for-ctags.html
  4. Exuberant ctags exclude directories
  5. Vim and Ctags: Ignoring certain files while generating tags
  6. https://www.topbug.net/blog/2012/03/17/generate-ctags-files-for-c-slash-c-plus-plus-source-files-and-all-of-their-included-header-files/