必须单独配置python.sublime-settings,因python语言包自带硬编码的"translate_tabs_to_spaces": false和"tab_size": 2,优先级高于用户设置;需在syntax specific中添加"tab_size": 4和"translate_tabs_to_spaces": true,并关闭detect_indentation、手动reload syntax,且右下角显示spaces: 4才生效。

必须单独配 Python.sublime-settings,全局设置对 .py 文件基本无效——Python 插件自带的语法专属配置会静默覆盖你的用户设置。
为什么改了用户设置,.py 文件里按 Tab 还是插 \t?
Python 语言包默认自带 Python.sublime-settings,里面硬编码了:"translate_tabs_to_spaces": false 和 "tab_size": 2。这个文件的优先级高于 Preferences → Settings – User,所以你改了全局也没用。
- 打开任意一个
.py文件,右下角状态栏应显示Python - 菜单选 Preferences → Settings – Syntax Specific(不是 Settings)
- 在右侧 JSON 中只添加这两行(不要删原有注释或内容):
"tab_size": 4<br>"translate_tabs_to_spaces": true
- 文件名必须是
Python.sublime-settings(大小写敏感,不是python或Py)
改完没生效?检查 detect_indentation 和重载语法
即使配对了 Python.sublime-settings,如果文件已打开,Sublime 不会自动刷新缩进行为——它仍按旧规则响应 Tab 键。
- 已打开的
.py文件需手动触发:Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Reload Syntax回车 - 确保全局用户设置中也加了
"detect_indentation": false,否则打开旧文件时,Sublime 会扫描前 200 行,只要发现\t就强制切回 Tab 模式,覆盖你的true - 状态栏右下角要显示
Spaces: 4才算真正生效;显示Tab Width: 4旁边是Tabs,说明还在用制表符
Convert Indentation to Spaces 菜单灰掉了怎么办?
该命令只对“纯 Tab 缩进”或“纯空格缩进”的文件可用。一旦检测到混合缩进(比如某行开头是 \t + 空格),它就会禁用,防止错位。
- 先开空白字符可视化:
View → Whitespaces → Show Whitespaces,让\t显示为→,空格为· - 手动删掉前几行明显混搭的缩进(例如
→·→开头的行) - 或者临时把语法切为
Plain Text(右下角点击 → 选 Plain Text),再执行Convert Indentation to Spaces - 转完后务必补一句:
Ctrl+Shift+P→ 输入Indentation: Reindent Lines,否则缩进层级可能没对齐
最易被忽略的是优先级链:文件内注释(如 # indent: 2) > 项目根目录的 .editorconfig > 语法专属设置 > 全局设置。哪怕你配全了,只要项目里有 .editorconfig 且含 indent_style = tab,而你又装了 EditorConfig 插件,那所有设置都会被绕过。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











