snippets.cson必须放在用户级Atom配置目录(Windows为%USERPROFILE%\.atom\snippets.cson,macOS/Linux为~/.atom/snippets.cson),且scope、编号、重载缺一不可。

snippets.cson 文件必须放对路径
Atom 不会自动扫描你随便建的配置文件,snippets.cson 必须放在用户级 Atom 配置目录下,否则完全不加载。Windows 是 %USERPROFILE%\.atom\snippets.cson,macOS/Linux 是 ~/.atom/snippets.cson。放错位置(比如丢进项目根目录、或塞进插件文件夹)等于没写。
常见错误包括:
- 新建了
snippets.cson但放在桌面或文档里,Atom 根本看不到 - 路径名拼错,比如写成
.atom/snippets.json(后缀错)或.atom/snippets.cson.bak(多后缀) - 用中文路径或含空格路径,某些旧版 Atom 读取失败(尤其 Windows)
scope 写错就等于没写
补全片段靠 scope 触发,不是靠文件名或内容匹配。JavaScript 的正确 scope 是 source.js,不是 javascript、.js 或 source.jsx。Vue 单文件组件的 template 区域是 text.html.vue,不是 source.vue。
查当前 scope 最可靠的方式:Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入 Editor: Log Cursor Scope,看控制台输出的完整链,比如 source.js.jsx meta.function.js —— 这说明你在 JSX 函数体内,scope 应该写 source.js.jsx,只写 source.js 就不生效。
多个 scope 要用逗号加空格分隔:"source.js, source.js.jsx" ✅;"source.js,source.js.jsx" ❌;不能用 | 或 or。
body 里的 $1/$2 编号必须连续且唯一
Atom 的 tab stop 跳转依赖编号顺序。写 console.log(${1:obj}); 后按 Tab,光标停在 obj 处;再按一次跳到末尾。但如果 body 是 fetch(${2:url}, ${4:options}),中间缺了 $3,第二次 Tab 就直接跳到行尾,后续占位符全部失效。
注意事项:
- 所有
$1、$2… 必须从 1 开始,严格递增,不能跳号、不能重复 - 结尾可加
$0表示最终光标位置(非必需,但推荐) - 多行内容用三重单引号包裹:
'''if (${1:condition}) {\n ${2}\n}'''
改完不生效?别忘了重载窗口
snippets.cson 修改后 Atom 不会热更新,必须手动重载。快捷键是 Ctrl+Alt+R(Win/Linux)或 Cmd+Alt+R(macOS)。只保存文件、不重载,改动不会生效。
另外注意:
- 语法识别必须匹配:右下角显示
JavaScript (JSX),scope 就得写source.js.jsx,哪怕你只想要基础 JS 补全 - 临时调试可用
*作为 scope,但长期启用会拖慢补全响应速度,仅限排查时用 - 如果补全仍不触发,打开 DevTools(
Ctrl+Shift+I)看 Console 是否报错 —— 比如 CSON 语法错误(少逗号、引号不闭合)会导致整个 snippets 文件被忽略

















