当前位置:K88软件开发文章中心编程工具Vim → 文章内容

Vimscript 基本语法高亮

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:54:10

由 Loen 创建, 最后一次修改 2016-02-24 既然已经移除前进路上的绊脚石,是时候开始为我们的Potion插件写下一些有用的代码。 我们将从一些简单的语法高亮开始。在你的插件的repo中创建syntax/potion.vim。把下面的代码放到你的文件里:if exists("b:current_syntax") finishendifechom "Our syntax highlighting code will go here."let b:current_syntax = "potion"关闭Vim,然后打开你的factorial.pn文件。 你也许或也许不能看到消息,取决于你是否有其他插件在该插件之后输出消息。 如果你执行:message,你将会看到这个文件的确已经加载了。注意:?每次我告诉你打开Potion文件,我是想要你在一个新的Vim窗口或进程里打开,而不是在一个分割或tab。 打开一个新的Vim窗口导致Vim为此重新加载你所有的插件,而打开一个分割则不会。代码文件开头和结尾的那几行是一个惯用法,如果这个缓冲区的语法高亮已经启动了,那就无需重新加载。高亮关键字在本章的剩下部分,我们将忽略文件开头和结尾的if和let防御墙。不要移除那几行,只是眼不见为净而已。用下面的代码替换掉文件中的占位符echom:syntax keyword potionKeyword to timeshighlight link potionKeyword Keyword关闭factorial.pn并重新打开它。to和times被高亮成你的配色方案中的关键字类型了!这两行展示了Vim中的基本的语法高亮。为了高亮某个语法:你首先要用syntax keyword或相关命令(我们待会会提到),定义一组语法类型。然后你要把这组类型链接到高亮组(highlighting groups)。 一个高亮组是你在配色方案里定义的东西,比如"函数名应该是蓝色的"。这可以让插件作者决定有意义的语法类型分组,然后链接到通用的高亮组。 这同时也让配色方案创作者决定通用的程序结构,而不需要考虑单独的语言。除了在我们的玩具程序中用到的,Potion还有其他的关键字,所以让我们修改syntax文件来一并高亮它们。syntax keyword potionKeyword loop times to whilesyntax keyword potionKeyword if elsif elsesyntax keyword potionKeyword class returnhighlight link potionKeyword Keyword首先要说的是:最后一行没有改掉。我们依然告诉Vim所有在potionKeyword中的内容应该作为Keyword高亮。我们现在新增三行,每行都以syntax keyword potionKeyword开头。 这意味着多次执行这个命令不会_重置_语法类型分组 —— 而是扩增它!这使得你可以化整为零地定义分组。怎样定义分组取决于你:你可以仅仅一行密密麻麻地写满所有的内容。你可以划分成几行,来满足每行80列的规则以便于阅读。你可以每一项都独占一行,来使得diff的结果更加清晰。你可以跟我在这里做的一样,把相关的项放在同一行。高亮函数Vim的另一个高亮组是Function。这就来加入一些Potion的内置函数到我们的高亮文件。 把你的syntax文件修改成这样:syntax keyword potionKeyword loop times to whilesyntax keyword potionKeyword if elsif elsesyntax keyword potionKeyword class returnsyntax keyword potionFunction print join stringhighlight link potionKeyword Keywordhighlight link potionFunction Function关闭并重新打开factorial.pn,你将看到内置的Potion函数现在已经高亮了。它的工作原理就跟关键字高亮一样。我们定义了新的语法类型分组并链接到不同的高亮组。练习想一想为什么文件开头的if exists和结尾的let是有用的。如果你搞不懂,不要担心。 我也曾就这个问题问过Tim Pope。浏览:help syn-keyword。注意提到iskeyword的部分。阅读:help iskeyword.阅读:help group-name来了解一些配色方案作者常用的通用高亮组。

Vimscript 基本语法高亮