Atom自动补全需autocomplete-plus、对应语言provider及正确语言识别三者协同;缺一不可,常见问题包括插件未启用、冲突插件抢占、语法识别错误或触发方式不当。

Atom 的自动补全不是开个开关就“全自动”——它依赖插件链协同工作,缺一环就完全不弹建议。核心是 autocomplete-plus + 对应语言的 provider(比如 autocomplete-javascript)+ 正确的语言识别,三者都到位才能看到补全列表。
确认 autocomplete-plus 已启用且没被冲突插件屏蔽
这是最常卡住的第一步。很多人装了插件但没点 Enable,或者同时装了旧版 autocomplete-atom-api 或 ternjs(非 atom-ternjs),它们会抢占补全入口,导致 autocomplete-plus 的 getSuggestions 方法返回 undefined,控制台报错 Uncaught TypeError: Cannot read property 'getSuggestions' of undefined。
- 打开 Settings → Packages,搜
autocomplete-plus,右侧必须是蓝色 Enabled,不是灰色Install或Disabled - 禁用所有名字带
autocomplete-但不是你当前语言所需的插件(比如写 JS 却装了autocomplete-python,一般无害;但autocomplete-atom-api必须关) - 重启 Atom —— Windows 上尤其重要,后台进程不退出,新插件可能根本不加载
装对 provider 并确保文件被识别为对应语言
很多人输几个字母没反应,第一反应是“坏了”,其实是触发方式不对。Atom 默认不靠 基础补全只管语法关键词( 最容易被忽略的是语言识别和 provider 的绑定关系:Atom 不靠文件名猜语言,而靠 grammar scope;scope 错了,再好的 provider 也喂不进数据。补全失效时,先盯住右下角那个小字,比翻设置快十倍。autocomplete-plus 本身不提供任何建议,它只是调度器。真正吐出函数名、变量、标签的是 provider。你敲 docu 想补 document,靠的是 autocomplete-javascript;敲 autocomplete-html。provider 没装,或装了但 Atom 不知道你在写什么语言,补全就永远为空。
JavaScript、HTML、PHP 等,不能是 Plain Text;点它可手动切换.js,否则 language-javascript 不加载,provider 就不会启动autocomplete-javascript(JS/Node)、autocomplete-html(HTML)、atom-autocomplete-tags(更稳的 HTML 标签闭合)、autocomplete-php(PHP)、autocomplete-python(Python)触发补全的方式和快捷键别搞错
Tab 确认补全项,也不靠 Ctrl+Space 在所有场景生效。
autocomplete-plus + 当前文件有 provider 支持 + 输入 ≥2 字符(默认最小长度)Ctrl+Space(Windows/Linux)或 Cmd+Space(Mac),但如果系统级输入法占用了这个组合键,左下角 Keybinding Resolver 会显示 unbound —— 此时得改 Atom 键位,比如绑到 Ctrl+Alt+Space
Enter,不是 Tab;若坚持用 Tab,要在 Keymap 里加自定义映射,但注意缩进时可能误触发. 后自动补对象属性(如 arr. 弹 push、map),仅 JS/TS 原生支持,Python 需额外插件项目级变量补全要额外配 ctags 或 atom-ternjs
function、if)、内置 API(console.log)、HTML 标签名。你自己写的 const apiHost = "https://api.example.com" 或 class UserService,默认根本不会出现在列表里 —— 这不是 bug,是设计如此。
atom-ctags + autocomplete-ctags,或直接用 atom-ternjs(JS/Node 场景首选)atom-ternjs 需在项目根目录建 .tern-project,内容至少含 {"ecmaVersion":6,"libs":[],"plugins":{"node":{}}};Mac 下常需加 "loadEagerly":["**/*.js"] 才生效Packages > Atom Ternjs > Restart server,否则配置不加载










