2012-11-30 69 views
3

考慮一個簡單的文本標記語言,其中_underscores denote italics_*astrisks denote bold*Vim語法文件:添加到cterm

在一個假想的vim的語法文件,你可能有

syntax region italic start='_' end='_' keepend 
syntax region bold start='*' end='*' keepend 
highlight italic cterm=italic 
highlight bold cterm=bold 

(是的,我知道這是\*,我把它作爲*的清晰度。)

這裏的問題是_strings like *this*_。即使你的終端支持italicBold字體,你也只能在vim中獲得一個。

我真正想要做的是這樣的:

highlight italic cterm+=italic 
highlight bold cterm+=bold 

termguiterm爲了清楚省略)

這是可能的解決這個與包含italicBoldboldItalic地區,這兩個設置cterm=bold,italic,但事情變得凌亂,當你想包括underline和一切都失控完全當你有一個紅色區域和一個藍色區域,你結束了

syntax region red ... contains=italicRed,boldRed,underlineRed 
syntax region italicRed ... contains=italicBoldRed,italicUnderlineRed 
syntax region italicBoldRed ... contains=italicBoldUnderlineRed 
. 
. 
. 

highlight red ctermfg=red 
highlight italicRed cterm=italic ctermfg=red 
highlight italicBoldRed cterm=italic,bold ctermfg=red 
. 
. 
. 

ad inifinitum。

而踢球者是我真的不想將顏色硬編碼到red。我寧願

highlight link red Statement 

,然後讓italicRed使用相同的高亮定義red添加斜體設置。

還有得到是一個更簡單的方法來做到這一點。有什麼建議麼?

+0

[那個答案](http://stackoverflow.com/a/15974676/1290438)提供了一些解決方法,從這裏也可能很有趣。 – zmo

回答

0

否。到目前爲止,我所見過的所有語法插件都使用您描述的解決方法。

爲什麼不提供Vim更好的東西? (我曾經也希望覆蓋顏色的可能性,即當淺黃色的背景位於淺灰色的頂部時,它會變成深黃色)。使用高端和低端顏色的端子和GUI,這很難實現(任何人都喜歡挑戰?),語法突出顯示首先是一些常見的編程結構(註釋,語句,標識符等),而不是您想到的精心設計的標記。

相關問題