Atom代码片段不触发的主因是snippets.cson未正确加载、scope匹配失败或tab stop序号错误;需确保文件路径唯一、CSON语法合规、scope精准匹配、占位符序号连贯且$0置于末尾。

Atom 编辑器里代码片段(snippet)不触发,大概率不是你写错了,而是 snippets.cson 文件没被正确加载、scope 匹配失败,或者 tab stop 序号写乱了。直接改完保存不等于生效,必须重载。
确认 snippets.cson 路径和语法是否合规
Atom 只认唯一路径下的 CSON 文件:~/.atom/snippets.cson(Windows 是 %USERPROFILE%\.atom\snippets.cson)。其他位置、其他扩展名(比如 .json 或 .yaml)全无效。
- 用
Ctrl+Shift+P→ 输入Application: Open Your Snippets直接打开,别手动找 - 删掉所有末尾逗号(CSON 语法禁止),比如
'prefix': 'log',→ 改成'prefix': 'log' - 字符串含空格或特殊字符必须加单引号,例如
'source.js.jsx';纯英文 scope 如.source.js可省略引号 - 保存后立刻执行
Ctrl+Shift+P→Snippets: Reload Snippets,重启 Atom 不顶用
验证当前文件的真实 scope 是否匹配
片段是否激活,取决于编辑器解析出的语法 scope,而不是文件后缀名。一个 .js 文件如果右下角显示 “Plain Text”,那它根本不会匹配 .source.js。
- 在目标文件中任意位置按
Ctrl+Shift+P→Editor: Log Cursor Scope,看输出类似source.js.jsx meta.function.js - 选最具体且稳定的那一层,比如
.source.js.jsx;跨类型用数组:['.source.js', '.source.tsx'] - 右下角语言标识必须是对应语言(如 JavaScript),不是 Plain Text —— 点击切换
正确设置 $1、$2 和 ${1:default} 占位符
占位符序号错一位,整个 tab 跳转链就断了;$0 放错位置会导致光标卡死;联动变量写漏一个 ${1},同步修改就失效。
-
$1是第一个可跳焦点,$2是第二个……$0必须是最后一个退出点,不能当第一个 - 默认值写法是
${1:console.log},不是$1:console.log - 要联动修改(比如组件名改一处,所有引用同步变),必须统一用
${1:MyComponent}+${1},不能混用$1和${1} - body 多行用
"""包裹,但注意缩进:三引号开头和结尾必须顶格,内容缩进才有效
scope 错、$0 放前面、CSON 多了个逗号——这三类问题占了 80% 的失效场景。调试时先开 Log Cursor Scope,再检查 snippets.cson 是否被重载,最后逐行核对占位符序号,比重写一遍快得多。

















