W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
既然已經(jīng)移除前進(jìn)路上的絆腳石,是時候開始為我們的Potion插件寫下一些有用的代碼。 我們將從一些簡單的語法高亮開始。
在你的插件的repo中創(chuàng)建syntax/potion.vim
。把下面的代碼放到你的文件里:
if exists("b:current_syntax")
finish
endif
echom "Our syntax highlighting code will go here."
let b:current_syntax = "potion"
關(guān)閉Vim,然后打開你的factorial.pn
文件。 你也許或也許不能看到消息,取決于你是否有其他插件在該插件之后輸出消息。 如果你執(zhí)行:message
,你將會看到這個文件的確已經(jīng)加載了。
注意:?每次我告訴你打開Potion文件,我是想要你在一個新的Vim窗口或進(jìn)程里打開,而不是在一個分割或tab。 打開一個新的Vim窗口導(dǎo)致Vim為此重新加載你所有的插件,而打開一個分割則不會。
代碼文件開頭和結(jié)尾的那幾行是一個慣用法,如果這個緩沖區(qū)的語法高亮已經(jīng)啟動了,那就無需重新加載。
在本章的剩下部分,我們將忽略文件開頭和結(jié)尾的if
和let
防御墻。不要移除那幾行,只是眼不見為凈而已。
用下面的代碼替換掉文件中的占位符echom
:
syntax keyword potionKeyword to times
highlight link potionKeyword Keyword
關(guān)閉factorial.pn
并重新打開它。to
和times
被高亮成你的配色方案中的關(guān)鍵字類型了!
這兩行展示了Vim中的基本的語法高亮。為了高亮某個語法:
syntax keyword
或相關(guān)命令(我們待會會提到),定義一組語法類型。這可以讓插件作者決定有意義的語法類型分組,然后鏈接到通用的高亮組。 這同時也讓配色方案創(chuàng)作者決定通用的程序結(jié)構(gòu),而不需要考慮單獨的語言。
除了在我們的玩具程序中用到的,Potion還有其他的關(guān)鍵字,所以讓我們修改syntax文件來一并高亮它們。
syntax keyword potionKeyword loop times to while
syntax keyword potionKeyword if elsif else
syntax keyword potionKeyword class return
highlight link potionKeyword Keyword
首先要說的是:最后一行沒有改掉。我們依然告訴Vim所有在potionKeyword
中的內(nèi)容應(yīng)該作為Keyword
高亮。
我們現(xiàn)在新增三行,每行都以syntax keyword potionKeyword
開頭。 這意味著多次執(zhí)行這個命令不會_重置_語法類型分組 —— 而是擴增它!這使得你可以化整為零地定義分組。
怎樣定義分組取決于你:
Vim的另一個高亮組是Function
。這就來加入一些Potion的內(nèi)置函數(shù)到我們的高亮文件。 把你的syntax文件修改成這樣:
syntax keyword potionKeyword loop times to while
syntax keyword potionKeyword if elsif else
syntax keyword potionKeyword class return
syntax keyword potionFunction print join string
highlight link potionKeyword Keyword
highlight link potionFunction Function
關(guān)閉并重新打開factorial.pn
,你將看到內(nèi)置的Potion函數(shù)現(xiàn)在已經(jīng)高亮了。
它的工作原理就跟關(guān)鍵字高亮一樣。我們定義了新的語法類型分組并鏈接到不同的高亮組。
想一想為什么文件開頭的if exists
和結(jié)尾的let
是有用的。如果你搞不懂,不要擔(dān)心。 我也曾就這個問題問過Tim Pope。
瀏覽:help syn-keyword
。注意提到iskeyword
的部分。
閱讀:help iskeyword
.
閱讀:help group-name
來了解一些配色方案作者常用的通用高亮組。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: