微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vim中的子匹配语法高亮显示

首先,我将展示我遇到的具体问题,但我认为问题可以概括.

我正在使用一种具有明确括号语法的语言(如Lisp),但是只有左侧paren保留的关键字.例:

(key key)

前者是保留字,但后者是对名为“key”的变量的引用

不幸的是,我发现突出显示左边的人很烦人,所以我最终使用了

syn keyword classification key

代替

syn keyword classification (key

但前者对变量的触发也是如此.

我会采取行动解决我的问题,但我更感兴趣的是一种通用方法来突出显示给定匹配的一个子集.

解决方法

在这种情况下单独使用syn关键字是行不通的,因为您希望突出显示更加了解周围的语法. syn区域,syn匹配和syn关键字的组合效果很好.

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

以上只会使用功能突出显示组突出显示键,foo和bar,前提是它们也与lispfunc匹配.

如果除了key,foo和bar之外还有其他单词(将使用Identifier高亮组突出显示它们.这允许您区分标准函数名称用户创建的名称.

(和)将使用特殊突出显示组突出显示,并且使用语句突出显示组突出显示一个词之后的()内的任何内容.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐