sublime text缩进配置需同时设置"tab_size":4、"translate_tabs_to_spaces":true和"detect_indentation":false,并为python文件单独配置语法专属设置,否则全局设置会被覆盖。

直接改 Preferences → Settings – User 就生效
不需要重启、不用装插件,保存后新打开的文件立刻按你的规则缩进。关键就两行:"tab_size": 4 和 "translate_tabs_to_spaces": true。前者控制按 Tab 键插入几个空格,后者决定是插空格还是制表符 \t。如果只设 tab_size 但 translate_tabs_to_spaces 是 false(默认值之一),按 Tab 还是会塞一个 \t,不是 4 个空格。
必须关掉 detect_indentation 否则白配
Sublime 默认开启 detect_indentation,它会在打开文件时扫描前几行,自动把 tab_size 和 translate_tabs_to_spaces 改成“它猜的值”。比如你打开一个旧 Python 文件,开头用了 2 空格,它就默默把你设的 4 覆盖成 2,状态栏右下角显示 Tab Width: 2,但你完全没动过这个文件——这就是 detect_indentation 在起作用。解决办法是在用户设置里加一行:"detect_indentation": false。不关它,所有缩进配置都可能被临时覆盖。
Python 文件还得单独配 Settings – Syntax Specific
全局设置对 .py 文件基本无效,因为 Python 语言包自带 Python.sublime-settings,里面默认写了 "tab_size": 2 和 "translate_tabs_to_spaces": false。你得手动进 Preferences → Settings – Syntax Specific(注意不是普通 Settings),在弹出的 JSON 里补上这两项:"tab_size": 4、"translate_tabs_to_spaces": true。已打开的 .py 文件不会自动刷新,要按 Ctrl+Shift+P 输入 Reload Syntax 才能生效。
已有文件缩进混乱?别 Ctrl+A 再缩进
混用空格和 Tab 的文件,直接选中全文再按缩进命令容易误伤字符串里的 \t 或对齐注释。正确顺序是:
• 先确认右下角显示 Spaces: 4(不是 Tab)
• 菜单执行 Convert Indentation → To Spaces
• 再执行 Indentation → Reindent
• 如果文件来自 Windows,顺手做一次 Convert Line Endings → Unix,避免 CRLF 干扰缩进判断
最常被忽略的是:语法专属设置优先级高于全局设置,而 detect_indentation 又在文件打开瞬间就劫持了二者。三者不协同,改了也像没改。











