Sublime Text 缩进需同时关闭 detect_indentation、设置正确 tab_size、启用 translate_tabs_to_spaces,三者缺一不可;否则 Tab 键仍插入 \t 或缩进回退。

Sublime Text 的 Tab 缩进不会“自动生效”,必须同时关掉 detect_indentation、设对 tab_size、打开 translate_tabs_to_spaces,三者缺一不可;否则按 Tab 键仍插 \t,或新开文件立刻回退到 2 空格。
为什么改了 tab_size 还是插 \t?
因为 translate_tabs_to_spaces 默认是 false,它不控制缩进宽度,只决定按键行为——没开它,tab_size 再大也只影响显示,不改变输入。右下角显示 Tabs: 4 就是典型信号。
-
translate_tabs_to_spaces必须设为true(布尔值,不是字符串) - 这个设置会被语法专属配置覆盖,比如打开
.py文件时,Python.sublime-settings里若写的是"translate_tabs_to_spaces": false,全局设置就无效 - EditorConfig 插件若启用且项目有
.editorconfig文件,其中的indent_style = tab会直接劫持缩进逻辑,优先级更高
怎么让 Python 文件稳定用 4 空格?
不能只动全局设置。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,不要删原有内容 - 已打开的文件需手动
Ctrl+Shift+P→ 输入Reload Syntax才刷新;新创建的.py文件立即生效
已有文件缩进混乱,Convert Indentation 灰掉了怎么办?
灰掉 = Sublime 检测到混合缩进(Indentation: Mixed),这是保护机制,不是 bug。直接搜替换 \t 或全选缩进会误伤字符串和注释里的制表符。
- 先在用户设置中加
"draw_white_space": "all",让\t显示为→、空格为·,一眼识别混用位置 - 手动删掉前几行明显异常的开头缩进(如
→·→这种组合),保存后再试Convert Indentation to Spaces - 或临时把语法切为
Plain Text(右下角点击 → 选 Plain Text),再执行转换,避开语法插件干扰 - 转换完务必再执行
Indentation → Reindent,否则结构层级可能未对齐
新建文件还是顶格、不自动缩进?
新建文件(Ctrl+N)初始是 Plain Text 语法,只认全局设置;一旦你保存为 .py 或手动切语法,就立刻加载对应语言包的专属配置——如果没配好,就会回落到语言包默认值。
- 确认用户设置里有
"auto_indent": true(控制回车后是否对齐上一行) - 新建文件后,右下角若显示
Plain Text,必须点它 → 选目标语法(如JavaScript),或Ctrl+Shift+P→Set Syntax: JavaScript -
auto_indent只在语法正确 +tab_size和translate_tabs_to_spaces生效时才工作 - 所有语法专属设置都依赖
"detect_indentation": false,否则新建文件第一次保存时,Sublime 可能扫描空内容或模板,误判缩进
真正容易被忽略的是 detect_indentation 的“静默覆盖”:它不报错、不提示,只是默默把你的配置架空。关掉它,才能让其他缩进参数真正落地。











