结论:别选纯黑背景#000000,真正护眼的是lch明度l≈20–35的中深灰背景(如one dark pro的#282c34),配合语义化语法高亮与灰阶注释色。

直接说结论:别选纯黑背景 #000000,也别信“越暗越护眼”;真正降低疲劳的,是背景明度在 LCH L≈20–35 区间、注释用灰阶色、语法 token 有语义区分的组合——One Dark Pro(背景 #282c34)仍是当前最稳的起点。
为什么 One Dark Pro 背景色 #282c34 比默认 Dark+ 更舒服
默认 Dark+ 的 #1e1e1e 明度偏低、蓝调弱,长时间看容易发沉;#282c34 是带轻微蓝灰倾向的中深灰,L 值约 35,配合注释色 #5c6370 和字符串色 #98c379,形成自然视觉层级:关键词跳出来,注释退后,字符串不刺眼。
- 装完必须手动启用:按
Cmd+Shift+P输入Preferences: Color Theme,选中它——装了 ≠ 生效 - 检查工作区
.vscode/settings.json是否锁定了"workbench.colorTheme",否则用户级设置会被覆盖 - 如果函数名/类型颜色没变,说明主题启用了
semanticTokenColors,这是好事,但别用editor.foreground去覆盖,会破坏整套语义体系
editor.tokenColorCustomizations 怎么写才生效
改代码颜色不是改主题,而是配语法高亮:if 是粉色、"hello" 是橙色、// comment 是灰绿色,这些全归 editor.tokenColorCustomizations 管。它只认 token scope(比如 keyword、string.quoted.double.python),不认语言名或主题名。
- 必须先按
Ctrl+Shift+P运行Developer: Inspect Editor Tokens and Scopes,点中目标代码,确认真实 scope —— 别猜string,可能实际是string.quoted.single.ts - 想只影响 Python?写成
"[python]": { "editor.tokenColorCustomizations": { "strings": "#4ecdc4" } },否则 JS/TS 也会被波及 - 第三方主题(如
Nord)常自带tokenColorCustomizations,会覆盖你的设置;关掉它:"nord.enforceSyntaxHighlighting": false
别在 workbench.colorCustomizations 里写编辑器代码色
workbench.colorCustomizations 和 editor.tokenColorCustomizations 完全隔离,混写在一个对象里会静默失效。前者管状态栏、侧边栏、标签页这些 UI 元素;后者专管代码语法着色,且只支持 scope 规则。
- 改侧边栏背景:
"sideBar.background": "#1e1e1e";改当前行高亮:"editor.lineHighlightBackground": "#2a2d31" - 颜色改了没反应?90% 是因为在
editor.tokenColorCustomizations里写了 UI 相关 key(比如误写statusBar.background),VS Code 直接忽略 - 工作区级
settings.json里的workbench.colorCustomizations会**完全屏蔽**用户级设置,别在两个地方同时写
最容易被忽略的是:OLED 屏上纯黑 #000000 会让相邻白色像素过曝,文字边缘泛光;LCD 上则易显脏灰。实测舒适区间是十六进制 #1e1e1e 到 #2d2d2d,再浅削弱对比,再深加重压迫感——这个明度范围,比选什么主题名字重要得多。











