必须在Preferences → Settings–User中添加"draw_white_space": "all"才能显示Tab(→)和空格(·),换行符需额外设"show_line_endings": true;右下角状态栏的Spaces: N或Indentation: Mixed才是缩进真实状态。

如何让 Sublime 显示 Tab 和空格字符
不打开空白字符可视化,你根本不知道当前缩进是 \t 还是空格,更没法判断是否混用。Sublime 默认隐藏这些符号,必须手动开启。
最直接的方式是启用 draw_white_space:打开 Preferences → Settings(用户设置),在右侧 JSON 中添加或修改这一行:
"draw_white_space": "all"
保存后,所有空白符会立即显示:\t 变成 →,普通空格变成 ·,换行符显示为 ¶。这样一眼就能看出某行开头是 →、··→ 还是纯 ····。
- 如果只关心缩进部分,可改用
"draw_white_space": "selection",仅高亮选区内的空白符 - 右下角状态栏若显示
Indentation: Mixed,说明已检测到混用,此时很多缩进命令会灰掉 - 临时查看可用快捷键:
Ctrl+Shift+P输入Set Syntax: Plain Text,再开白空格——避免语法插件干扰渲染
右下角状态栏里哪些信息真正反映缩进行为
状态栏不是装饰,它是当前视图真实缩进模式的唯一可信来源。重点盯紧三个字段:
-
Tab Width: N:只控制\t的显示宽度,和按Tab键输出什么无关 -
Spaces: N或Spaces: Off:这才是关键——只有出现Spaces: 4才表示translate_tabs_to_spaces生效,按Tab会插入 4 个空格 -
Indentation: Mixed:表示文件中同时存在\t和空格缩进,Sublime 主动禁用自动转换以防错位
常见误判:Tab Width: 4 旁边写着 Tabs,就说明 translate_tabs_to_spaces 是 false,哪怕你在设置里写了 true,也一定被更高优先级配置覆盖了。
为什么 Convert Indentation 命令经常灰掉
菜单里 Convert Indentation → To Spaces 灰掉,不是功能损坏,而是 Sublime 检测到风险后主动拒绝执行——它怕把字符串里的 \t 或对齐用的空格一起干掉,导致语法错误。
触发条件很明确:Indentation: Mixed 状态,或文件被识别为非标准缩进结构(比如首几行全是注释、无有效缩进行)。
- 先确认语法识别是否正确:右下角点击语法名(如
Python),手动切到Plain Text再试一次命令 - 检查项目根目录是否存在
.editorconfig,其中indent_style = tab会强制锁死缩进行为,EditorConfig 插件优先级高于所有 Sublime 设置 - 手动清理前几行异常缩进:开启
draw_white_space后,删掉明显混搭的行首→·→类缩进,保存后再重试
如何验证 detect_indentation 是否正在干扰你的设置
detect_indentation 默认为 true,但它从不通知你它已经偷偷改了设置。最可靠的验证方式是绕过它:
- 关闭当前文件,按
Ctrl+Shift+P输入Set Syntax: Plain Text,再新建一个空白文件,按Tab—— 如果这时出的是空格,说明问题出在语法专属设置或.editorconfig - 临时重命名项目根目录下的
.editorconfig,重新打开文件,看右下角是否终于出现Spaces: 4 - 手动触发重检测:
Ctrl+Shift+P输入detect_indentation回车,它不会改代码,但会强制刷新当前视图的缩进推断结果
真正稳定的做法不是依赖它“猜对”,而是在用户设置里加 "detect_indentation": false,再显式写死 "tab_size": 4 和 "translate_tabs_to_spaces": true,最后为每种语言单独配 Settings – Syntax Specific。否则每次打开旧文件,都可能回到“我以为设好了,其实没生效”的状态。


















