atom缩进宽度需手动修改config.cson并配合.editorconfig才能跨项目一致:必须添加autoindentonpaste: true、tablength: 2(或4)、softtabs: true三行,且.editorconfig中indent_size优先级更高,可被prettier等覆盖。

Atom 缩进宽度不能只靠 GUI 点几下就生效,尤其在新版中 editor.autoIndentOnPaste、editor.tabWidth 等关键项常被隐藏或失效——必须手动改 config.cson,再配合 .editorconfig 才能跨项目、跨设备保持一致。
缩进宽度设在哪?editor.tabWidth 和 indent_size 是两回事
很多人以为改了 Settings 里的 “Tab Length” 就万事大吉,其实 Atom 有两层缩进控制:编辑器级(影响光标移动、自动缩进)和格式化级(影响保存/粘贴/格式化行为)。前者由 editor.tabWidth 控制,后者取决于你用的格式化工具(如 Prettier 或 .editorconfig 中的 indent_size)。
-
editor.tabWidth是 Atom 自身的显示与行为参数,写在~/.atom/config.cson里,值为数字(如2),不带单位 -
indent_size是.editorconfig文件里的字段,用于告诉 prettier-atom、editorconfig 插件等“这个项目该用几个空格”,它优先级更高,会覆盖editor.tabWidth的格式化效果 - 如果同时用了 Prettier,它的
prettier.tabWidth配置又会再盖一层——最终谁生效,取决于你启用了哪个格式化器、是否勾选了 “Use Prettier”
config.cson 必须加的三行,否则粘贴/回车缩进乱套
新版 Atom(1.60+)默认关闭 autoIndentOnPaste,且 GUI 设置里找不到这项。不补上,粘贴代码时缩进偏移、按 Enter 后缩进错位是常态。
- 打开
~/.atom/config.cson,在"*"块内加这三行(注意缩进和冒号后空格): autoIndentOnPaste: true-
tabLength: 2(或你想要的数值,比如 Python 项目常用4) -
softTabs: true(强制用空格而非 Tab,避免混用) - 改完保存,重启 Atom 或执行
Window: Reload(Cmd+Alt+R/Ctrl+Alt+R)
为什么 .editorconfig 比 Atom 设置更可靠?
因为 .editorconfig 是项目级配置,会被 prettier-atom、linter、甚至 VS Code / WebStorm 识别。单靠 Atom 设置,换台电脑、拉别人项目、或同事没装同款插件,规则立刻失效。
- 项目根目录新建
.editorconfig,内容至少包含: root = true-
[*]→indent_style = space、indent_size = 2、end_of_line = lf - 语言特例可追加,比如:
[*.py]→indent_size = 4 - 确保已安装
editorconfig插件(不是可选,是必需),否则 Atom 完全忽略该文件 - 注意:Atom 不支持
.editorconfig里的max_line_length,那是 linter 或 Prettier 管的
常见踩坑:缩进看起来对了,但保存后又变回去
这基本不是 Atom 的问题,而是多个格式化器打架的结果。比如你开了 prettier-atom 的 formatOnSave,又装了 atom-beautify,还启用了 linter-stylelint 的 auto-fix,它们各自读不同的配置源,顺序一乱,就互相覆盖。
- 先禁用所有格式化插件,只留
prettier-atom+editorconfig - 检查
prettier-atom设置页是否勾选了Use Prettier和Format on Save - 确认项目里有没有
prettier.config.js或.prettierrc,它比.editorconfig优先级更高 - 如果用的是 Vue/TS 等复合语法,
language-id必须正确(右下角点开选Vue Component,不是HTML),否则 prettier-atom 根本不触发
真正难的不是设一个数字,而是让 editor.tabWidth、.editorconfig、Prettier 配置、language-id 四者对齐——缺一不可,且任意一个配错,缩进就会在“看起来正常”和“保存后崩坏”之间反复横跳。











