You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅对GetKey函数参数内的KEY_开头标识符实现Vim语法高亮?

解决Vim语法高亮仅限定GetKey函数内KEY_标识符的问题

你的问题出在原语法规则没有精准限定KEY_开头标识符的匹配范围,导致外部的KEY_PRESSED也被误识别。可以通过以下步骤修正:

正确的语法规则配置

" 定义GetKey函数调用的括号内区域,transparent让区域本身不高亮
syn region GetKeyCall start=/GetKey(/ end=/)/ transparent
" 仅在GetKeyCall区域内匹配KEY_开头的标识符
syn match GetKeyArg /KEY_[_a-zA-Z0-9]\+/ contained containedin=GetKeyCall

规则说明

  • syn region GetKeyCall:精准定位GetKey(到)的范围,transparent参数确保这个区域本身不会被高亮,只作为内部语法元素的容器。
  • syn match GetKeyArg:匹配KEY_开头的标识符,contained表示它只能在包含它的语法组内生效,containedin=GetKeyCall明确限定仅在GetKeyCall区域内匹配。

效果验证

对于代码:

if(GetKey(KEY_SPACE) == KEY_PRESSED)
  • KEY_SPACE会被识别为GetKeyArg并高亮
  • KEY_PRESSED不在GetKey()括号内,不会被匹配

内容的提问来源于stack exchange,提问作者Aceldama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:22:06