Atom中tabLength单独设置无效,必须同时配置softTabs: true、preferSoftTabs: true且三者置于"*":作用域下;autoIndentOnPaste需手动启用并依赖softTabs;language-python和.editorconfig会覆盖全局缩进;已打开文件需重启或全选后Ctrl+Alt+L刷新缩进。

tabLength 和 softTabs 必须一起设,否则按 Tab 还是插 \t
Atom 里 tabLength 单独设成 4 没用,只要 softTabs: false,按 Tab 键插入的永远是硬制表符 \t,不是空格。Git diff、ESLint、Prettier 全会把它当异常处理。
真正生效的组合只有:tabLength: 4 + softTabs: true + preferSoftTabs: true。缺一不可。
-
softTabs: true控制 Tab 键输入行为(插空格而非\t) -
preferSoftTabs: true让 Atom 在检测到混合缩进时仍坚持用空格,不“随大流”迁就已有\t - 三者必须写在
~/.atom/config.cson的"*":作用域下,格式要严格:冒号后有空格,整行用空格缩进
Auto Indent On Paste 不开,粘贴代码就顶格
只开 autoIndent(回车缩进),关着 autoIndentOnPaste,Ctrl+V 粘贴的代码会完全保留原始缩进——哪怕你当前文件是 4 空格,粘进来可能是 0 缩进或 2 空格,ESLint 直接报 expected indentation of 4 spaces but found 0。
新版 Atom GUI 常不显示这个开关,必须手动加到 config.cson:
"*":
editor:
autoIndentOnPaste: true
注意:autoIndentOnPaste 依赖 softTabs: true 才能避免混入 \t;如果粘贴前光标卡在第 6 列,Atom 会以该列为基准做相对缩进,导致整体偏移。
language-python 或 .editorconfig 会覆盖全局 tabLength
新建 .py 文件后缩进还是 2 格?大概率是 language-python 插件在接管。它自带 tabLength: 2,优先级高于全局设置。
解决办法:
- 进
Packages → language-python → Settings,清空其自定义的Tab Length - 项目根目录若有
.editorconfig,检查是否含indent_size = 2或indent_style = tab;建议统一改为indent_size = 4并确认editorconfig插件已启用 - 右下角状态栏显示
Tab Length: 4 Tab而非Spaces,说明文件开头已有\t,Atom 自动 fallback —— 先执行whitespace:convert-tabs-to-spaces清理
改完配置,已打开的文件不会自动重载
这是最容易被忽略的一点:Atom 不会对已加载的 buffer 热重载缩进策略。哪怕你改完 config.cson 并保存,已打开的文件仍沿用旧规则。
必须做以下之一才生效:
- 完全退出 Atom 再重开(最彻底)
- 手动触发一次
editor:auto-indent(快捷键Ctrl+Alt+L/Cmd+Alt+L),但需先全选(Ctrl+A)才能作用于整文件 - 删一行再 Undo,或粘贴一次空行,也能强制刷新当前 buffer 的缩进逻辑
临时切换当前文件缩进模式可点击右下角 Tab 或 Spaces 文字,但它不保存,也不影响其他文件。

















