2015-07-09 150 views
3

我喜歡讓我的語法在vim中通過TagHighlight插件高亮顯示,該插件使用繁瑣的ctags生成vim用於語法的標籤文件。繁瑣的ctags是否支持C++ 11?

直到最近,我只是用常規的枚舉類型,如

enum count {ONE, TWO, THREE};

這是得到正確標記。我的小組最近決定支持C++ 11,我試圖

enum class count {ONE, TWO, THREE};

枚舉「計數」現在標記爲一類,而不是枚舉「一」和「二」被標記爲類成員和「THREE」根本沒有標記。

我試圖使用 --regex-c++=/^[ \t]*(enum)[ \t]+(class)[ \t]+([a-zA-Z0-9_]+)/\3/e,enum/作爲正則表達式,但不成功。看起來,枚舉類應該是一個標準類型來生成ctags,但沒有發現任何人抱怨它。我愚蠢地忽略了簡單的事情嗎?

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

的另一種方法的自定義語法在vim高亮也將被理解的。

回答

9

還有一個更新版本的exuberant ctags叫做universal ctags available here。與繁榮的ctags相比,它支持C++ 11以及更多的語言(完整列表是here)。如果你在Mac上,你可以使用

brew tap universal-ctags/universal-ctags 
brew install --HEAD universal-ctags 

通用的ctags用自制的安裝僅僅是一個旺盛的ctags叉,應該是可以作爲它的完全替代。

+1

對於Arch Linux用戶:我剛剛發現[ctags-fishman-git](https://aur.archlinux.org/packages/ctags-fishman-git/)AUR包*實際上是'universal-ctags ':) – VanLaser