Sublime缩进问题根源在于三个设置:需将translate_tabs_to_spaces设为true以使Tab键插入空格;关闭detect_indentation防止自动覆盖缩进配置;针对Python等语言须在Syntax Specific设置中单独配置tab_size和translate_tabs_to_spaces。

Tab键不缩进?先确认translate_tabs_to_spaces是否为true
Sublime 默认不把 Tab 键转为空格,translate_tabs_to_spaces 默认是 false。哪怕你设了 tab_size 为 4,按 Tab 还是插入单个 \t 字符,不是 4 个空格。右下角显示 Tab Width: 4 但旁边写着 Tabs,就是这个原因。必须在用户设置(Preferences → Settings – User)中显式加上:"translate_tabs_to_spaces": true
否则所有缩进配置都只是“看起来对”,实际输入行为完全不匹配。
为什么刚打开文件就缩进错乱?关掉detect_indentation
Sublime 打开文件时会扫描前几行自动推断缩进风格,这个 detect_indentation 默认为 true,优先级高于你的用户设置。比如一个旧 Python 文件开头用了 2 空格,它就会立刻把当前视图的 tab_size 改成 2、translate_tabs_to_spaces 改成 false——你根本看不到提示,只发现 Tab 又插 \t 了。
解决方法只有一条:"detect_indentation": false
加到用户设置里,一劳永逸。不关它,任何手动切换(比如点右下角选 Spaces: 4)都是临时的,关掉再打开文件就失效。
Python/JS 等语言缩进还是不对?去配Syntax Specific设置
全局设置对具体语言基本无效,因为 Python、JavaScript 等语言包自带默认配置(如 Python.sublime-settings 里硬编码了 "tab_size": 2 和 "translate_tabs_to_spaces": false)。你改用户设置没用。
正确做法:
– 打开一个 .py 文件
– Preferences → Settings – Syntax Specific
– 在右侧 JSON 中只写这两行:"tab_size": 4"translate_tabs_to_spaces": true
保存后,已打开的文件要按 Ctrl+Shift+P 输入 Reload Syntax 才生效。文件名拼错(比如写成 Python3.sublime-settings)或语法识别错误(右下角显示 Plain Text)都会导致配置不加载。
缩进快捷键失效?别依赖Tab和Shift+Tab
Tab 和 Shift+Tab 在 Sublime 里本质是补全触发器,不是缩进命令。光标在函数名后、引号内、或有 Emmet 提示时,按 Tab 就弹菜单,不会缩进。
真正可靠的缩进行为靠:Ctrl+](增加一级缩进)Ctrl+[(减少一级缩进)
它们只操作行首空白符,不分析语法、不触发补全、不矫正倍数,选中多行时整块统一处理。但前提是:当前视图已启用 translate_tabs_to_spaces,且没有混用空格和 Tab(否则命令可能灰掉或行为异常)。
最容易被忽略的是 detect_indentation 的静默覆盖机制——它不报错、不弹窗、不改你的配置文件,只是在你打开文件那一瞬间,把你的设置“架空”。关掉它,才能让 tab_size 和 translate_tabs_to_spaces 真正起作用。










