atom只读cson格式的config.cson,缩进、引号、层级错一个字符即失效;修改后需手动重载(cmd+alt+r),且插件设置可能覆盖config.cson配置。

config.cson 缩进和语法错一个字符就失效
Atom 不读 JSON,只认 CSON(CoffeeScript Object Notation),它对缩进、引号、层级极其敏感。你改完 config.cson 看似保存成功,但 Atom 实际可能完全忽略——不报错、不提示、配置也不生效。
常见写法错误包括:
-
'core': 'autosave': true—— 正确:两空格缩进,键名不加引号,值用单引号或布尔字面量 -
core: {autosave: true}—— 错误:CSON 不支持大括号和冒号混用,这是 JSON 写法 -
"core": {"autosave": true}—— 错误:引号包裹键名、大括号、冒号,全都不合法 -
core.autosave: true—— 错误:CSON 不支持点号访问,必须靠缩进表达嵌套
验证是否被 Atom 接收的唯一方式:打开设置页(Cmd+, 或 Ctrl+,),左侧选 Core,看 Autosave 开关是否亮起。不亮=没加载,别信文件里写了什么。
未保存文件或只读路径导致 autosave 静默跳过
Atom 的 autosave 有硬性触发条件,不是“有改动就存”,而是“失焦时存”,且会主动绕过两类场景:
- 当前文件是
untitled(未命名、未保存)——哪怕你敲了 100 行,也不会存 - 文件路径为只读(如挂载的 NFS/FTP 目录、
/usr下系统文件、Windows 的受保护目录)——连尝试都不做
所以如果你发现改完代码右上角一直挂着 * 号,先检查右下角语法类型是否显示 Plain Text(说明 Atom 没识别为可编辑文件),再确认文件是否已保存、路径是否可写。不要调 config.cson,先解决这个前置状态。
插件冲突让保存行为被劫持或覆盖
多个插件监听 core:save 事件时,Atom 只执行第一个注册的 handler,其余静默丢弃。最典型的就是 prettier-atom 和 atom-beautify 同时启用:
- 两者都勾了 “Format on Save”,但只有其中一个能真正跑起来
- 你改了
.prettierrc却没效果?大概率是atom-beautify抢先格式化并保存了,prettier 根本没机会介入 - 同理,
linter-eslint若开了Fix errors on save,也会和 prettier-atom 冲突,造成缩进混乱或重复插入分号
解决办法很直接:禁用 atom-beautify,关掉 linter-eslint 的自动修复选项,在 prettier-atom 设置里开启 ESLint Integration 并配好 eslint-config-prettier,把所有格式逻辑收束到一处。
Atom 1.75+ 后 config.cson 修改后不热重载
旧版 Atom 修改 config.cson 后会自动重载,新版(1.75+)改为更保守策略:只在启动时读取一次,运行中修改需手动触发重载。这不是 bug,是设计变更。
你改完配置后没反应,别急着删缓存或重装:
- 按
Cmd+Alt+R(macOS)或Ctrl+Alt+R(Windows/Linux)执行Window: Reload - 不要用
apm restart或关闭窗口再开——它不会强制重读 config - 如果重载后仍无效,打开开发者工具(
View → Developer → Toggle Developer Tools),在 Console 输入atom.config.get('core.autosave'),返回undefined就说明 config 文件根本没被解析,回去查缩进或非法字符
真正容易被忽略的是:Atom 的配置加载顺序是「内置默认 → config.cson → 插件自身设置」,而插件设置页里的开关,有时会覆盖 config.cson 里的同名项。所以看到矛盾行为,优先去插件 Settings 页面确认开关状态,而不是只盯文件。











