atom补全插件按grammar动态启用而非手动切换,当前文件语法(如source.python)决定对应provider自动加载;右下角显示python(非jedi或plain text)、保存为.py后缀、启用autocomplete-plus是三大前提。

补全插件不是“切换”,而是按 grammar 动态启用
Atom 没有全局开关让你在 autocomplete-python 和 autocomplete-javascript 之间手动“切换”。补全行为由当前文件的 source.python 或 source.js grammar 决定,插件只在匹配 scope 时自动加载。你改文件后缀、点右下角语言名、或保存为 .py,底层就已触发不同 provider 的启用逻辑。
常见错误是以为装了多个 provider 就能“随时切”,结果在 .py 文件里输 console. 却没提示——这不是插件冲突,是 grammar 没识别成 JavaScript,autocomplete-javascript 根本没启动。
- 确认当前文件 grammar:右下角显示必须是
Python(不是Python (Jedi)或Plain Text);.js文件同理,必须显示JavaScript - 新建未保存文件默认是
Plain Text,补全完全静默;务必先保存为对应后缀再写代码 - 一个文件不能同时激活两个 language provider;Vue 单文件组件中
<script></script>区域需额外配置 scope(如source.js.jsx),否则autocomplete-javascript不响应
多个 provider 共存但互不干扰的条件
autocomplete-python 和 ide-python 可共存,autocomplete-javascript 和 atom-ternjs 也能一起开——前提是它们注册的 scope 不重叠、不劫持同一方法。真正出问题的不是“多装”,而是装了会覆盖 getSuggestions 的旧插件。
- 必须禁用:
autocomplete-atom-api、ternjs(注意不是atom-ternjs)、language-babel(它会抢source.js的控制权) - 检查控制台:按
Ctrl+Shift+I打开 DevTools,切换到 Console,如果看到Cannot read property 'getSuggestions' of undefined,基本就是某个 provider 加载失败或被覆盖 -
autocomplete-plus必须是蓝色Enabled状态;它只是调度器,provider 才是补全内容来源
补全没反应?优先查这三件事
90% 的“补全失效”问题都卡在这三个环节,和插件数量无关:
-
autocomplete-plus是否启用?Settings → Packages → 搜autocomplete-plus→ 看按钮是不是蓝色Enabled - 当前文件 grammar 是否正确?右下角点击 → 手动选
Python/JavaScript/CSS;.html里写 JS 代码不会触发autocomplete-javascript - 对应 provider 是否装对?写 Python 要
autocomplete-python+ide-python(参数级);写 JS 推荐autocomplete-javascript(基础)+atom-ternjs(语义);Emmet 则只在text.html.basic或source.css下生效
想临时禁用某个 provider?直接停用插件
没有“运行时切换”按钮,但你可以快速停用某个 provider 插件来验证是否冲突:
- Settings → Packages → 搜
autocomplete-python→ 点Disable;立刻在.py文件里测试补全是否消失 - 禁用
atom-ternjs后,arr.map(后不再提示参数,但document.仍能补基础属性(靠autocomplete-javascript) - Windows 用户禁用后务必重启 Atom;后台进程常驻,插件状态变更不重启不生效
Plain Text = 所有 provider 静默。











