必须设draw_white_space为"all"才能稳定显示所有空格(·)、制表符(→)、行尾空白及换行符(¶需配合show_line_endings: true);菜单项「show hidden characters」仅临时切换且不保存,无法显示换行符和未选中区域的空白字符。

Sublime 显示不可见字符根本不需要插件,改一个配置项就能稳定生效:必须设 draw_white_space 为 "all",写在用户设置里,其他方式都不靠谱。
为什么菜单里的「Show Hidden Characters」总失效
这个菜单项本质是临时切换 draw_white_space 在 "selection" 和 "none" 之间,不是 "all"。它不保存、不重绘已打开文件、重启后归零,某些主题或 Sublime 版本下甚至不出现。更关键的是:它压根不显示换行符 ¶,也不标出行尾空格——你看到的“对齐”,可能是 4 个空格 · 和 1 个制表符 → 混在一起的假象。
draw_white_space 的三个值到底怎么选
这个配置只接受字符串,写成 true、on 或漏引号都会导致整个用户配置解析失败,静默失效。
-
"none":默认值,什么也不画,缩进全靠猜 -
"selection":只在鼠标或键盘选中的区域里显示·和→,漏掉未选中的缩进行首、空行、注释行尾空格 -
"all":唯一能持续显示所有空格、\t、行尾空白和换行符的选项——但注意:换行符¶还需额外配show_line_endings才会出来
显示出来了但 · 和 → 看不清、错位、复制粘贴出问题
符号渲染受两个因素影响:一是当前配色方案对 · 和 → 的颜色/透明度定义,二是字体本身对这些 Unicode 符号的支持程度。很多深色主题把 · 设得极淡,甚至接近背景色。
- 先确认
translate_tabs_to_spaces是false:如果设为true,文件里实际没有\t字符,自然不会显示→ - 右下角状态栏显示
Tab Width: 4或Spaces: 2,仅代表 Sublime 当前识别的缩进风格,不影响→是否渲染 - 若
→显示模糊或错位,大概率是混合缩进:某行用 4 个空格,另一行用 1 个\t(Tab Width 4),视觉上看似对齐,但字符类型不同——此时执行命令面板里的Convert Indentation to Spaces更治本 - 临时排查可用
Ctrl+Shift+P输入Toggle White Space,它不改配置,只运行时覆盖,适合 Code Review 时快速比对
大文件卡顿、复制粘贴格式乱,怎么防
开启 "draw_white_space": "all" 后,Sublime 要实时扫描并绘制每处空白字符。这不会拖慢编辑性能,但可能带来轻微渲染延迟,尤其在超大文件中。
- 复制前别用鼠标拖选,容易误选隐藏空白;改用
Ctrl+L(选整行)或Ctrl+Shift+↑/↓(多行选择)更安全 - 粘贴到 Python、YAML 或 JSON 中时,多余的空格或混用缩进容易引发
IndentationError或语法错误 - 显示只是诊断手段,真正防坑要靠输入行为控制:在用户设置中一并加上
"tab_size": 4和"translate_tabs_to_spaces": true,让 Tab 键插入的是空格而非\t
最常被忽略的一点是:显示不可见字符 ≠ 自动修复缩进。你看到 → 和 · 并排出现,说明问题已经存在;而 draw_white_space 只负责告诉你它在哪,不负责把它删掉或转掉。











