codecamp

Vimscript 更高级的语法高亮

我们甚至可以为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将比阅读本章花费更多的时间。给自己倒杯饮料,这是你应得的!

Vimscript 高级语法高亮
Vimscript 基本折叠
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

vi命令手册

Vimscript编程参考

Vim 其他内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }