必须设 draw_white_space: "all" 才能稳定同时显示空格(·)、制表符(→)和行尾空白;值须为英文双引号包裹的字符串"all",配置项名须准确拼写,且只能加在 settings – user 右侧 json 中。

必须设 draw_white_space: "all" 才能稳定同时显示空格(·)、制表符(→)和行尾空白;其他方式要么不生效,要么只显示一部分,且无法持久。
怎么在 Settings – User 里正确加 draw_white_space: "all"
打开 Preferences → Settings – User,只改右侧 JSON,加这一行:
{"draw_white_space": "all"}
必须满足三点,否则静默失效:
- 值是英文双引号包裹的字符串
"all",写成true、all(没引号)、"All"(大小写错)都不行 - 配置项名必须是
draw_white_space,拼成draw_whitespace或white_space不识别 - 只能加在用户设置(右侧)里,加在左侧默认设置或语法专属设置中完全无效
保存后已打开文件可能不立即刷新,切换标签页或按一下 ↑/↓ 光标就能触发重绘。
为什么开了 draw_white_space: "all" 还看不到 → 或 ·
不是配置错了,而是底层条件没满足:
-
translate_tabs_to_spaces是true:此时按 Tab 插入的是空格,文件里根本没有\t字符,自然只显示 ·,不会出现 →。右下角状态栏若显示Tab Width: 4 (Spaces)就是这种情况 - 文件是只读状态(右下角显示 RO):Sublime 会跳过空白字符渲染
- 用了某些语法高亮插件(如自定义
.sublime-syntax):可能拦截或覆盖 invisibles 渲染逻辑 - 启用了
trim_trailing_white_space_on_save且刚保存过:行尾空格已被删,自然无 · 可显
show_line_endings 和换行符 ¶ 是独立开关
draw_white_space: "all" 管 · 和 →,但 ¶ 完全由另一个配置控制:
{"show_line_endings": true}
它和 draw_white_space 完全解耦:
- 只开
draw_white_space: "all" → 显示 · 和 →,但每行结尾没有 ¶ - 额外加
show_line_endings: true → 每行末尾强制显示 ¶,同时状态栏也会标出 LF / CRLF
跨平台协作时,Git 常因换行符混用报 warning,这时 ¶ 比 · 和 → 更关键——它直接对应 Git 提示里的 CRLF 或 LF 类型。
临时查看别动配置:命令面板快捷切换
代码审查中途想快速确认某几行有没有混用缩进?不用改用户设置:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS) - 输入
Toggle White Space回车
它瞬间在 "all" 和 "none" 之间切换,当前会话有效,关掉 Sublime 就恢复原状。
注意两点:
- 它不启用
show_line_endings,所以 ¶ 不会出现 - 它也不是菜单里的【View → Show Hidden Characters】,后者逻辑陈旧,有时漏渲染
真正难的从来不是让 · 和 → 出来,而是看到它们之后,得立刻分辨:这行该留 Tab 还是转空格,那个行尾空格是格式污染还是有意为之——这时候状态栏的 Tab Width、CR/LF 和右下角语法标识,比符号本身更值得盯一眼。











