如何对包含句号(.)的关键词实现Vim语法高亮?
你用的syn keyword规则不生效有两个核心原因:
syn keyword本身不支持正则转义语法,你写的foo\.bar这类带转义的写法对该类规则完全无效- Vim默认的关键字集合
iskeyword不包含.字符,带点的字符串不会被识别为独立关键字,自然也匹配不到
方案1:修改关键字集合(适合只需要匹配精确串、不影响其他功能的场景)
先把.加入当前文件类型的关键字列表,再定义关键字规则即可:
setlocal iskeyword+=. syn keyword myConstant foo.bar
方案2:使用syn match(更推荐,无副作用)
syn match支持正则匹配,专门用来匹配带特殊字符的自定义串,直接按需求写正则即可:
- 仅匹配
foo.bar的写法:
syn match myConstant /foo\.bar/
- 同时匹配
foo.bar和带双引号的"foo.bar"的写法:
syn match myConstant /\v"foo\.bar"|foo\.bar/
其中\v是Vim的very magic正则模式开关,可以减少不必要的转义符使用。
最后记得将自定义的高亮组关联到已有样式,否则不会显示高亮效果:
hi link myConstant Constant
如果你需要自定义高亮颜色,可以把上面的语句替换为自定义的hi规则即可。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

