atom无法直接编辑候选词列表,因为autocomplete-plus仅渲染由各provider(如autocomplete-javascript)动态生成的建议;修改候选词须通过禁用/启用provider、调整其scope匹配范围或替换增强provider本身实现。

Atom 不提供“直接编辑候选词列表”的界面或配置项——补全建议来自插件(provider)的运行时计算,不是静态可编辑的下拉菜单。想改列表内容,必须调整 provider 行为、作用域或数据源。
为什么不能直接改候选词列表
autocomplete-plus 只是渲染器,它不生成建议,也不维护词库。你看到的 console.log、for、div 这些项,分别来自 autocomplete-javascript、snippets、autocomplete-html 等 provider 的 getSuggestions() 返回值。删掉某个建议?得让对应 provider 不返回它,而不是在 UI 里点一下隐藏。
真正能控制候选词的三个入口
修改候选词,只有这三条路径有效,且互不替代:
-
禁用/启用特定 provider:比如关掉
autocomplete-html,<di> 就再也不会弹出 <code><div>;在 Settings → Packages 里把不需要的 autocomplete-* 插件 Disable 即可<li> <strong>调整 provider 的 scope 匹配范围</strong>:例如 <code>autocomplete-javascript默认只在source.js下生效,但你在 JSX 文件里写onClick={,右下角显示的是source.js.jsx,就得去它的设置页加 scope 支持,否则函数参数建议压根不出现 -
替换或增强 provider 本身:想让未
import的lodash方法也出现在列表里,不能靠改 autocomplete-plus 设置,必须换成ide-typescript并配好tsconfig.json的types字段——这才是真正扩展语义级候选词的唯一方式
别碰 snippets.cson 来“伪造”候选词
有人试图在 ~/.atom/snippets.cson 里加一条:
'.source.js':
'_.map':
'prefix': 'map'
'body': '_.map($1, $2)'
这不会让 map 出现在补全列表里——它只是个代码片段(tab-trigger),只在你输入 map 后按 Tab 才触发,和补全候选完全无关。更糟的是,它和真实 lodash 类型定义冲突,_.map 在 v4 和 v5 参数顺序不同,硬编码会误导人。
容易被忽略的关键点
provider 返回的候选项是否显示,还取决于两个常被跳过的条件:一是当前文件 grammar 必须精确匹配(source.js.jsx ≠ source.js),二是 autocomplete-plus 的 Minimum Word Length 设置不能大于你要输的字符数(设成 3,log 就永远触发不了 console.log)。这些细节不调对,换十个 provider 都白搭。











