snippets.cson 必须手动创建于 ~/.atom/snippets.cson(macos/linux)或 %userprofile%.atom\snippets.cson(windows),严格遵循 cson 语法,scope 需匹配真实 grammar(如 '.source.js'),prefix 限英文小写+短横线,body 多行用三重单引号,改后需执行 snippets: reload snippets。

snippets.cson 文件必须手动创建并严格遵循 CSON 语法,Atom 不提供图形界面添加入口,改错路径、写错 scope 或漏掉重启/重载,片段就永远不会触发。
snippets.cson 文件放哪?路径错就彻底失效
Atom 只读取唯一位置的 snippets.cson:
- macOS/Linux:~/.atom/snippets.cson(注意 .atom 是隐藏目录)
- Windows:%USERPROFILE%\.atom\snippets.cson(反斜杠要转义,实际输入用 \)
常见错误:
- 把文件建在项目根目录或 ~/.atom/init.coffee 里
- 后缀写成 .json 或 .cson.bak
- 文件名拼错,比如 snippet.cson(少 s)或 snippets.json
scope 写不对,片段等于没写
scope 不是“语言名”,而是 Atom 当前文件的真实 grammar scope,比如:
- JavaScript 文件对应 '.source.js',不是 'javascript' 或 '.js'
- JSX 文件要用 '.source.js.jsx',TSX 是 '.source.tsx'
- HTML 是 '.text.html.basic',不是 '.html'
查当前 scope 的最可靠方法:
- 在目标文件中按 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Win/Linux)
- 输入并执行 Editor: Log Cursor Scope
- 看输出,比如 source.js.jsx → 就写 '.source.js.jsx'
多个 scope 要用数组:
scope: ['source.js', 'source.ts'],不能写成 scope: 'source.js, source.ts'
prefix 和 body 怎么写才不出错
prefix 是你敲完按 Tab 触发的缩写,必须是英文小写+短横线,比如 'cl'、'react-component';中文或空格会失效。
body 是展开后的内容,注意:
- 多行推荐用三重单引号 '''...''' 包裹,避免手写 \n 和缩进混乱
- 占位符用 $1、$2、$0,别写 $01 或 $10(Atom 当作无效 token)
- 默认值写法是 ${1:"default"},不是 $1="default" 或 $1{default}
- $0 表示最终退出位置,别把它放在第一个跳转点——否则一触发就跳出编辑态
改完不生效?重载比重启更快
Atom 不热重载 snippets.cson,但不需要完全重启:
- 按 Cmd+Shift+P / Ctrl+Shift+P → 输入 Snippets: Reload Snippets 回车
- 或快捷键 Cmd+Alt+Ctrl+L(macOS)、Ctrl+Shift+F5(Win/Linux)
如果仍不生效,立刻检查:
- 文件是否保存(CSON 解析失败时 Atom 会静默跳过整个文件)
- CSON 末尾有没有多余逗号(CSON 不允许)
- 同 scope 下是否有同名 prefix 被后定义的覆盖了
真正卡住人的地方往往不是语法多难,而是 scope 名和文件路径差一个点、一个字母,或者 reload 命令没执行——这些细节不验证,写十遍也白搭。










