snippets.cson文件必须放在~/.atom/snippets.cson(macOS/Linux)或%USERPROFILE%.atom\snippets.cson(Windows),路径错一个字符即失效,且仅读取该唯一路径。

Atom 的代码片段不会自动生效,必须手动创建 snippets.cson 文件、写对 scope、保存后执行重载命令——漏掉任一环节,输入 prefix + Tab 就完全没反应。
snippets.cson 文件必须放在哪?路径错一个字符就失效
Atom 只读取唯一路径下的 snippets.cson,其他位置写的全被忽略:
- macOS/Linux:
~/.atom/snippets.cson(注意.atom是隐藏目录,开头的点不能丢) - Windows:
%USERPROFILE%\.atom\snippets.cson(反斜杠需转义,实际路径中用\或统一改用正斜杠/)
常见错误包括:
- 把文件建在项目根目录、
~/.atom/init.coffee或插件目录下 - 文件名拼错:比如
snippet.cson(少 s)、snippets.json(后缀错) - 路径漏掉点号,写成
atom/snippets.cson或C:\Users\Name\atom\snippets.cson
scope 怎么写才匹配当前文件类型?靠猜等于白写
scope 不是语言名,而是 Atom 实际识别的 grammar scope,必须完全一致。写成 javascript、.js、source.js(缺点号)都无效。
正确写法示例:
- 普通 JavaScript:
'.source.js' - React JSX:
'.source.js.jsx' - TypeScript:
'.source.ts' - HTML:
'.text.html.basic' - CSS:
'.source.css'
查当前真实 scope 的唯一可靠方式:
- 在目标文件中按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Win/Linux) - 输入
Editor: Log Cursor Scope并回车 - 看控制台输出,例如
source.js.jsx meta.function.js→ 就用'.source.js.jsx'
多个 scope 要用数组写法:['.source.js', '.source.ts'],不能写成字符串拼接或加竖线。
prefix 和 body 怎么写才不崩?占位符编号断档就全失效
prefix 是你敲完按 Tab 触发的词,只支持英文小写和短横线,比如 cl、react-comp;中文、空格、大写字母会直接失效。
body 是展开内容,注意这些硬性规则:
- 多行内容必须用三重单引号
'''包裹,避免手动写\n和缩进错乱 - 占位符必须从
$1开始连续编号:$1→$2→$0,跳号(如只有$1和$3)或重复(两个$1)会导致后续全部失效 -
$0是终点占位符,只能出现一次,别把它放第一个位置 - 不支持 VS Code 风格的
${1:default},写了整个 snippet 会静默跳过(CSON 解析失败) -
body行首缩进必须和body:对齐,顶格写会解析失败
示例(JS 中输入 cl 展开为 console.log($1);):
''.source.js'':
'cl':
'prefix': 'cl'
'body': 'console.log($1);$0'
改完为什么没反应?重载不是可选项,是必做动作
Atom 不监听 snippets.cson 文件变化,修改后必须手动重载,否则新 snippet 永远不会加载。
快捷方式:
-
Cmd+Shift+P/Ctrl+Shift+P→ 输入Snippets: Reload Snippets - 或使用快捷键:
Cmd+Alt+Ctrl+L(macOS)、Ctrl+Shift+F5(Win/Linux)
如果重载后仍不生效,立刻检查:
- 文件是否已保存(CSON 解析失败时 Atom 静默跳过整文件)
- 末尾有没有多余逗号(CSON 不允许)
- 右下角语言标识是否正确(比如显示 “Plain Text” 就不会触发
.source.js) - 光标是否在行首或空行中(前面有字符或空格时 Tab 默认缩进,不触发 snippet)
最常被忽略的是:scope 写对了,但当前文件语法高亮没生效(比如 .jsx 文件没识别成 React),此时重载 snippet 也没用——得先确认右下角显示的是 “JavaScript (JSX)” 而非 “JavaScript”。

















