侧边栏中文显示方块是因字体未在.sublime-theme中为sidebar_label类显式配置;必须新建sidebar-fix.sublime-theme文件,在Packages/User/目录下声明font.face等属性,并确保系统已安装对应中文字体且Sublime彻底重启。

侧边栏中文显示方块或空白,不是文件编码问题,也不是 Sublime 读错了字节——它压根没用到文件内容。这是纯 UI 渲染层的字体缺失,必须通过 .sublime-theme 文件显式配置 sidebar_label 类的 font.face,其他任何设置(比如 default_encoding、font_face 全局配置)都无效。
为什么改 Settings 里的 font_face 没用
Sublime 的编辑区和侧边栏使用两套完全独立的渲染逻辑:编辑区走 syntax + view 配置,侧边栏只认 theme 文件里明确声明的 class。你加了 "font_face": "Microsoft Yahei" 到 Settings,它只影响代码区域、标签页、状态栏,对 sidebar_label 这个 class 视而不见。
-
sidebar_label是侧边栏中每个文件/文件夹名的渲染节点,必须在 theme 中单独配 - 全局
font_face设置不向下穿透到 sidebar 容器内部 - 即使系统装了中文字体,Sublime 也不会自动 fallback;没声明,就静默显示方块
怎么写有效的 sidebar-fix.sublime-theme
新建 sidebar-fix.sublime-theme 文件,放在 Packages/User/ 目录下,内容必须严格满足 JSON 格式,且只包含真正需要的 class:
[{
"class": "sidebar_label",
"font.face": "Noto Sans CJK SC",
"font.size": 13,
"line_height": 1.35
}, {
"class": "sidebar_container",
"content_margin": [8, 4, 8, 4]
}]
-
"class": "sidebar_label"这一行不能少,也不能拼错大小写(如写成sidebar-label或Sidebar_Label就失效) -
font.face值必须是系统真实存在的字体名:macOS 用"PingFang SC",Windows 用"Microsoft Yahei"或"SimHei",Linux 用"Noto Sans CJK SC" - 别加多余逗号、引号不闭合、缩进错误——Sublime 不报错,但整个 theme 会静默失效
Linux 用户绕不开的三步验证
即使 theme 写对了,Linux 下仍可能显示方块,因为缺底层支撑:
- 没装中文字体:运行
sudo apt install fonts-noto-cjk(Ubuntu/Debian),或sudo dnf install google-noto-sans-cjk-fonts(Fedora) - 输入法前端未覆盖 GTK/Qt:需装
fcitx5-frontend-gtk3和fcitx5-frontend-qt5,否则字体渲染链断裂 -
IMESupport插件旧版失效:Package Control 里卸载原插件,手动下载魔改版放进Packages/IMESupport/,否则侧边栏无法触发光标和输入法联动
重启后仍乱码?先查字体是否存在
Sublime 不会提示“字体找不到”,它只会安静地画方块。验证方式很直接:
- macOS:打开“字体册”,搜
PingFang SC或你写的字体名,看是否已启用 - Windows:进
C:\Windows\Fonts,确认msyh.ttc(微软雅黑)或simhei.ttf存在 - Linux:终端执行
fc-list | grep -i "noto.*cjk",有输出才算真装上了 - 别信网上抄来的字体名——
"Noto Sans CJK"和"Noto Sans CJK SC"是两个不同字体,后者才带简体中文子集
最常被忽略的一点:改完 theme 后必须彻底退出再重开(Cmd+Q 或 Ctrl+Q),Ctrl+R 重载视图不会刷新 theme;而且 "theme": "sidebar-fix.sublime-theme" 这行必须加在 Settings – User 里,不是 Settings 左右双栏的左边(那是默认设置,改了会被覆盖)。

















