vs code 中修改代码语法元素颜色需配置 editor.tokencolorcustomizations,通过 scope 精准匹配函数、字符串等 token,配合 developer: inspect editor tokens and scopes 查作用域;非语法界面色用 workbench.colorcustomizations。

VS Code 怎么改编辑器里代码的字体颜色
不是改整个窗口主题色,而是具体到某类语法元素(比如函数名、字符串、注释)的颜色——这得靠修改 editor.tokenColorCustomizations,它控制的是「语法高亮」层的颜色,和主题本身是分开的。
直接改 settings.json 最稳,不用装插件,也不依赖主题是否支持自定义。但要注意:如果当前主题本身用的是语义化 token(比如 support.function),你改了才生效;有些老旧主题硬编码了颜色,这里就覆盖不了。
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),输入Preferences: Open Settings (JSON)回车 - 在
json里加这个字段(已有就合并进去):
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": ["support.function"],
"settings": { "foreground": "#FF6B6B" }
},
{
"scope": ["string"],
"settings": { "foreground": "#4ECDC4" }
}
]
}
scope 值要查,不能瞎写。最简单的方法:把光标停在想改色的代码上 → 打开命令面板 → 运行 Developer: Inspect Editor Tokens and Scopes → 看右上角显示的 scope 列表,挑最具体那个(比如 support.function.builtin.python 比 support.function 更精准,但也更局限)。
改完没反应?常见原因和检查点
改了 settings.json 却没变色,大概率不是配置错,而是作用域没命中或被更高优先级规则覆盖。
- 确认你改的是「当前工作区」还是「用户设置」:两个地方都可能有
tokenColorCustomizations,后者会被前者覆盖 -
scope太宽泛(比如只写function)可能根本不存在;太具体(比如带语言后缀)又只在对应文件生效 - 某些 token(如
keyword.control)在不同语言里含义不同,Python 的if和 CSS 的if可能属于不同 scope - 重启 VS Code 不必要,但保存
settings.json后要等 1–2 秒,颜色才会刷新
想改非语法部分的颜色,比如行号、括号匹配、侧边栏
这些不属于 token 高亮,得用另一套配置:workbench.colorCustomizations。
比如让行号变灰一点:
"workbench.colorCustomizations": {
"editorLineNumber.foreground": "#888"
}
常见可配项包括:editorBracketMatch.background(括号高亮背景)、editorCursor.foreground(光标颜色)、activityBar.foreground(左侧图标文字色)。所有可用 key 都能在官方文档「Workbench Color Keys」页查到,搜关键词就行,别猜。
注意:workbench 类配置对所有界面元素生效,不区分语言;而 tokenColorCustomizations 只管编辑器里代码本身。
字体颜色和字体本身是两回事
很多人搜“改字体颜色”顺手把 editor.fontFamily 或 editor.fontSize 也改了,结果发现颜色没变、字倒是变大了——这是混淆了两个独立配置项。
如果你真想同步调字体,可以一起设,但它们互不影响:
-
editor.fontFamily控制显示什么字体(如"Fira Code", "Consolas", monospace) -
editor.fontSize控制字号(如14) -
editor.tokenColorCustomizations和workbench.colorCustomizations才管颜色
真正容易被忽略的是:某些连字字体(ligature font)开启后,== 可能渲染成一个符号,但它底层 token 还是 operator,颜色规则照常生效——别因为看着像图形就以为颜色失效了。










