必须设draw_white_space为"all"才能稳定显示空格(·)和制表符(→),菜单“Show Hidden Characters”仅临时生效且不显示换行符;看不到符号常因文件无对应字符或被translate_tabs_to_spaces、只读状态、插件等压制;换行符¶/↵需额外启用show_line_endings:true。

draw_white_space 必须设为 "all",否则你看到的只是部分或临时效果——菜单里的「Show Hidden Characters」只翻转一次、不存配置、不显示换行符,关掉就失效。
为什么改了设置还是看不到 · 和 →
不是配置没生效,而是文件里压根没有对应字符,或被其他设置压制:
-
translate_tabs_to_spaces是true:按 Tab 插入的是空格,文件里没有\t,自然只显示·,不会出现→ - 文件是只读状态(右下角标 RO):Sublime 会跳过空白字符渲染
- 刚执行过
trim_trailing_whitespace_on_save:行尾空格被删了,·就没了 - 当前语法高亮规则屏蔽了 invisibles 渲染,比如某些自定义
.sublime-syntax文件禁用了white_spacescope
show_line_endings 和 ¶ 换行符的关系
draw_white_space 不管换行符,show_line_endings 才控制 ¶ 或 ↵ 是否显示:
- 只开
"draw_white_space":"all"→ 显示·和→,但每行结尾没有符号 - 额外加
"show_line_endings": true→ 行尾强制显示¶(Windows)或↵(Unix),状态栏同步标出CRLF/LF - Git 报
^M或换行警告时,¶比·更关键,它直接对应底层行尾编码
别用 "selection" 或 "boundary" 模式
它们看似“智能”,实则漏掉关键位置:
-
"boundary"会跳过纯空格行首尾、缩进行末尾等位置,Python 报IndentationError时你根本找不到错在哪 -
"selection"更危险——不选中就等于没开,改 YAML 或 Markdown 表格时漏一个→就导致解析失败 -
"all"是唯一能暴露全部混用风险的选项,尤其对 Python、YAML、TOML、Markdown 这类缩进敏感格式
字体和主题让符号看不清怎么办
符号渲染依赖字体支持和配色方案,不是配置错了:
- 如果
·极淡甚至看不见,优先调大font_size(比如设为14),比换主题见效更快 - 如果
→显示模糊或错位,大概率是混合缩进:同一文件里有的行用 4 个空格,有的用 1 个\t(即使tab_size都是 4),视觉对齐但字符本质不同 - 换用支持 U+00B7(·)和 U+2192(→)的等宽字体,如
Fira Code、JetBrains Mono或系统自带Consolas
· 和 → 后,判断哪一行该留、哪一行该删——比如 Python 缩进报错前,你得先确认那行开头到底是四个 · 还是一个 →。


















