讲师中心 微信公众号
AI工具推荐 视频效率加速

vscode自定义关键字 _ VSCode自定义关键字高亮颜色的textMateRules配置方法

梦丽君_5365

梦丽君_5365

发布时间:2026-04-07 18:55:03

|

845人浏览过

|

来源于php中文网

原创

VS Code 的 editor.tokenColorCustomizations 无法高亮自定义关键字,因其仅能覆盖已有 token 类型,不能创建新 scope;必须通过 TextMate 语法注入或完整语法扩展先生成对应 scope(如 keyword.custom.constant),再用 textMateRules 配色。

vscode自定义关键字 _ vscode自定义关键字高亮颜色的textmaterules配置方法

VS Code 无法通过 editor.tokenColorCustomizations 直接高亮自定义关键字,必须用 TextMate 语法注入(injectionSelector)或扩展语法文件 + textMateRules 配合生效。

为什么 tokenColorCustomizations 对自定义关键字无效

VS Code 的 editor.tokenColorCustomizations 只能覆盖已有 token 类型(如 keyword、support.function),不能凭空创建新 token。你写的 myKeyword 如果没被语法解析器识别为某个 scope,再怎么配 textMateRules 都不会命中。

  • 常见错误现象:"scope": "myKeyword" 完全不生效,关键词颜色毫无变化
  • 根本原因:TextMate 规则靠 scope 字符串匹配,而默认的 JavaScript/Python 等语法不产出 myKeyword 这类 scope
  • 验证方法:打开命令面板 → Developer: Inspect Editor Tokens and Scopes,把光标停在目标词上,看右下角显示的实际 scope 列表

正确做法:用 injectionSelector 注入自定义 scope

适用于想在特定语言(如 JavaScript)中高亮一组固定单词(如 TODO、FIXME、API_V1),且不想写完整语法扩展的情况。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载
  • 新建 ~/.vscode/extensions/custom-keywords-0.0.1/syntaxes/inject-custom-keywords.json
  • 内容需包含 injectionSelector(例如 "L:source.js" 表示注入到 JS 文件)和 patterns 匹配规则
  • 关键点:每个 match 必须输出一个明确 scope,如 keyword.custom.api,后续才能被 textMateRules 捕获
  • 示例片段(匹配大写蛇形常量):
    {
      "injectionSelector": "L:source.js",
      "patterns": [
        {
          "match": "\b[A-Z][A-Z_0-9]*\b",
          "name": "keyword.custom.constant"
        }
      ]
    }

如何用 textMateRules 绑定颜色

只有当上面的 injection 成功产出 scope 后,这条配置才起作用。它不是独立生效的开关,而是“染色器”。

  • 在 settings.json 中添加:
    "editor.tokenColorCustomizations": {
      "textMateRules": [
        {
          "scope": "keyword.custom.constant",
          "settings": {
            "foreground": "#ff6b6b",
            "fontStyle": "bold"
          }
        }
      ]
    }
  • scope 值必须与 injection 中的 name 完全一致(包括大小写和点号)
  • 多个规则按数组顺序匹配,靠前的规则优先级更高;避免 scope 冲突(比如同时匹配 keyword 和 keyword.custom.constant)
  • 不支持正则 scope,不支持通配符(keyword.custom.* 无效)

更稳定但重一点的方案:写完整语法扩展

如果需要跨语言支持、复杂上下文判断(比如只在注释里高亮 TODO),或者 injectionSelector 不稳定(某些语言不支持注入),就得走标准语法扩展路径。

  • 创建 package.json 声明 contributes.grammars,指向自定义 .tmLanguage.json
  • 在 .tmLanguage.json 中用 repository 和 include 复用原语言语法,再叠加自己的 patterns
  • 好处是 scope 控制精准、可调试性强;坏处是每次更新都要 reload window,且发布为扩展才方便复用
  • 本地测试时,直接把 .tmLanguage.json 放进 ~/.vscode/extensions/xxx/syntaxes/ 并重启即可

真正卡住人的地方从来不是配色本身,而是 scope 没生成出来就急着写 textMateRules —— 先用 Inspect Editor Tokens and Scopes 确认 scope 存在,再动笔配色,省掉 90% 的无意义尝试。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2195

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3462

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1156

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3979

2025.09.10

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6184

2023.10.24

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

14326

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

1685

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

3957

2023.12.21

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn