必须将 draw_white_space 设为 "all" 才能稳定显示空格(·)和 tab(→),其他值或错误写法均静默失效;show_line_endings: true 需额外配置以显示换行符 ¶,二者独立控制。

draw_white_space 必须设为 "all" 才能稳定显示空格和 Tab
只勾选菜单里的 Show White Space 或按 Ctrl+Shift+P → View: Toggle Invisible Characters 是临时开关,重启就失效,协作中极易遗漏。真正可靠的做法是永久配置 draw_white_space。
这个配置项只接受三个字符串值:"none"、"selection"、"all"。写成 true、all(没引号)、"All"(大小写错)或 "boundary" 都会静默失败——Sublime 不报错,也不显示符号。
- 必须加在
Preferences → Settings – User右侧的 JSON 里,左侧默认设置或语法专属设置(如Settings – Syntax Specific)无效 - 值必须用英文双引号包裹,且严格为小写
"all" - 保存后立即生效,已打开的文件可能需要切换标签页或按方向键触发重绘
为什么开了 "draw_white_space": "all" 还看不到 · 或 →
常见原因不是配置没生效,而是视觉干扰或内容本身问题:
- 文件里真没空格:全是 Tab,自然只看到
→;可手动敲几个空格试试 - 启用了
translate_tabs_to_spaces:按 Tab 插入的是空格,所以全显示为·,不是→ - 当前配色方案把
·渲染得太淡:尤其浅色主题 + 小字号(如font_size小于 12)下几乎不可见;优先调大font_size比换主题见效更快 - 状态栏左下角显示
Spaces: 4≠ 空格已可见——它只反映缩进检测结果,跟draw_white_space是否开启完全无关
换行符 ¶ 和缩进符号 →/· 是两套独立控制逻辑
draw_white_space 控制空格和 Tab 的显示,但换行符是否标出(如 ¶ 或 ↵)由另一个配置决定:
- 必须额外添加
"show_line_endings": true才能在行尾渲染换行符符号 - 这个设置不影响
draw_white_space,也不影响缩进逻辑,只决定行尾是否画符号 - 启用后右下角状态栏会显示当前换行类型(LF/CRLF/CR),点击还能手动切换,比看符号更可靠
- 某些主题不支持
¶渲染,此时即使开了show_line_endings也看不到符号,但状态栏提示仍有效
Python/YAML/Markdown 用户别信“只在选区显示”
用 "selection" 或 "boundary" 模式排查缩进问题,等于主动放弃关键信息:
-
"selection":不选中就什么也看不到,改一行漏一个→,YAML 解析器直接拒绝 -
"boundary":跳过纯空格行首尾、缩进行末尾等位置,IndentationError 报错时你根本找不到问题行 -
"all"是唯一能暴露混用风险的选项,尤其对 Python 缩进、YAML 层级、Markdown 表格对齐等场景是刚需 - 大文件确实会略显杂乱,但比起 Git diff 看不出、CI 报错、协作时互相污染缩进,这点视觉代价值得











