sublime 自带 auto_indent 无需插件,但需满足三条件:用户设置中启用 auto_indent、右下角语法名匹配、禁用 detect_indentation 并协同配置 tab_size 和 translate_tabs_to_spaces;python 文件须单独配置 python.sublime-settings。

Sublime 本身不依赖插件实现“自动缩进”——它自带 auto_indent,但必须配对生效;所谓“安装插件才能自动缩进”是常见误解。真正需要插件的,是“自动排版”(如重排 HTML 结构、按 PEP8 格式化 Python)。
为什么装了插件缩进还是不对?
很多人装了 JsPrettier 或 sublime_black 后发现按回车仍不缩进,或缩进宽度不是 4,问题往往不在插件本身,而在底层缩进配置被覆盖:
-
detect_indentation默认为true,打开文件瞬间就扫描前几行,把你的tab_size和translate_tabs_to_spaces强行改掉 - Python 文件走的是
Python.sublime-settings,里面硬编码了"tab_size": 2和"translate_tabs_to_spaces": false,全局设置压根不生效 - 右下角显示
Plain Text却在写 Vue 的<script></script>,auto_indent直接静默失效
auto_indent 生效的三个硬性条件
缺一不可,否则回车永远顶格:
-
"auto_indent": true必须显式出现在用户设置(Preferences → Settings – User)中,不能被注释或设为false - 右下角语法名必须匹配实际语言(如写 Python 就得是
Python,不是Plain Text或JavaScript) -
"tab_size"和"translate_tabs_to_spaces"必须协同生效,且"detect_indentation": false已禁用,否则它们只是摆设
Python 文件缩进必须单独配 Python.sublime-settings
Sublime 自带的 Python 语法包会无视全局设置,强制用 2 空格 + Tab 字符。要改成 4 空格,必须手动创建专属配置:
- 打开一个
.py文件 → 点右下角Python→ 选Open Syntax Specific Preferences - 在弹出的文件中只写这两行:
{"tab_size": 4, "translate_tabs_to_spaces": true} - 已打开的文件需按
Ctrl+Shift+P输入Reload Syntax才刷新生效
已有代码缩进混乱,别 Ctrl+A + Tab
混用空格和 Tab 的文件,直接全选再按 Ctrl+] 会插入真实 Tab 字符,Python 直接报 IndentationError:
- 先确认右下角状态栏显示
Spaces: 4(不是Tab) - 菜单执行
Convert Indentation → To Spaces:只处理行首缩进,不动字符串里的\t - 再执行
Indentation → Reindent:按当前语法结构(如def、if)重新计算层级 - 若状态栏提示
Mixed indentation detected,说明检测到混用,必须手动清理开头几行再重试
最常被忽略的是:语法专属设置(如 Python.sublime-settings)优先级高于全局设置,而 detect_indentation 在文件打开瞬间就劫持二者——它不改配置文件,也不提示,你完全感知不到。











