2015-05-04 26 views
0

在我的C++代碼,我使用自定義的類型很像vim的語法高亮 - 靈活識別自定義關鍵字的/類型(類型定義)

typedef double type_scalar 
typedef std::complex<type_scalar> type_complex 
etc. 

,我跟着我總是把type_ *在前面的約定我的類型名稱。 我使用(G)VIM編輯器,並希望它像內置的類型(沒有明確地將它們全部列在語法文件中)語法高亮我的自定義類型。

我尋找可能的解決方案的網絡,並試圖把一切從正則表達式像

syn keyword cppType \<type_.*/ 

syn keyword cppType type_[^\ ]*\ 

syn match typedefSuffix  '\a\+' 
syn keyword cppType  type_ nextgroup=typedefSuffix 
在我的〜/ vim的/語法

/cpp.vim文件,但我無法獲得所需的結果,即獲取表單的每個實例type_what突出顯示。

任何人都可以幫忙嗎?

回答

1
syn keyword cppType \<type_.*/ 

這一個看起來很有希望,除了:

  • :syn keyword並不需要一個正則表達式,只包含文字關鍵詞;您需要:syn match(並將正則表達式包含在分隔符中)
  • .*/將匹配所有行,直到最後一行/;您需要\w\+將匹配限制爲標識符的其餘部分,並且\>強制執行關鍵字的結尾。人機工程學:
syn match cppType "\<type_\w\+\>" 

它放入~/.vim/after/syntax/cpp.vim,你應該是好去。

你的問題可以通過優秀的文檔解決。學習如何查找命令並導航內置的:help;它是全面的,並提供許多技巧。你不會像其他編輯一樣學習Vim,但如果你承諾不斷學習,它將證明它是一個非常強大和高效的編輯器。

+0

什麼更好:'\ w'或'\ k'? – Vitor

+0

@Vitor:'\ w'更適合C/C++類型名稱的允許字符,並且不像'\ k'那樣可變。 –