要启用all autocomplete全局补全,需在用户配置中设"enable_global_autocomplete": true和"show_overlay": true;它仅扫描已打开文件,不索引磁盘未打开文件,且受语法scope、文件大小等限制。

All Autocomplete 默认不开启全局补全,必须手动启用 show_overlay 并配置 enable_global_autocomplete 为 true,否则只在当前文件内生效。
如何启用 All Autocomplete 的全局补全功能
插件安装后默认仅对当前文件补全,要跨文件补全需修改用户配置。Sublime Text 的配置是 JSON 格式,不能有注释,键名大小写敏感:
- 打开
Preferences → Package Settings → All Autocomplete → Settings – User - 填入以下内容(确保没有多余逗号或括号):
{ "enable_global_autocomplete": true, "show_overlay": true } - 保存后重启 Sublime 或执行
Ctrl+Shift+P→Reload Package→All Autocomplete
注意:show_overlay 控制是否弹出候选列表,设为 false 时即使全局开启也看不到补全项;enable_global_autocomplete 才是真正决定是否扫描其他打开文件的关键开关。
All Autocomplete 全局补全的实际范围限制
它只扫描当前已打开的标签页(即所有 view),不会读取磁盘上未打开的文件,也不索引项目目录或 node_modules 等外部路径。
- 补全来源:所有已打开、未关闭的文件(无论是否保存)
- 不包含:未打开的文件、已关闭但未保存的临时缓冲区、外部库源码(除非你手动打开了那些文件)
- 性能影响:打开 50+ 文件时输入会轻微卡顿,尤其在正则匹配阶段(插件会对每个 view 的全文做字符串扫描)
如果你依赖大量外部符号(比如 Vue 组件名、React Hook 名),All Autocomplete 无法替代 JavaScript Completions 或 SublimeLinter 类型感知插件。
为什么输入时没反应?常见失效场景
不是配置错就是触发条件不满足。最常被忽略的是触发时机和作用域限制:
- 光标必须在单词中间或末尾(如
fetchU|),开头位置(|fetchUser)不触发 - 当前语法高亮类型需被插件支持——默认只处理
source、text、string类 scope,comment和keyword被跳过 - 若文件过大(>1MB),插件会自动跳过该 view,避免阻塞 UI
- 某些插件(如
Emmet)会劫持Tab键,导致补全无法提交,可改用Enter或Ctrl+Space
验证是否生效:打开两个 .js 文件,在 A 中写 const apiHost = 'xxx';,切换到 B 文件输入 apiH 后按 Ctrl+Space,应看到 apiHost 候选项。
和原生补全、其他补全插件的共存问题
All Autocomplete 是“叠加式”补全,不替换原生行为,但多个补全源同时响应时容易互相干扰:
- 原生补全(
auto_complete)优先级更高,若它已返回结果,All Autocomplete 可能被压制(尤其在短单词如id、url上) - 与
SublimeCodeIntel冲突明显:后者监听on_query_completions并返回带文档的结构化结果,而 All Autocomplete 返回纯字符串,两者混排时顺序不可控 - 建议禁用原生补全的自动触发(设
"auto_complete": false),改用手动调用Ctrl+Space,避免误触发和结果混乱
真正难处理的是异步补全插件(比如基于 Language Server 的),它们可能延迟返回,而 All Autocomplete 是同步扫描内存中的 view,快但“过时”。如果项目里同时用了 LSP 和 All Autocomplete,后者更适合补全自定义变量名,前者负责 API 签名和类型提示——别指望它俩合并成一个完美列表。











