Atom 的代码补全依赖 snippets.cson 文件,需正确放置路径、精确匹配 scope(如 source.js)、规范编写 body 占位符($1→$2 连续递增)、三重单引号包裹多行、改后手动重载窗口,缺一不可。

补全词库不是“装插件就自动有”,得靠 snippet 文件生效
Atom 本身不带预置的代码补全词库,autocomplete-plus 只是调度器,真正提供 for、if、console.log 这类补全项的是 snippets 插件——它读取你写的 snippets.cson 文件,按 scope 匹配触发。很多人以为装了 autocomplete-javascript 就能补 logt,其实不行,那是 snippet 的活。
-
snippets.cson必须放在~/.atom/snippets.cson(macOS/Linux)或%USERPROFILE%\.atom\snippets.cson(Windows),放错路径完全没反应 - scope 必须精确:JavaScript 是
source.js,不是javascript或.js;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
写 snippet 时 scope 写错,90% 的“没反应”都出在这儿
scope 不匹配,等于 snippet 被 Atom 直接忽略——不报错、不提示,安静得像没写过。常见错误包括把 source.js 写成 .source.js(开头多点)、用 javascript 替代 source.js、或者在 JSX 文件里只写了 source.js 却没加 source.js.jsx。
- 多个 scope 用逗号分隔,且逗号后必须空一格:
"source.js, source.js.jsx"✅,"source.js,source.js.jsx"❌ - 不要用竖线
|或or,CSON 不识别逻辑运算符 - 临时兜底可写
*,但仅调试用,长期启用会拖慢补全响应速度 - 右下角状态栏显示 “JavaScript (JSX)” 时,scope 实际是
source.js.jsx,不是source.js
body 里 $1/$2 编号断档或格式错,tab 键就跳乱了
Atom 的 tab stop 是严格按编号顺序跳转的,$1 → $2 → $3 …… 中间跳号(如只有 $1 和 $3)或重复(两个 $1)会导致后续所有占位符失效,光标直接停在末尾或卡住不动。
- 编号必须从
$1开始连续递增,不能写$0当第一个($0是终点,只出现一次) - 多行内容推荐用三重单引号
'''包裹,避免手动拼\n和缩进混乱 - body 首行缩进要和
body:对齐,顶格写会解析失败 - 不支持 VS Code 风格的
${1:default},写了整个 snippet 就静默失效
改完 snippets.cson 后不 reload,等于白改
Atom 不会自动监听 snippets.cson 文件变化,改完必须手动重载配置,否则新 snippet 永远不会加载。
- 快捷键:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Window: Reload回车 - 别只关窗口再开——Windows 上后台进程常驻,必须彻底退出 Atom 再启动才保险
- 如果重载后仍无效,打开开发者工具(
View → Developer → Toggle Developer Tools),看 Console 是否有Failed to load snippets报错,大概率是 CSON 语法错(比如多了一个逗号、引号不闭合、缩进混用空格和 Tab)
scope、CSON 格式、reload 这三件事串起来,就是自定义补全词库能否落地的全部门槛。少一个,就卡在“写了却没反应”的死循环里。

















