启用 "draw_white_space": "all" 和 "show_line_endings": true 可显示空格(·)、Tab(→)及状态栏换行符类型;需在用户设置中手动添加并保存,菜单“Show All”仅临时生效且不触发换行符显示。

怎么让空格、Tab 和换行符都显示出来
Sublime Text 默认隐藏所有空白字符,这会让缩进混乱、混用空格/Tab、多余换行等问题“看不见”。要真正看清它们,核心是启用 draw_white_space 并配合 show_line_endings。
-
"draw_white_space": "all":这是关键设置,让每个空格显示为·,每个 Tab 显示为→(注意不是→→连续出现,而是单个符号代表一个 Tab) -
"show_line_endings": true:这个不控制符号显示,但会在编辑器右下角状态栏实时显示当前文件的换行符类型(LF、CRLF或CR),帮你快速识别跨平台格式问题 - 设置位置:打开
Preferences → Settings,在右侧用户设置(User Settings)中添加这两项,保存即生效,无需重启
为什么不能只靠菜单勾选“Show All”
通过 View → Render Whitespace → All 确实能临时开启,但它只作用于当前会话,关掉 Sublime 再重开就失效;而且它无法触发 show_line_endings——换行符类型不会出现在状态栏。
- 菜单操作本质是运行命令
toggle_setting "draw_white_space",但只写入临时 session,不落盘 - 如果你常处理 Python、YAML 或 JSON 配置文件,混用空格和 Tab 会导致语法错误或解析失败,靠临时开关容易遗漏检查
- 团队协作时,统一写进用户设置,等于给所有人设定了“默认可见”的底线,减少格式争议
常见误判场景:· 和 → 看起来像空格,其实不是
开启后你可能会看到一行开头有多个 →,后面跟着几个 ·,误以为“都是空格”。其实:
-
→永远代表一个 Tab 字符(通常等宽 4 或 8 列,取决于tab_size设置) -
·才代表一个 ASCII 空格(U+0020) - 如果某行缩进是
→·→,说明它是 Tab + 空格 + Tab 混用——这在 Python 中直接报IndentationError: unindent does not match any outer indentation level - 想确认某处到底是空格还是 Tab?把光标放在那个符号上,看状态栏左下角:会明确显示
tab或space
顺手加上的实用配置(非必须但强烈建议)
光看见还不够,最好让编辑器“帮你守规矩”。以下三项加进用户设置,能显著减少格式类低级错误:
-
"translate_tabs_to_spaces": true:新建文件或按Tab键时,自动插入空格而非 Tab(配合"tab_size": 4更稳妥) -
"trim_automatic_whitespace": true:保存时自动删掉行尾多余空格,避免 Git diff 里全是+这种无意义变更 -
"detect_indentation": false:关闭自动探测缩进——它有时会误判旧文件的混合缩进,导致新代码缩进错乱;手动设好tab_size和translate_tabs_to_spaces更可靠
这些配置加进去后,· 和 → 就不只是“看得见”,而是真正参与你的编码习惯闭环。最容易被忽略的是 detect_indentation 关闭这件事——很多人调好了显示,却仍被莫名缩进打断节奏,根源往往在这里。











