确认TextMate scope需运行“Developer: Inspect Editor Tokens and Scopes”,悬停查看完整scope链(如entity.name.function.ts),后缀表明来源语言;若仅显示source或text.plain,说明语言未识别,须先解决文件关联或扩展安装。
直接改
里的
或
就能生效,但前提是 scope 对、语言模式对、语义高亮已启用——三者缺一不可。
怎么确认当前代码用的是哪个 TextMate scope?
这是所有自定义的起点。光看文件后缀或右下角语言名没用,VSCode 实际着色依据是它为每个字符打上的 scope 标签。
快捷键
(macOS 是
),输入并运行
鼠标悬停在目标词上(比如一个函数名),面板会显示完整 scope 链,例如
或
注意后缀:
表示该规则来自 TypeScript 语法定义;如果只看到
或
,说明 VSCode 没识别出语言,得先解决文件关联或扩展安装
为什么加了
却没变色?
常见于在
里写了
却看不到效果,根本原因不是配置错,而是 scope 不匹配或被更高优先级规则覆盖。
scope 必须精确:想改 TypeScript 类名,写
不够,得用
或更细粒度的
不要漏掉语言后缀——不同语言对同一语法结构的 scope 命名不同,
在 Python 和 JavaScript 中可能对应完全不同的渲染逻辑
检查是否被主题内置规则覆盖:有些主题(如 One Dark Pro)在
里显式定义了大量 scope,你的
可能被跳过,此时应改用主题继承方式覆盖
怎么配才真正起作用?
语义高亮依赖语言服务器返回 token 类型,不是写了规则就自动生效。它和 TextMate 规则属于两套体系,不打通就会白配。
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
先确保
设置为
(可在设置里搜这个词)
Python 需要 Pylance,TypeScript/JS 默认支持,Go 需要 Go 扩展启用
,否则
、
这类语义 token 根本不会发出来
规则写法示例:
会统一染所有函数名;
让所有声明位置加粗;但
这种组合写法无效——语义 token 不支持点号嵌套,只认顶层类型 + 修饰符(如
,
)
调试时仍要用
,面板里会明确标出
或
,这才是你该配的 key
如何让自定义只对某一种语言生效?
全局配色容易污染其他语言,真要“只改 TypeScript 的字符串”,不能靠 scope 猜,得用 language-scoped 配置。
不支持按语言过滤,它只认 scope
正确做法是:在工作区根目录建
,写入:
注意格式:
中的
是语言 ID,不是文件后缀,必须和
弹窗里显示的一致(比如
而非
)
这种写法优先级高于用户级设置,且不会影响其他语言,适合团队项目统一规范
最常被忽略的一点:改完
后,已打开的文件不会自动重绘高亮,必须关闭再重新打开,或者执行
。scope 错、语言 ID 错、语义未启用、文件没重载——这四点占了 90% 的“配了没反应”问题。
settings.jsoneditor.tokenColorCustomizationseditor.semanticTokenColorCustomizationsCtrl+Shift+PCmd+Shift+PDeveloper: Inspect Editor Tokens and Scopesentity.name.function.tsstring.quoted.double.json.tssourcetext.plaintextMateRulessettings.jsoneditor.tokenColorCustomizationsentity.name.classentity.name.class.tsentity.name.type.class.tsvariable.othertokenColorstextMateRuleseditor.semanticTokenColorCustomizationsEditor: Semantic Highlightingenabledgoplsfunctionparameter"function": "#98c379""*.declaration": {"bold": true}"parameter.declaration"parameterparameter.readonlyDeveloper: Inspect Editor Tokens and ScopesSemantic Token: functionParameter (readonly)editor.tokenColorCustomizations.vscode/settings.json{
"[typescript]": {
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "string",
"settings": { "foreground": "#2ec4b6" }
}
]
}
}
}"[typescript]"typescriptChange Language Modejavascriptreactjsxsettings.jsonDeveloper: Reload Window