绝大多数项目禁止用真实tab缩进,sublime默认将tab转为空格以规避协作问题;如需真实tab,须在用户配置中设"translate_tabs_to_spaces": false、"tab_size": 4、"detect_indentation": false,并排查语法/项目/插件三级覆盖。

Tab键还在插空格?先确认你真需要真实\t
绝大多数项目(Python/JS/TS/Vue)明确禁止用真实 Tab 缩进,因为 Git diff、CI 校验、跨编辑器协作时极易出错。Sublime 默认开启 translate_tabs_to_spaces,本质是帮你规避问题。如果你确实需要按 Tab 就插入原生 \t(比如写 Makefile、shell 脚本或对接老系统),必须显式关掉这个开关——但要清楚代价:后续自动缩进、代码折叠、格式化插件都可能异常。
关掉 translate_tabs_to_spaces 是核心动作
打开 Preferences → Settings – User,确保用户配置里有这三行:
{
"translate_tabs_to_spaces": false,
"tab_size": 4,
"detect_indentation": false
}
-
translate_tabs_to_spaces必须设为布尔值false(别加引号,别写成"false"或0) -
tab_size保留(如4),它只影响显示宽度和部分插件行为,不改变输入内容 -
detect_indentation必须关掉,否则打开含空格缩进的文件时,Sublime 会自动把你刚设的false覆盖成true
检查三处更高优先级的覆盖项
改完设置后按 Tab 还是插空格?不是 Bug,而是被以下任一配置静默覆盖了:
- 当前文件语法专属设置:打开一个
.py文件 →Preferences → Settings – Syntax Specific→ 检查是否有"translate_tabs_to_spaces": true(Python 语言包默认常带这个) - 项目级配置:项目根目录若有
.sublime-project文件,里面可能写了全局覆盖项 - 插件干扰:EditorConfig 插件会强制读取
.editorconfig,哪怕你本地关了translate_tabs_to_spaces,它也可能重开
临时切换当前文件缩进类型(不改配置)
右下角状态栏点击 Tab Width: 4 或 Spaces: 4 弹出菜单后:
-
Convert Indentation to Tabs:把当前文件已有空格缩进批量转成\t -
Indent Using Tabs:让后续 Tab 键输入真实 Tab(但不改变translate_tabs_to_spaces全局值) - 再点一次
Tab Width: 4→ 选Tab Width: 4:仅调整显示宽度,不影响输入类型
注意:这些操作只对当前视图生效,关掉再打开文件就失效——真要持久化,必须动配置。最容易被忽略的是,use_tab_stops 虽然存在,但它在现代 Sublime 中已基本无实际影响,不必刻意设置。











