exuberant ctags是否支持c++11?

Does exuberant ctags support c++11?

我喜欢通过 TagHighlight 插件在 vim 中突出显示我的语法,该插件使用丰富的 ctags 生成 vim 用于语法的标记文件。

直到最近,我才使用常规枚举类型,例如

enum count {ONE, TWO, THREE};

已正确标记。我的小组最近决定支持 c++11,我试过了

enum class count {ONE, TWO, THREE};

枚举 "count" 现在被标记为 class 而不是枚举,"ONE" 和 "TWO" 被标记为 class 成员和 "THREE" 根本没有标记。

我试过用 --regex-c++=/^[ \t]*(enum)[ \t]+(class)[ \t]+([a-zA-Z0-9_]+)//e,enum/ 作为正则表达式,但没有成功。似乎枚举 class 应该是从中生成 ctags 的标准类型,但还没有发现有人抱怨它。我是否愚蠢地忽略了一些简单的事情?

ctags-exuberant --version Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert Compiled: Sep 29 2014, 16:06:25 Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net Optional compiled features: +wildcards, +regex

在 vim 中自定义语法突出显示的替代方法也将受到赞赏。

有一个更新版本的 exuberant ctags,称为 universal ctags 可用 here. It has support for C++11 along with many more languages compared to exuberant ctags (the full list is here)。如果您使用的是 mac,则可以使用

与自制软件一起安装
brew tap universal-ctags/universal-ctags
brew install --HEAD universal-ctags

Universal ctags 只是 exuberant ctags 的一个分支,应该可以完全替代它。