atom自动补全需autocomplete-plus启用、对应语言provider安装及文件grammar精确匹配三者协同;缺一不可,否则敲cons不弹console.log。

Atom 的自动补全不是装完插件就自动生效——它必须由 autocomplete-plus 调度,靠对应语言的 provider(如 autocomplete-javascript)吐出建议,且文件 grammar 必须精确匹配。三者缺一,敲 cons 就不会弹 console.log。
确认 autocomplete-plus 已启用且无冲突
这是最常卡住的第一步:插件装了但没点 Enable,或被旧插件劫持入口。
- 打开 Settings → Packages,搜
autocomplete-plus,右侧必须是蓝色 Enabled(灰色Install或Disabled都不行) - 禁用所有含
autocomplete-atom-api、ternjs(非atom-ternjs)、language-babel的插件——它们会覆盖getSuggestions方法,控制台报Uncaught TypeError: Cannot read property 'getSuggestions' of undefined - Windows/macOS 上务必完全退出 Atom 再重开;后台进程不杀,新插件根本加载不进内存
检查右下角 grammar 是否匹配 provider 的 scope
补全触发严格绑定 grammar(右下角显示的语法名),不是文件后缀,也不是你“以为”它该是什么。
- 新建未保存文件默认是
Plain Text,哪怕粘的是 JS 代码;保存为.js后,右下角才会变成JavaScript - 点右下角文字手动切换时,选
JavaScript,不是JavaScript (JSX)或Babel JavaScript;PHP 选PHP,不是PHP (Composer) - provider 只响应特定 scope:
autocomplete-javascript监听source.js,autocomplete-python监听source.python;scope 错一个字符(如写成javascript)就失效
按语言装对 provider,别漏依赖或混搭
autocomplete-plus 不提供任何建议,真正吐出 document、array_map 或 fetch() 参数的是 provider。
- JS/TS:只装
autocomplete-javascript;要参数提示,得配atom-ternjs(需项目有.tern-project)或ide-typescript(需tsconfig.json或已装typescript包) - PHP:
atom-autocomplete-php必须配合php-integrator-base+php-integrator-reflection;缺任一,连use导入的类都识别不了 - Python:
autocomplete-python只补模块和内置函数;要变量级、参数级提示,必须加ide-python(自动拉python-language-server) - HTML/CSS:禁用
autocomplete-html和autocomplete-css设置里的 fuzzy search——模糊匹配在大型项目里极易卡死主线程
Tab 键不能插入补全项?改 keymap.cson
Atom 默认用 Enter 确认补全,Tab 永远只缩进。想按 Tab 插入并跳转占位符(如 console.log(${1:text})),必须手动绑定。
- 执行
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Win/Linux)→ 输入 Open Your Keymap - 在打开的
keymap.cson中添加:'atom-text-editor[data-grammar~="source.js"]:not([mini])': 'tab': 'autocomplete-plus:confirm'
- 注意:不同语言要换对应 scope,比如 Python 是
source.python;若想同时支持 snippet 占位符跳转(${1:}),还得装python-snippets或javascript-snippets
最容易被忽略的其实是右下角那个小字——它比任何配置文件都关键。Grammar 错了,整个补全链路就断在第一步,后面装再多 provider 也没用。











