2

我写了一个 vim 语法文件。我注意到除了以冒号 ( :) 开头的关键字之外的所有关键字都被突出显示。有没有办法在 Vim中转义冒号?

这是文件的一部分:

syn keyword actionLabel :action nextgroup=actionName skipwhite
syn keyword problemLabels :goal :init :domain
syn keyword advLabels :types
syn keyword pondLabels :observe


hi def link actionLabel     Statement
hi def link problemLabels   Statement
hi def link advLabels       Statement
hi def link pondLabels      Statement
4

2 回答 2

3

最好的解决方案似乎不是使用该keyword选项,而是使用该matches选项。

syn match pddlLabel ':[a-zA-Z0-9]\+'
hi def link pddlLabel Statement
于 2013-07-02T16:11:24.717 回答
3

:h :syn-define关于关键字...

根据 ' iskeyword ' 选项,它只能包含关键字字符。它不能包含其他语法项。它只会匹配一个完整的单词(匹配前后没有关键字字符)。关键字“if”将匹配“if(a=b)”,但不匹配“ifdef x”,因为“(”不是关键字字符,而“d”是。

这意味着您必须修改文件类型的iskeyword以包含冒号字符(ascii 58)。从 vi 默认开始,我们可以支持任何字母字符、数字、下划线或冒号:

set iskeyword="@,48-58,_"
于 2013-07-02T16:06:12.163 回答