必须同时设置 tab_size 和 translate_tabs_to_spaces 为 true 才能用空格替代 Tab;右下角显示 Tabs: 4 是因 detect_indentation 自动启用并覆盖设置,需设为 false 才生效;Python 文件需在语法专属设置中修改且重载语法;混合缩进会导致 Convert Indentation to Spaces 灰显,需先统一缩进;优先级顺序为文件注释>.editorconfig>语法设置>全局设置。

不能只改 tab_size,必须同时设 translate_tabs_to_spaces 为 true,否则按 Tab 键插入的永远是 \t 字符,不是空格。
为什么改了设置右下角还显示 Tabs: 4?
因为 Sublime 默认 detect_indentation 是 true,打开已有文件时会扫描前 200 行——只要发现任意行首有 \t,就强制关掉 translate_tabs_to_spaces,并切回 Tab 模式。这不是 bug,是设计行为。
- 解决方法:在用户设置(
Preferences → Settings右侧)中显式加"detect_indentation": false - 右下角显示
Spaces: 4才算真正生效;Tab Width: 4不代表用了空格,只是视觉宽度 - 如果项目根目录存在
.editorconfig文件且含indent_style = tab,EditorConfig 插件会直接覆盖你的所有设置
Python 文件缩进还是 2?语法专属配置没生效
Python 语言包自带硬编码的 Python.sublime-settings,默认是 "tab_size": 2 和 "translate_tabs_to_spaces": false,全局设置对已打开的 .py 文件基本无效。
- 路径:菜单
Preferences → Package Settings → Python → Settings – Syntax Specific - 只加这两行(别删原有内容):
"tab_size": 4和"translate_tabs_to_spaces": true - 已打开的 Python 文件需手动执行
Ctrl+Shift+P→Reload Syntax才刷新 - 语法名大小写敏感:状态栏显示的是
Python,不是python或Py
Convert Indentation to Spaces 为啥菜单灰掉?
这个命令只在「缩进风格统一」时可用。一旦检测到混合缩进(部分行用 \t,部分用空格),菜单就会变灰,防止误操作破坏结构。
- 先执行
View → Indentation → Detect Indentation看是否识别出一致缩进 - 或临时开启
draw_white_space:"draw_white_space": "all",让\t显示为 →、空格显示为 ·,一眼定位混用位置 - 手动删掉几行开头的
\t后再试,或者用Ctrl+A全选后执行命令(它只处理行首缩进,不影响字符串内的\t) - 想一次处理多个标签页:用
Ctrl+P打开文件列表,Ctrl多选,再对任一标签页执行该命令,所有选中页同步转换
最常被忽略的是优先级链:文件内注释(如 # indent: 2)>项目级 .editorconfig >语法专属设置 > 全局用户设置。任何一环存在,都可能让 translate_tabs_to_spaces 静默失效。


















