我們甚至可以為Vim里面的語法高亮另開一本書了。
我們將在此講解它最后的重要內容,然后繼續講別的東西。 如果你想要學到更多,去讀`:help syntax`并閱讀別人寫的syntax文件。
## 高亮字符串
Potion,一如大多數編程語言,支持諸如`"Hello,world!"`的字符串字面量。 我們應該把這些高亮成字符串。為此我們將使用`syntax region`命令。 在你的Potion syntax文件中加入下面內容:
~~~
syntax region potionString start=/\v"/ skip=/\v\\./ end=/\v"/
highlight link potionString String
~~~
關閉并重新打開你的`factorial.pn`,你將看到文件結尾的字符串被高亮了!
最后一行應該很熟了。如果你不懂,重讀前兩章。
第一行用一個"region"添加一個語法類型分組。 區域(Regions)有一個"start"模式和一個"end"模式來指定開頭和結束的位置。 這里,一個Potion字符串從一個雙引號開始,到另一個雙引號結束。
`syntax region`的"skip"參數允許我們處理轉義字符串,比如?`"She said: \"Vimscript is tricky, but useful\"!"`。
如果不提供`skip`參數,Vim將在`Vimscript`之前的`"`停止匹配字符串,這不是我們想要的!
簡明扼要地說,`syntax region`中的`skip`參數告訴Vim: "一旦你開始匹配這個區域,我希望你忽略`skip`匹配的內容,即使它會被當作區域結束的標志"。
花上幾分鐘去想透徹。如果遇到的是`"foo \\" bar"`會怎樣?那會是正確的行為嗎? 那_總是_正確的行為嗎?放下本書,花上幾分鐘來認真_想一想_!
## 練習
給單引號字符串加上語法高亮。
閱讀`:help syn-region`.
閱讀`:help syn-region`將比閱讀本章花費更多的時間。給自己倒杯飲料,這是你應得的!
- 前言
- 鳴謝
- 預備知識
- 打印信息
- 設置選項
- 基本映射
- 模式映射
- 精確映射
- Leaders
- 編輯你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 鍛煉你的手指
- 本地緩沖區的選項設置和映射
- 自動命令
- 本地緩沖區縮寫
- 自動命令組
- Operator-Pending映射
- 更多Operator-Pending映射
- 狀態條
- 負責任的編碼
- 變量
- 變量作用域
- 條件語句
- 比較
- 函數
- 函數參數
- 數字
- 字符串
- 字符串函數
- Execute命令
- Normal命令
- 執行normal!
- 基本的正則表達式
- 實例研究:Grep 運算符(Operator),第一部分
- 實例研究:Grep運算符(Operator),第二部分
- 實例研究:Grep運算符(Operator),第三部分
- 列表
- 循環
- 字典
- 切換
- 函數式編程
- 路徑
- 創建一個完整的插件
- 舊社會下的插件配置方式
- 新希望:用Pathogen配置插件
- 檢測文件類型
- 基本語法高亮
- 高級語法高亮
- 更高級的語法高亮
- 基本折疊
- 高級折疊
- 段移動原理
- Potion段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?