永久修改Sublime Text Tab长度需关闭detect_indentation并设tab_size:在Settings–User中添加{"tab_size":2,"translate_tabs_to_spaces":true,"detect_indentation":false},否则自动检测会覆盖设置。

Sublime Text 默认的 Tab 宽度是 4,但这个值不是写死的,而是由当前文件的 tab_size 设置和是否启用 detect_indentation 共同决定的——改错地方根本不会生效。
如何永久修改当前文件的 Tab 长度
这是最常被误操作的地方:很多人在 Preferences → Settings 里改了 "tab_size": 2,结果 Python 文件还是缩进 4 格。因为 Sublime 会优先信任文件自身的缩进特征(比如已存在的空格/Tab 模式)。
- 先确保右下角状态栏显示的是「Tab Width: 4」而不是「Indentation: Detect Indentation」
- 点击右下角「Tab Width: 4」→ 选择「Convert Indentation to Spaces」(如果当前是 Tab)或「Detect Indentation」(关闭自动检测)
- 再点击一次「Tab Width: 4」→ 选具体数值(如 2),此时会立即重绘所有缩进
- 该设置只对当前视图生效;关闭再打开文件,可能又被重置
让修改对所有新文件生效(用户级默认配置)
打开 Preferences → Settings – User,添加或修改以下字段:
{
"tab_size": 2,
"translate_tabs_to_spaces": true,
"detect_indentation": false
}
注意三点:
-
"detect_indentation": false必须显式关闭,否则打开任何已有文件时,Sublime 会忽略tab_size并根据首行缩进自动覆盖 -
"translate_tabs_to_spaces": true表示按 Tab 键插入空格而非 Tab 字符,这是现代编辑器的通用做法 - 如果项目中混用不同缩进(如 JS 用 2、Python 用 4),建议改用
Project Settings或.sublime-project文件单独配置
为什么改了设置却没反应?常见陷阱
典型现象:改完 Settings – User,新建文件仍是 Tab Width: 4,或保存后缩进又变回 4。
- 文件已存在且含缩进内容 → Sublime 启动时触发
detect_indentation,覆盖用户设置 - 插件干扰(如
EditorConfig或SublimeLinter)→ 检查Preferences → Package Settings是否有冲突项 - 语法类型影响行为 → 某些语法(如 Python)会强制使用 PEP 8 推荐的 4 空格,需额外在
Settings – Syntax Specific中覆盖 - 按
Tab键仍插入 Tab 字符 → 确认"translate_tabs_to_spaces"是true,且未被语法专属设置覆盖
真正起效的关键不在“改哪里”,而在“关掉自动检测”和“确认当前视图的缩进模式是否被锁定”。很多问题本质是 Sublime 的智能推断和用户意图发生了冲突,而不是设置本身无效。










