必须手动在 Settings – User 中添加 "draw_white_space": "all"(英文双引号、小写字符串),否则空格(·)和制表符(→)无法稳定显示;还需注意 translate_tabs_to_spaces、只读状态、配色方案、trim_trailing_white_space_on_save 等影响因素,并额外配置 "show_line_endings": true 才能显示行尾 ¶。

必须手动加 "draw_white_space": "all" 到用户设置里,其他方式都不稳定——菜单勾选、命令面板临时开、写错位置或值类型,都会导致空格(·)不显示,只看到制表符(→)甚至什么也不显。
怎么在 Settings – User 里正确加 draw_white_space
打开 Preferences → Settings,只改右侧「Settings – User」里的 JSON 对象:
- 必须写成
"draw_white_space": "all",引号是英文双引号,"all"是小写字符串,不能写成true、on、all(没引号)或"All" - 配置项名是
draw_white_space,拼错成draw_whitespace或white_space就无效 - 只加在用户设置(右侧)才全局生效;加在左侧默认设置、语法专属设置或 session 文件里,完全不起作用
- 保存后已打开的文件可能不立即刷新,切换标签页或按一下方向键就能触发重绘
为什么开了 "draw_white_space": "all" 还看不到 · 或 →
不是配置没生效,而是底层条件缺失或被覆盖:
-
"translate_tabs_to_spaces": true:此时按 Tab 插入的是空格,文件里根本没有\t字符,自然只渲染·,不会出现→。右下角状态栏显示Tab Width: 4 (Spaces)就是这个状态 - 文件是只读(RO):Sublime 会跳过空白字符渲染
- 配色方案太淡:尤其浅色主题下
·几乎看不见,调大font_size比换主题更快见效 - 刚执行过
"trim_trailing_white_space_on_save":行尾空格已被删,自然无·可显
show_line_endings 和换行符 ¶ 是独立开关
"draw_white_space": "all" 管 · 和 →,但 ¶ 完全由另一个配置控制:
- 必须额外加
"show_line_endings": true才显示每行末尾的¶ - 它和
draw_white_space解耦:只开前者,看不到¶;只开后者,¶也不会出来 - 跨平台协作时(比如 Windows 提交 LF/CRLF 混用),
¶比·和→更关键,因为它直接对应 Git 警告里的换行符类型
临时查看别动配置:用 Toggle White Space 命令
代码审查中途想快速确认某几行有没有混用缩进?不用改长期偏好:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS) - 输入
Toggle White Space回车,立刻在"all"和"none"之间切换 - 它不修改用户配置,只作用于当前会话;关掉 Sublime 再打开,仍按你原来的设置恢复
- 注意:它不启用
show_line_endings,所以¶不会出现;也不是菜单里的【Show Hidden Characters】,后者行为陈旧、容易漏渲染
真正难的不是让符号显示出来,而是看到 → 和 · 后,立刻分辨出哪一行该留 Tab、哪一段该转空格、哪个行尾空格其实是隐藏的格式污染——这时候状态栏的 Tab Width、CR/LF 和右下角语法标识,比符号本身更关键。

















