prefix必须是英文小写+短横线,不能含空格或中文;scope不匹配则prefix无效;body占位符须连续编号且$0仅作末位;snippets.cson路径须正确、文件名严格为snippets.cson,并手动重载生效。

prefix 必须是英文小写+短横线,不能含空格或中文
Atom 对 prefix 的校验非常严格:只接受 a–z、0–9 和短横线 -,且必须以字母开头。写成 console.log、my snippet 或 日志 都会直接失效——输入后按 Tab 无任何反应,Atom 也不会报错。
常见可用写法:cl(对应 console.log($1))、react-component、for-of;禁用写法:consoleLog(驼峰不识别)、log!(符号非法)、123start(不能数字开头)。
scope 不匹配时 prefix 再对也触发不了
prefix 是“钥匙”,但真正决定它能不能开门的,是当前文件的 grammar scope。比如你在 .jsx 文件里写了 scope: '.source.js',哪怕 prefix: 'cl' 完全合法,也永远不会响应 Tab。
查当前真实 scope 的唯一可靠方式:
– 按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS)
– 输入并执行 Editor: Log Cursor Scope
– 看控制台输出,例如 source.js.jsx meta.function.js → 就该写 scope: '.source.js.jsx'
多个 scope 要用数组或逗号分隔字符串,注意格式:
✅ scope: ['.source.js', '.source.js.jsx']
✅ scope: 'source.js, source.js.jsx'(逗号后必须空一格)
❌ scope: 'source.js|source.jsx'(竖线无效)
❌ scope: 'javascript'(不是语言名,是 Atom 内部 scope)
body 里占位符编号错乱会让 prefix 彻底“失能”
只要 body 中的 $1、$2 出现断号(如只有 $1 和 $3)、重复(两个 $1),或误用 $0 当首个跳转位,整个 snippet 就会被 Atom 静默忽略——你敲对 prefix、Tab 也按了,就是没展开。
正确要点:
– 编号必须从 $1 开始连续递增
– $0 只出现一次,表示最终光标位置(常放末尾)
– 默认值写法是 ${1:"default"},不是 $1="default" 或 ${1:default}(缺引号会失效)
– 多行 body 强烈建议用三重单引号 ''' 包裹,避免缩进错位或换行符丢失
改完 snippets.cson 后不重载,prefix 就等于没写
Atom 不监听 snippets.cson 文件变化,保存文件 ≠ 生效。必须手动重载配置,否则所有新 prefix 都不会注册进补全系统。
推荐操作:
– 按 Ctrl+Shift+P → 输入 Snippets: Reload Snippets 回车
– 或快捷键 Ctrl+Shift+F5(Win/Linux)、Cmd+Alt+Ctrl+L(macOS)
– 若仍不生效,立刻打开开发者工具(View → Developer → Toggle Developer Tools),看 Console 是否有 Failed to load snippets 报错 —— 大概率是 CSON 语法错误(比如末尾多逗号、引号不匹配、缩进混用 tab 和空格)
路径和文件名错一个字符,prefix 就彻底消失:
– 正确路径:Windows 是 %USERPROFILE%\.atom\snippets.cson,macOS/Linux 是 ~/.atom/snippets.cson
– 文件名必须是 snippets.cson(不能是 snippet.cson、snippets.json 或 Snippets.cson)
– .atom 是隐藏目录,别漏掉开头的点号











