必须同时设置"tab_size":4、"translate_tabs_to_spaces":true和"detect_indentation":false,缺一不可;否则tab键仍插入\t或被自动检测覆盖。

按 Tab 键插入空格,不是改一个 tab_size 就能搞定的事——必须同时启用 translate_tabs_to_spaces 并禁用 detect_indentation,否则编辑器会“自作主张”覆盖你的设置。
为什么改了 tab_size 还是插出 \t?
因为 tab_size 只控制制表符显示宽度和缩进换算比例,不决定按键行为。真正开关是 translate_tabs_to_spaces:
-
translate_tabs_to_spaces: true→ 按 Tab 插入空格(数量由tab_size决定) -
translate_tabs_to_spaces: false(默认之一)→ 按 Tab 插入\t,哪怕tab_size是 100 -
detect_indentation: true(默认)→ 打开文件时读前几行缩进,自动覆盖你设的tab_size和translate_tabs_to_spaces
用户设置里必须配齐这三项
打开 Preferences → Settings – User,右侧 JSON 中确保包含:
{
"tab_size": 4,
"translate_tabs_to_spaces": true,
"detect_indentation": false
}
缺一不可。其中 detect_indentation: false 是防覆盖的关键项;tab_size 值要匹配项目规范(如 Python 用 4,YAML 用 2);保存后新文件立即生效,无需重启。
为什么 Python 文件还是用 Tab 或 2 空格?
语言专属设置优先级高于用户配置,常见于:
-
Package Settings → Python → Settings 里残留
"translate_tabs_to_spaces": false或"tab_size": 2 - 项目根目录有
.editorconfig,且已安装 EditorConfig 插件,其中indent_style = tab会直接压倒 Sublime 设置 - 当前文件语法识别错误(右下角显示 Plain Text 而非 Python),导致没加载对应规则
已有文件怎么批量转为空格?
别用全局查找替换,容易误伤字符串或注释里的 \t。正确做法是:
- 单个文件:菜单 View → Indentation → Convert Indentation to Spaces,或快捷键
Ctrl+Shift+P(Win/Linux)/Cmd+Shift+P(Mac),输入并执行Convert Indentation to Spaces - 多个文件:用
Ctrl+P打开文件列表,按住Ctrl(或Cmd)多选,再对任一文件执行上述命令,所有选中文件同步转换 - 转换后右下角应显示
Spaces: 4,不是Tab Width: 4
注意:这个操作只处理行首缩进,不碰行中内容;已打开的文件不会因配置变更自动重排,必须手动触发一次。











