autocomplete-plus 补全是否生效取决于文件 grammar 与 provider 支持的 scope 是否匹配;需禁用无关 provider、正确设置文件 grammar、配置 file blacklist 并校验 scope。

autocomplete-plus 默认全局生效,但补全建议只在匹配语法时出现
Atom 的 autocomplete-plus 插件本身没有“按文件路径开关补全”的配置项。它是否弹出建议,完全取决于当前文件的 grammar(语法类型)是否被已启用的 provider 支持。换句话说:你不能直接写 “只对 src/utils/*.js 启用”,但可以通过控制 grammar 和 provider 的绑定关系,实现等效效果。
关键操作:禁用无关 provider + 精准设置文件 grammar
真正起作用的是 provider 插件(如 autocomplete-javascript、autocomplete-python)是否响应当前文件。它们都声明了自己支持的 scope(例如 source.js),只有当前编辑器 grammar 匹配该 scope,补全才会触发。
- 打开 Settings → Packages,把**不希望生效的 provider 全部禁用**(比如你在写 Markdown,但
autocomplete-html还开着,它不会干扰,但autocomplete-javascript若误匹配到 inline script 就可能弹建议——禁用最稳妥) - 确认当前文件右下角显示的是目标语法(如
JavaScript),不是Plain Text或HTML (Rails)这类非标准 grammar;点它手动切换 - 新建未保存文件时,Atom 默认设为
Plain Text,此时所有 provider 都不工作;**必须先保存为.js或手动选语法** - 对特殊文件(如
webpack.config.js、.env),可进 Config → Core → File Types 添加映射:".env": ["source.shell"],再装对应 provider(如autocomplete-shell)
进阶控制:用 keymap.cson 拦截快捷键触发
即使 provider 已加载,你也可以阻止它在某些文件中被手动唤出。比如你不想在 README.md 里按 Ctrl+Space 弹出补全:
- Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Win/Linux)→ 输入
Open Your Keymap - 在打开的
keymap.cson中添加:
'atom-text-editor[data-grammar~="text.md"]:not([mini])': 'ctrl-space': 'unset!'
这行配置让 Ctrl+Space 在 Markdown 文件中彻底失效,但不影响其他文件。注意:data-grammar 值必须和 Editor: Log Cursor Scope 输出的 grammar scope 一致(如 text.md,不是 markdown)。
容易忽略的坑:.gitignore 和 node_modules 会拖慢补全响应
即使你只对 src/ 下的 JS 文件启用补全,autocomplete-plus 默认仍会扫描整个项目(包括 node_modules)来构建基础词库。这会导致首次输入延迟明显,尤其在大型项目中。
- 进 Settings → Packages →
autocomplete-plus→ Settings - 关闭
Enable Scrolling Through Suggestions With Mouse Wheel(非必需,但减少干扰) - 重点改
File Blacklist:填入node_modules/**,\.git/**,dist/**,build/**(用逗号分隔,支持 glob) - 若用
ide-typescript等 LSP provider,它的索引行为独立于autocomplete-plus,需另查其配置(如tsconfig.json的include字段)
scope 写错、grammar 识别错、provider 冲突——这三个点占了 90% 的“补全不该出现却出现”或“该出现却不出现”问题。别急着装新插件,先看右下角那行字对不对。

















