不能原生支持;vs code 无 usesystemcolorscheme 开关,也不监听系统主题变化,官方配置中不存在 workbench.preferreddarkscheme 和 workbench.preferredlightscheme 字段,唯一可行方案是借助 auto dark mode 等扩展通过 systempreferences api 监听并切换主题。

VS Code 能不能自动随系统深浅色切换?
不能原生支持。VS Code 没有 useSystemColorScheme 这类内置开关,也不会监听 Windows/macOS 系统主题变化并自动切换颜色主题——这是它和 Visual Studio 的关键区别之一。
workbench.preferredDarkScheme 和 workbench.preferredLightScheme 是什么?
这两个配置项是常见误解来源:它们根本不存在。VS Code 官方文档、源码和 settings.json schema 中均无此字段。试图在 settings.json 里写 "workbench.preferredDarkScheme": "Dark+": "workbench.preferredLightScheme": "Light+" 不会生效,且 VS Code 会静默忽略。
真正可行的折中方案:用 systemPreferences API + 扩展监听
目前唯一稳定实现“跟随系统”的路径,是依赖第三方扩展(如 Auto Dark Mode),它通过 Electron 的 systemPreferences.isDarkMode() API 读取系统状态,并在检测到变化时调用 VS Code 的 workbench.action.QuickSwitchTheme 命令切换主题。
- 安装扩展后需手动指定深色/浅色主题名称,例如:
"auto-dark-mode.darkTheme": "GitHub Dark Default"、"auto-dark-mode.lightTheme": "GitHub Light Default" - 扩展无法保证瞬时响应:系统主题切换后,VS Code 可能需数秒才触发重载(尤其 macOS 上)
- Windows 用户注意:若启用了“自动根据日出日落切换主题”,该扩展只响应系统设置变更事件,不主动轮询时间
- 不重启 VS Code 也能生效,但首次启用扩展后建议重启一次,确保监听器注册完整
为什么不能靠 settings.json 或 colorCustomizations 实现?
workbench.colorCustomizations 只能静态覆盖颜色,无法绑定系统状态;editor.tokenColorCustomizations 同理,只作用于语法高亮,且不感知系统主题。所有 JSON 配置都是启动时加载一次,之后不再更新。
容易被忽略的点:即使你用脚本定期修改 settings.json 并触发 reload,VS Code 本身不提供外部进程触发主题切换的 CLI 接口,code --goto 或 --extensions-dir 都不涉及主题控制。所谓“自动跟随”,本质是扩展在 VS Code 进程内做的轮询或事件监听,而非配置层能力。











