永久启用 "draw_white_space": "all" 才能真正显示空格(·)、tab(→)和换行符(¶);"boundary" 和 "selection" 模式会遗漏关键空白,不可靠;配合 "translate_tabs_to_spaces": true 等设置可防缩进混用。

怎么让空格和 Tab 真正“看得见”
只靠菜单里点一下 Show Hidden Characters 是不可靠的——它只在当前会话生效,关了窗口就失效,协作时极易被忽略。真正能解决问题的,是永久启用 draw_white_space 设置,并设为 "all"。
- 打开
Preferences → Settings,在右侧用户设置(User Settings)中添加这一行:"draw_white_space": "all" - 保存后立即生效,无需重启 Sublime Text
- 效果:空格显示为浅灰圆点(·),Tab 显示为浅灰箭头(→),换行符(¶)也会出现(取决于主题支持)
- 别被右下角状态栏的
Tabs: 4或Spaces: 4迷惑——那只是当前文件的缩进检测结果,跟是否显示空白字符完全无关
为什么不能选 "boundary" 或 "selection"
"boundary" 表面看是“智能显示”,实际会跳过纯空格行首尾、缩进行末尾等关键位置的空格,Python 报 IndentationError 时你根本看不到问题在哪;"selection" 更危险——不选中就等于没开,改一行代码漏掉一个 Tab 都可能引发 YAML 缩进失效或 Markdown 表格错位。
-
"all"是唯一能暴露全部混用风险的选项,尤其适合 Python、YAML、TOML、Markdown 等对空白敏感的格式 - 临时检查可用命令面板:
Ctrl+Shift+P→ 输入Draw White Space→ 切换模式,但别依赖它长期工作 - 某些暗色主题会让 · 和 → 显得过淡,可配合插件
TrailingSpaces高亮行尾空格,或调亮编辑器背景对比度
配套设置防缩进“固化”
光看见不够,还得防止你无意中把别人的 Tab 改成 Spaces、或者把混合缩进“保存成定局”。建议在用户设置里一并加上:
-
"translate_tabs_to_spaces": true—— 新增缩进一律转为空格 -
"tab_size": 4—— 统一缩进宽度(按团队规范调整) -
"detect_indentation": false—— 关闭自动探测,避免打开别人含 Tab 的文件时被带偏 -
"trim_trailing_whitespace_on_save": true—— 自动删行尾空格,减少无意义 diff
协作场景下最常被忽略的一点
别人提交的文件里藏了 Tab,你本地没开 draw_white_space 就直接编辑、保存,Sublime 默认会沿用原文件缩进方式(哪怕你设置了 translate_tabs_to_spaces,它也只管新增行)。结果就是:你“修”完的文件,缩进看起来整齐,实则空格和 Tab 混在一起,Git diff 看不出,CI 却报错。所以,不是“需要时再开”,而是“只要写 Python/YAML/配置文件,就必须开着”。










