Atom代码片段必须全部写入唯一的~/.atom/snippets.cson(Windows为%USERPROFILE%.atom\snippets.cson),不支持分散管理;需正确配置scope、prefix及占位符,并手动重载生效。

snippets.cson 文件必须放对位置,且只能有一个
Atom 不支持分散管理 snippet,所有自定义代码片段必须写进唯一的 ~/.atom/snippets.cson(Windows 是 %USERPROFILE%\.atom\snippets.cson)。新建个 my-snippet.cson 放项目里?Atom 根本不读。
- 路径错、文件名错、大小写错(比如写成
Snippets.cson)——全都不生效 - 别和
init.coffee、keymap.cson混在一起,它们各管各的 - 改完必须手动重载:按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Win/Linux),输入Application: Reload(不是关再开)
scope 写错,snippet 就等于没写
snippet 能不能触发,只看当前文件的 grammar scope 是否匹配。写成 '.source.js',但你编辑的是 .jsx 文件,Atom 识别出的 scope 是 source.js.jsx,那它压根不会加载。
- 查当前 scope:按
Cmd+Shift+P→ 输入Editor: Log Cursor Scope,光标处会弹出完整链,比如source.js.jsx meta.function.js - 常用 scope 值:
source.js、source.js.jsx、source.ts、text.html.basic、source.css - 想跨语法生效,用逗号分隔多个 scope:
'.source.js, .source.js.jsx'(注意逗号后有空格) - 别用
*当万能 fallback,长期用会拖慢补全响应
body 里的 $1、$2 不是摆设,但格式一错就失效
$1 是第一个可跳转焦点,$2 是第二个……$0 是最终退出位。但这些占位符要起作用,前提是 body 结构被 Atom 正确解析。
- 多行字符串必须用缩进对齐
body:,顶格写会报错或忽略 tab stop - 换行必须显式写
\n,不能靠回车;或者用三引号"""包裹整段 - 别把
$1误写成$0——否则按 Tab 直接跳出编辑态,光标消失 - 默认值写法是
${1:default},不是$1="default"或${1:"default"}
为什么敲了 prefix + Tab 没反应?先盯住这三点
最常卡在这三个地方:文件右下角语言标识不是目标类型、scope 完全不匹配、snippets.cson 语法非法(比如末尾多逗号、用了 JSON 引号规则)。
- 右下角显示 “Plain Text”?点它 → 手动选 “JavaScript” 或对应语言
- CSON 不是 JSON:键名不加引号,布尔值写
true不写"true",末尾不能有逗号 - 哪怕只改了一个字符,也得保存文件 + 执行
Application: Reload,Atom 不热重载
scope 和 CSON 格式是绝大多数失效问题的根源,不是插件没装好,也不是 Atom 坏了。查 scope、核对路径、重载一次,八成问题当场消失。










