必须关闭detect_indentation并显式设置tab_size和translate_tabs_to_spaces,否则缩进配置无效;Python文件需在语法特定设置中覆盖语言包默认值。

Tab键还是插入\t?先关掉detect_indentation
按Tab键仍输出制表符\t,不是配置漏了,而是detect_indentation在后台自动接管。它会扫描文件前几行缩进,一旦发现\t或2空格,立刻覆盖你设的tab_size和translate_tabs_to_spaces。右下角显示Tabs: 4或Tab Width: 2就是它在起作用。
必须在Preferences → Settings – User中显式添加:
{
"detect_indentation": false
}
不加这一行,其他所有缩进设置都只是“临时有效”——比如手动转完空格,下次打开又变回\t。
全局设4空格缩进,两个参数缺一不可
tab_size只控制宽度,translate_tabs_to_spaces才决定按Tab键插什么。两者必须同时设置,且translate_tabs_to_spaces必须为布尔值true(不能加引号)。
在用户设置中加入:
{
"tab_size": 4,
"translate_tabs_to_spaces": true
}
-
tab_size是数字,不是字符串;写"4"会失效 -
translate_tabs_to_spaces默认是false,不显式设true,Tab永远插\t - 改完保存即生效,无需重启,但已打开的文件需重新加载语法(
Ctrl+Shift+P→Reload Syntax)
Python文件缩进还是2空格?去改Python.sublime-settings
新建.py文件缩进仍是2空格,是因为Python语言包自带硬编码配置:"tab_size": 2和"translate_tabs_to_spaces": false,优先级高于全局设置。
正确做法:
- 先打开一个
.py文件,确保右下角显示Python Preferences → Settings – Syntax Specific- 在右侧只加这两行(别删原有内容):
{
"tab_size": 4,
"translate_tabs_to_spaces": true
}
保存后,新创建的.py文件(包括Ctrl+N后Save As)就按此规则缩进。已打开的文件需执行Ctrl+Shift+P → Reload Syntax刷新。
旧文件缩进混乱,Convert Indentation灰掉了怎么办
Convert Indentation → Convert to Spaces变灰,说明Sublime检测到混合缩进(部分行用\t、部分用空格),这是保护机制,防止错位。
安全处理步骤:
- 先开启空白字符可视化:
"draw_white_space": "all",让\t显示为→,空格显示为· - 手动删掉开头几行明显混搭的缩进(比如某行开头是→·→)
- 保存后重试转换命令;或临时切语法为
Plain Text(右下角点击 → 选Plain Text),再执行转换 - 转换完成后,务必执行
Indentation: Reindent Lines,否则层级可能未对齐
真正容易被忽略的是detect_indentation的静默覆盖行为——它不报错、不提示,只在你最需要稳定缩进时悄悄把配置架空。


















