新建.py文件默认缩进为2空格而非4空格,因sublime对新建文件先按plain text处理、仅认全局设置,而.py文件会立即切换至python语言包自带的硬编码配置("tab_size": 2, "translate_tabs_to_spaces": false);必须在preferences → settings – syntax specific中为python单独配置"tab_size": 4和"translate_tabs_to_spaces": true,并在用户全局设置中设"detect_indentation": false,新创建的.py文件才能稳定使用4空格缩进。

新建文件的缩进不会自动继承你想要的语言规则,除非你明确告诉 Sublime “这是什么语法”,并为它配好专属缩进参数。光改全局设置没用,Python 新建 .py 文件照样是 2 空格 + Tab,JavaScript 新建 .js 文件默认也不一定是 2 空格。
新建文件默认用什么缩进?
Sublime 对新建文件(比如 Ctrl+N)不绑定任何语法,初始状态是 Plain Text,此时它只认用户全局设置里的 tab_size 和 translate_tabs_to_spaces。但一旦你手动设了语法(比如保存为 .py 或点右下角选 Python),它立刻切换成对应语法的专属配置——而这个配置若没建,就退回到语言包自带的硬编码值(例如 Python 默认 "tab_size": 2)。
怎么让新建的 .py 文件一打开就是 4 空格?
必须创建并编辑 Python.sublime-settings,不能只动全局设置:
- 先新建一个
.py文件(或打开任意.py),确保右下角显示Python - 菜单 →
Preferences → Settings – Syntax Specific(注意不是普通Settings) - 在右侧 JSON 中只添加这两行(别删原有内容):
{ "tab_size": 4, "translate_tabs_to_spaces": true } - 保存后,**新创建的 .py 文件**(包括 Ctrl+N 后立刻 Save As 为
.py)就会按这规则缩进
为什么新建 .js 文件还是顶格、不自动缩进?
常见原因不是缩进大小错,而是 auto_indent 没开,或语法识别失败:
- 确认用户设置里有
"auto_indent": true(它控制回车后是否对齐上一行) - 新建文件后,右下角若显示
Plain Text,点它 → 选JavaScript;或快捷键Ctrl+Shift+P→ 输入Set Syntax: JavaScript - 确保
JavaScript.sublime-settings存在且含"tab_size": 2和"translate_tabs_to_spaces": true -
auto_indent只在语法正确 + 缩进参数生效时才工作;如果右下角是Plain Text,哪怕你设了tab_size,回车也顶格
新建文件缩进生效前最容易漏的一步
所有语法专属配置(Python.sublime-settings、JSON.sublime-settings 等)都依赖 "detect_indentation": false 关闭自动探测——否则新建文件第一次保存时,Sublime 会扫描空文件或模板内容,误判缩进风格并覆盖你的设定。这个开关必须显式加在用户全局设置(Preferences → Settings – User)里,而不是只放在语法配置中。











