在这种情况下单独使用syn keyword
是行不通的,因为您希望突出显示更多地了解周围的语法。syn region
、syn match
和的组合syn keyword
效果很好。
hi link lispFuncs Function
hi link lispFunc Identifier
hi link sExpr Statement
syn keyword lispFuncs key foo bar contained containedin=lispFunc
syn match lispFunc "(\@<=\w\+" contained containedin=sExpr contains=lispFuncs
syn region sExpr matchgroup=Special start="(" end=")" contains=sExpr,lispFuncs
上面只会使用 Function highlight 组突出显示 key、foo 和 bar,前提是它们也被 lispFunc 匹配。
如果在 a 之后有除 key、foo 和 bar 之外的任何单词(
,它们将使用 Identifier highlight 组突出显示。这使您可以区分标准函数名称和用户创建的函数名称。
(
和将)
使用特别高亮组突出显示,()
过去第一个单词内的任何内容都将使用语句高亮组突出显示。