2013-03-27 81 views
0

我試圖讓虛擬和純虛方法不同的顏色,這樣如何爲虛擬和虛擬純方法使用不同的顏色?

syn region cppVirtualPureMethod start="virtual" end="= 0;" 
syn region cppVirtualMethod start="virtual" end="[;{]" 

不幸的是,僅使用開始標識符進行選擇,所以它不能在兩種情況之間的歧義。有什麼vim技巧來獲得我需要的嗎?

+0

嘗試start =「virtual。* = 0;」 ? – 2013-03-27 13:52:00

+0

http://stackoverflow.com/questions/15523282/starting-a-syn-region-with-a-keyword這是否幫助你? – Kent 2013-03-27 13:53:37

+0

@brian因爲我們對代碼進行格式化,所以不能保證在同一行上,所以這是行不通的。我需要一個地區 – 2013-03-27 13:53:42

回答

1

正如你已經發現,:syn region只考慮start=部分的比賽。您必須使用:syn match(可能包含跨行匹配的昂貴正則表達式)以包含差異化結束。

一般(考慮到你已經嘗試something similar beforehand),如此精緻的高亮很難在Vim的,其語法解析是專爲廣泛的適用性和80/20-正確性,不準確的語法表述的事情。如果你確實需要用不同的視覺樣式顯示細微的細微差別(特別是對於C++,它有一個複雜的語法),我寧願使用一個帶有適當語言分析器的IDE。

+0

我很喜歡,但eclipse vim插件不如真實的東西:( – 2013-03-27 15:42:26