Tab键插入\t而非空格是因为translate_tabs_to_spaces默认为false;需在用户设置中设为true并配tab_size为4;Python文件需语法专属设置且关闭detect_indentation才能生效。

Tab键为什么还是插入\t,不是空格?
因为translate_tabs_to_spaces默认是false,不显式设为true,tab_size再怎么配也只是控制显示宽度,和按键行为无关。右下角显示Tab Width: 4但旁边写着Tabs,就说明它还在插制表符。
- 必须在
Preferences → Settings – User中加:"translate_tabs_to_spaces": true和"tab_size": 4 -
tab_size是数字,别写成"4";translate_tabs_to_spaces是布尔值,别加引号 - 改完保存即生效,不用重启,但已打开的文件需手动按
Ctrl+Shift+P→输入Reload Syntax刷新才应用新规则
Python文件缩进还是2空格?语法专属设置没生效
全局设置对.py文件基本无效——Python语言包自带Python.sublime-settings,硬编码了"tab_size": 2和"translate_tabs_to_spaces": false,优先级高于用户设置。
- 先打开一个
.py文件,确保右下角显示Python - 菜单选
Preferences → Settings – Syntax Specific,在右侧 JSON 中只添加两行:"tab_size": 4和"translate_tabs_to_spaces": true - 不要删原有内容;文件名必须严格匹配,写成
Python3.sublime-settings或python.sublime-settings都不生效
新建.py文件一打开还是2空格?detect_indentation在覆盖
Sublime默认开启detect_indentation,新建.py文件后,它会扫描前几行(哪怕文件为空或只有注释),强行把当前视图的缩进规则改成“猜”的值,导致你配的tab_size和translate_tabs_to_spaces被架空。
- 在
Preferences → Settings – User中必须加:"detect_indentation": false - 这个开关不关,所有缩进配置都可能被临时劫持;它不报错、不提示,只是默默覆盖
- 关掉后,新创建的
.py文件(包括Ctrl+N后立刻Save As)才会稳定用4空格
Convert Indentation to Spaces菜单灰掉了?混合缩进被保护
菜单变灰不是功能损坏,而是Sublime检测到文件存在混用(部分行用\t、部分用空格),主动拒绝自动转换,防止错位破坏结构。
- 先开空白符可视化:
View → Whitespaces → Show Whitespaces,让\t显示为→,空格为· - 手动删掉前几行明显混搭的缩进(比如某行开头是→·→),保存后再试命令
- 或临时切语法为
Plain Text(右下角点击→选),再执行转换,避免语法插件干扰识别 - 转完务必执行
Indentation → Reindent,否则缩进层级可能未对齐
detect_indentation的静默覆盖行为——它不会改你的配置文件,也不会弹窗提醒,只在你打开文件的瞬间接管缩进逻辑。关不掉它,其他所有设置都只是纸面规则。


















