all autocomplete 默认只补全当前文件,需在用户设置中添加{"all_autocomplete": true}并满足三条件:语法非plain text、至少两文件打开且语法正确、光标在单词中间或末尾。

装完插件为什么 Ctrl+Space 还是只补当前文件?
因为 All Autocomplete 默认不跨文件索引,它只启用当前文件内补全。你必须手动在用户设置里加 "all_autocomplete": true,且键名不能写成 all_autocomplete_enabled 或 enabled——错一个字母就失效。
打开 Preferences → Package Settings → All Autocomplete → Settings – User,填入最小必要配置(JSON 格式,无注释,末尾不能有多余逗号):
{"all_autocomplete": true}
保存后无需重启,但以下三点必须同时满足,否则它连当前文件都不扫:
- 当前文件右下角显示的是
Python、JavaScript等有效语法,不能是Plain Text(按Ctrl+Shift+P→Set Syntax: Python强制切换) - 至少有两个文件已打开,且都设对了语法(比如
A.py里写了def user_login,B.py里输入user_l再按Ctrl+Space才可能命中) - 光标必须在单词中间或末尾(
user_l|可以,|user_login开头位置不触发)
为什么开了配置还是补不出变量名?
All Autocomplete 不解析 import、不读 AST、不跟踪作用域,只做纯字符串前缀匹配。补不出来,基本卡在这三点:
- 目标词没真实出现在任何一个已打开且未关闭的标签页中(磁盘上存在的
utils.py,只要没手动打开,它完全看不见) - 当前文件右下角显示
Plain Text→ 插件静默失效 - 触发方式是手动的:
Ctrl+Space(Win/Linux)或Cmd+Space(macOS),它不响应.或:自动弹出
例如你在 requests.py 里写了 get(),但没打开这个文件,那输 req 后按 Ctrl+Space 就不会出现 requests.get —— 它不是“项目级索引”,只是“已打开标签页的词频广播”。
大项目下怎么让补全更准?
它没有后台扫描,所谓“跨工作区”仅限于你实际打开的 tab。指望调参数没用,得靠人工让关键符号“被看见”:
- 右键侧边栏 →
Open Containing Folder,把核心模块(如constants.py、api_client.js)手动打开几个标签页 - 避免打开几十个无关文件;可加
"max_files_to_scan": 20控制扫描上限,防卡顿 - 文件不能太大(默认 >1MB 被跳过),也不能是
node_modules/、二进制或 Sublime 无法读取的路径
别拿它当语言服务器用:输入 os. 后按 Ctrl+Space,它可能列出 os_path、os_listdir 这类拼写变体,但不会告诉你 os.listdir() 接什么参数——这不是 bug,是设计如此。
和 LSP 插件能共存吗?
能,而且建议共存,但功能不重叠:
-
All Autocomplete是“文本级广播”:把你所有打开的.py文件里的函数名、变量名、甚至注释里的单词,一股脑塞进补全框 -
LSP(如LSP-pyright)是“语义级点对点”:靠语言服务器实时分析 AST,提供函数签名、类型推导、跳转定义 - 两者候选会混杂显示,
All Autocomplete的结果通常排在后面;若想优先显示语义项,需调整LSP.sublime-settings中的only_show_lsp_completions配置
真正容易被忽略的是:All Autocomplete 对语法识别极度敏感,哪怕一个文件右下角显示 Plain Text,整个插件对那个文件就彻底静默——它不报错、不提示,只是默默跳过。这点比配置本身更常导致“明明装了却没效果”。











