Sublime Text 在 VNC 下 UI 高色差源于 VNC 丢弃 alpha 通道与色深,导致 hsla/rgba 色值降级为不透明纯色;需禁用所有透明度、改用高对比 6 位 hex 色值,并在 VNC 客户端启用 32 位色深、关闭 JPEG 压缩。

Sublime Text 在 VNC 环境下出现 UI 高色差(比如按钮发灰、文字泛白、选区边界糊成一片),不是配色方案本身问题,而是 VNC 传输层丢弃了 alpha 通道和部分色深信息,导致 hsla()、rgba() 或带透明度的十六进制色值被强制降级为不透明纯色,进而引发对比崩坏。
为什么 VNC 下 selection 和 highlight 看起来“洗过水”
VNC 协议默认使用 24-bit RGB 传输,不传递 alpha 通道;Sublime 的 .sublime-color-scheme 中若用了 "background": "hsla(210, 30%, 70%, 0.3)" 或 "#3399ff80",VNC 客户端会截断 alpha,渲染成不透明的 #3399ff——在深色背景上就变成一块刺眼蓝斑,在浅色背景上则几乎不可见。
- VNC 不支持亚像素渲染和 ClearType,字体边缘本就偏硬,再叠加色值降级,视觉反差更突兀
- TigerVNC 默认启用 “JPEG compression”,会进一步压缩色彩过渡,让渐变、半透区域出现色块
- RealVNC 的 “Low bandwidth” 模式会主动丢弃低饱和度像素,导致灰色系 scope(如
comment、invalid)直接消失
改 color_scheme:禁用所有 alpha,用高对比纯色替代
必须编辑当前启用的 .sublime-color-scheme 文件,把所有依赖透明度的规则替换成不透明、高对比的纯色值。
- 搜索
"scope": "selection",把"background"改成明确的 6 位 hex,例如"#4a6fa5"(避免#333这类易被 VNC 压成黑/白的弱对比色) - 搜索
"name": "Highlight"或"scope": "region.yellowish",同样换为不透明色,如"#ffcc00"(亮黄比淡灰更可靠) - 删掉所有
hsla()、rgba()表达式;VNC 下它们等价于无效 - 检查
"foreground"是否与"background"形成足够对比:深背景配"#ffffff",浅背景配"#000000"或"#222222"
关掉 VNC 端的压缩和色深降级选项
客户端设置比 Sublime 配置更关键——如果 VNC 层就把颜色砍掉了,Sublime 再怎么调也白搭。
- TigerVNC:连接前点
Options→Encodings→ 取消勾选Enable JPEG compression;再进Color depth→ 选Full (32-bit)(即使显示为灰,实际会尝试走真彩) - RealVNC:右键连接 →
Properties→Quality→ 拉满到High;Colour depth设为Millions of colours (32-bit) - 浏览器 VNC(如 noVNC):无法调参,唯一办法是换用 TigerVNC/RealVNC 桌面客户端
别碰 theme 文件,UI theme 在 VNC 下基本失效
.sublime-theme 文件控制侧边栏、标签页等 UI 元素,但它重度依赖系统级渲染(如 Qt 的抗锯齿、阴影、圆角),而 VNC 只传最终像素帧——你看到的 UI theme 几乎全是 Sublime 自绘的 bitmap fallback,颜色失真比代码区更严重。
- 不要试图改
"theme": "Material Theme.sublime-theme"来缓解色差,它对 VNC 下的视觉一致性毫无帮助 - 真要改善 UI 可读性,只做一件事:在用户设置
Preferences.sublime-settings中加"font_size": 12(默认 10 太小,VNC 下更糊) - 如果连菜单都看不清,说明 VNC 分辨率或缩放没对齐,优先调客户端窗口尺寸,而非修 Sublime
最麻烦的地方不在 Sublime 本身,而在 VNC 协议层对现代色彩模型的天然排斥——你改完 color_scheme,还得同步压服客户端按真彩模式跑,漏一环,高色差就还在。这不是 bug,是技术栈代差带来的必然妥协。


















