必须同时设置"tab_size": 4和"translate_tabs_to_spaces": true,并关闭"detect_indentation": false,否则仅改tab_size无效;因tab_size只控制显示宽度和转换比例,真正决定Tab键插入内容的是translate_tabs_to_spaces。

Sublime Text 默认按 Tab 键插入的是制表符(\t),不是空格;要让它真正输入 4 个空格,必须同时启用 translate_tabs_to_spaces 并设好 tab_size,缺一不可。
为什么改了 tab_size 还是插 \t?
只设 "tab_size": 4 不起作用——它只控制制表符的显示宽度、自动缩进量和“Convert Indentation”操作的换算比例,不改变 Tab 键行为。真正决定“按 Tab 插什么”的是 translate_tabs_to_spaces:
-
translate_tabs_to_spaces: true→ 按Tab插入空格(数量由tab_size决定) -
translate_tabs_to_spaces: false(默认值之一)→ 按Tab插入\t,哪怕tab_size是 100
如何在用户设置中全局生效?
打开 Preferences → Settings – User,在右侧 JSON 中添加或修改以下三项(推荐全配,避免被覆盖):
{
"tab_size": 4,
"translate_tabs_to_spaces": true,
"detect_indentation": false
}
-
tab_size和translate_tabs_to_spaces是核心,二者必须同时存在且值正确 -
detect_indentation: false是关键预防项:默认为true,Sublime 会在打开文件时读取前几行缩进并临时覆盖你的设置(比如看到开头有 2 空格就切到tab_size: 2) - 保存后立即生效,无需重启;但已打开的文件不会自动重排缩进,需手动处理
为什么 Python 文件还是用 Tab 或 2 空格?
因为语言专属设置(如 Python.sublime-settings)优先级高于用户配置,常见于 Package Settings → Python → Settings 中残留的旧配置:
一款AI工具,主要用于Codex 通用编排:利用 `update_plan` 与后台 PTY 终端并行运行 `codex exec` 工作进程,适合需要提升相关任务效率的用户。
- 检查是否启用了
Preferences → Package Settings → Python → Settings,里面是否有"translate_tabs_to_spaces"或"tab_size"字段 - 如果有,必须删掉或显式设为
true和4,否则会覆盖全局设置 - 同理,项目根目录若有
.editorconfig,Sublime 默认不读——需安装EditorConfig for Sublime Text插件,否则该配置也会静默覆盖你的设定
如何验证和修复已有文件?
状态栏右下角显示的 Tab Width: 4 只反映 tab_size 值,不表示 translate_tabs_to_spaces 已启用;若旁边写着 Spaces: Off,说明实际仍为 false:
- 点击状态栏
Tab Width: X→ 选Convert Indentation to Spaces,再选Set Indent Width: 4 - 快捷方式:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Indentation: Convert to Spaces回车,再输Indentation: Set Indent Width: 4 - 如提示“混合缩进”,先统一现有缩进(比如全选 →
Convert Indentation to Spaces),再设宽度
最易忽略的是 detect_indentation 和语法专属设置的双重覆盖——哪怕用户配置写得再完整,只要这两处没关/没同步,新打开的 .py 或 .js 文件就可能回退到默认行为。









