必须将"draw_white_space":"all"添加至Preferences→Settings右侧用户设置中,值须为英文双引号包裹的字符串"all",保存后生效;换行符需额外配置"show_line_endings":true。

必须改用户配置里的 "draw_white_space": "all",其他方式要么不持久、要么只显示部分字符——这是唯一稳定生效的方案。
怎么让空格(·)和制表符(→)真正显示出来
Sublime 默认隐藏所有空白字符,靠猜缩进等于埋雷。直接改 Preferences → Settings – User,在右侧 JSON 里加一行:
{"draw_white_space": "all"}
注意三点:
- 必须用英文双引号包裹
"all",写成true、on或漏引号都会导致整个配置解析失败,静默失效 - 只写在「Settings – User」里才全局生效;写在左侧默认设置或语法专属设置中无效
- 保存后已打开文件可能不立即刷新,切换标签页或按一下
↑/↓光标就能触发重绘
为什么开了 "draw_white_space": "all" 还看不到 → 或 ·
符号不出现,往往不是配置没生效,而是底层数据缺失或被覆盖:
-
"translate_tabs_to_spaces"是true:此时按 Tab 插入的是空格,文件里根本没有\t字符,自然不会渲染 →,全都是 · - 文件是只读状态(右下角显示 RO):Sublime 会跳过空白字符渲染
- 用了某些语法高亮插件(如自定义
.sublime-syntax):可能拦截或覆盖 invisibles 渲染逻辑 - 启用了
"trim_trailing_white_space_on_save"且刚保存过:行尾空格已被删,自然无 · 可显
"show_line_endings": true 和换行符 ¶ 的关系
"draw_white_space": "all" 管空格和制表符,"show_line_endings" 才管换行符 ¶,两者完全独立:
- 只开
"draw_white_space": "all"→ 显示 · 和 →,但每行结尾没有 ¶ - 额外加
"show_line_endings": true→ 每行末尾强制显示 ¶,同时状态栏也会标出 LF / CRLF - Git 跨平台协作时,混用换行符常引发 warning,这时 ¶ 就比 · 和 → 更关键
最终用户配置典型写法:
{"draw_white_space": "all", "show_line_endings": true}
临时查看别动配置:命令面板快捷切换
代码审查中途想快速确认某段有没有混用缩进,又不想改长期偏好?用命令面板:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS) - 输入
Toggle White Space回车
它会翻转当前 draw_white_space 值("all" ↔ "none"),秒开秒关,但仅限当前会话——关掉 Sublime 就恢复原状。这个操作不启用 show_line_endings,所以 ¶ 不会出现。
真正难的从来不是让符号显示出来,而是看到 → 和 · 后,判断哪一行该留、哪一行该删:比如 Python 缩进层里夹着一个真实 \t,或者 JSON key 后多了一个不该有的空格。这时候符号只是眼睛,清理动作还得手动或靠 Convert Indentation to Spaces 命令收尾。

















