我写了一个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
答案 0 :(得分:3)
从:h :syn-define
关于关键字...
它只能包含关键字字符 ' iskeyword '选项。它不能包含其他语法项。它会 只匹配一个完整的单词(没有关键字字符 在比赛之前或之后)。关键字“if”会匹配 “if(a = b)”,但不在“ifdef x”中,因为“(”不是关键字 字符和“d”是。
这意味着你必须为你的文件类型修改iskeyword以包含冒号字符(ascii 58)。从vi默认值开始,我们可以支持任何字母字符,数字,下划线或冒号:
set iskeyword="@,48-58,_"
答案 1 :(得分:3)
最佳解决方案似乎没有使用keyword
选项,而是使用matches
选项。
syn match pddlLabel ':[a-zA-Z0-9]\+'
hi def link pddlLabel Statement