vscode字体与颜色需分层配置:编辑器字体(editor.fontfamily+fontligatures)、终端字体(terminal.integrated.fontfamily/size)、语法高亮(editor.tokencolorcustomizations)、ui元素色(workbench.colorcustomizations)互不继承,改错位置即无效;中英文混排推荐'jetbrains mono', 'pingfang sc', 'monospace';终端配色生效需关闭并重建终端页。

VSCode 的字体和颜色不是“选个主题就完事”,必须分层配置:编辑器字体、终端字体、语法高亮色、UI 元素色,四者互不继承,改错地方就完全没反应。
editor.fontFamily 和 fontLigatures 必须配对启用
只设 "editor.fontFamily": "'Fira Code', monospace" 但不开启连字,!=、=> 这类符号仍显示为原始字符;而开了 editor.fontLigatures 却用不支持连字的字体(比如系统默认的 SF Mono),则连字不会渲染,还可能引发轻微渲染卡顿。
- 确认字体已正确安装到操作系统(macOS 要进“字体册”,不能只丢进 VSCode 目录)
-
editor.fontFamily值中每个字体名必须用单引号包裹,逗号后加空格,例如:'JetBrains Mono', 'Fira Code', monospace -
editor.fontLigatures是布尔值,写true或false,别写成字符串"true" - 改完保存
settings.json后无需重启,但需等 1–2 秒让渲染引擎重载字形缓存
terminal.integrated.fontFamily 不能复用 editor 配置
你在 settings.json 里改了 editor.fontFamily,集成终端字体却纹丝不动——这不是 bug,是设计如此。终端字体由独立字段控制,且对字体名称大小写、空格、连字符极其敏感。
- 必须显式设置
terminal.integrated.fontFamily,值格式与editor.fontFamily一致,但建议单独指定,避免混用导致终端中文模糊 - 中英文混排场景下,推荐写成:
'JetBrains Mono', 'PingFang SC', 'monospace'(macOS)或'JetBrains Mono', 'Microsoft YaHei', 'monospace'(Windows) -
terminal.integrated.fontSize独立于editor.fontSize,终端通常建议比编辑器大 1–2px,提升命令行可读性 - 修改后需关闭当前终端页(不是关窗口),再按
Ctrl+`重新打开,才能生效
workbench.colorCustomizations 和 editor.tokenColorCustomizations 别混用
前者管界面(侧边栏、状态栏、标签页背景),后者管代码(函数名、字符串、注释的颜色)。想改 CSS 里的 color: red 中的 red,得用 editor.tokenColorCustomizations;想把活动标签页底色变深,就得用 workbench.colorCustomizations。
-
editor.tokenColorCustomizations中的scope必须精准,靠猜会失效;光标停在目标代码上 →Cmd+Shift+P→ 输入Developer: Inspect Editor Tokens and Scopes→ 看右上角列出的 scope 链,选最末尾那个(如constant.other.color.rgb-value.css) -
workbench.colorCustomizations修改 UI 色时,键名必须带命名空间,比如"terminal.background"、"sideBar.foreground",拼错一个字母就无效 - 两个配置都支持按主题条件嵌套,例如
"[Dracula Official]": { "editor.tokenColorCustomizations": { ... } },但只在该主题激活时生效
颜色主题切换后 token 颜色可能被覆盖
你刚用 editor.tokenColorCustomizations 把 JavaScript 函数名设成紫色,切到 One Dark Pro 主题后发现又变回蓝色——不是配置丢了,是该主题自带的 token 规则优先级更高。
- 第三方主题(尤其带“Pro”“Official”后缀的)常内置完整 token 覆盖逻辑,会无视你全局写的
editor.tokenColorCustomizations - 解决方法:在
editor.tokenColorCustomizations外层加上主题限定,例如:"[One Dark Pro]": { "editor.tokenColorCustomizations": { ... } } - 如果多个主题都要适配,就得重复写多组,没有通配符;或者换用更“轻量”的主题(如 VSCode 内置的
Default Dark+)作为基础 - 真正容易被忽略的是:某些 token(如
support.type.property-name)在不同语言扩展里 scope 名不同,CSS 里的属性名和 TypeScript 接口字段名不是同一个 scope











