Vimscript 更高級的語法高亮

2018-02-24 16:03 更新

我們甚至可以為Vim里面的語法高亮另開一本書了。

我們將在此講解它最后的重要內(nèi)容,然后繼續(xù)講別的東西。 如果你想要學(xué)到更多,去讀:help syntax并閱讀別人寫的syntax文件。

高亮字符串

Potion,一如大多數(shù)編程語言,支持諸如"Hello,world!"的字符串字面量。 我們應(yīng)該把這些高亮成字符串。為此我們將使用syntax region命令。 在你的Potion syntax文件中加入下面內(nèi)容:

syntax region potionString start=/\v"/ skip=/\v\\./ end=/\v"/
highlight link potionString String

關(guān)閉并重新打開你的factorial.pn,你將看到文件結(jié)尾的字符串被高亮了!

最后一行應(yīng)該很熟了。如果你不懂,重讀前兩章。

第一行用一個(gè)"region"添加一個(gè)語法類型分組。 區(qū)域(Regions)有一個(gè)"start"模式和一個(gè)"end"模式來指定開頭和結(jié)束的位置。 這里,一個(gè)Potion字符串從一個(gè)雙引號開始,到另一個(gè)雙引號結(jié)束。

syntax region的"skip"參數(shù)允許我們處理轉(zhuǎn)義字符串,比如?"She said: \"Vimscript is tricky, but useful\"!"。

如果不提供skip參數(shù),Vim將在Vimscript之前的"停止匹配字符串,這不是我們想要的!

簡明扼要地說,syntax region中的skip參數(shù)告訴Vim: "一旦你開始匹配這個(gè)區(qū)域,我希望你忽略skip匹配的內(nèi)容,即使它會(huì)被當(dāng)作區(qū)域結(jié)束的標(biāo)志"。

花上幾分鐘去想透徹。如果遇到的是"foo \\" bar"會(huì)怎樣?那會(huì)是正確的行為嗎? 那_總是_正確的行為嗎?放下本書,花上幾分鐘來認(rèn)真想一想!

練習(xí)

給單引號字符串加上語法高亮。

閱讀:help syn-region.

閱讀:help syn-region將比閱讀本章花費(fèi)更多的時(shí)間。給自己倒杯飲料,這是你應(yīng)得的!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號