sublime text原生单词补全仅基于当前文件已出现的词,不跨文件、不分析语法或作用域;需手动触发(ctrl/cmd+space),且词库依赖预写/粘贴关键词,大小写敏感,auto_complete_triggers对其无效。

Sublime Text 原生单词补全默认是开启的,但只在当前文件内生效
很多人以为没开,其实是没触发条件:原生 auto_complete 只基于当前视图已有的词(包括注释、字符串、变量名),不跨文件、不读取语法定义、也不分析作用域。它不是 IDE 那种语义补全,就是纯文本“打过什么补什么”。
常见错误现象:Ctrl+Space 没反应,或只补出几个无关词;新开一个空文件敲 cons 补不出 console —— 因为当前文件里根本没出现过这个词。
- 确保没禁用:检查
Preferences → Settings里没有"auto_complete": false - 手动触发:按
Ctrl+Space(Windows/Linux)或Cmd+Space(macOS),别等自动弹出 - 补全源仅限当前 buffer:想补
fetch,得先在这个文件里写过一次fetch或粘贴过
如何让原生补全“看到”更多单词?靠复制粘贴或预埋关键词
没有插件时,唯一扩大补全词库的方式,就是把你想补的词提前放进当前文件——哪怕藏在注释里。这不是 hack,是 Sublime 原生机制的设计逻辑:它不索引项目,只做局部文本统计。
使用场景:写配置文件、模板代码、或批量处理相似文本时,提前塞入高频词效率很高。
- 在文件顶部加注释块:
// console log fetch post document,之后敲con就能补console - 复制一段含目标词的代码(比如从浏览器控制台拷个
document.querySelector),再删掉,词就进缓存了 - 注意大小写敏感:
Console和console被视为两个词,补全时需严格匹配已输入的大小写
auto_complete_triggers 配置容易被忽略的坑
这个设置能让 Sublime 在特定字符后自动弹出补全框(比如输入 . 后补方法名),但它对原生单词补全几乎无效——因为原生补全不依赖语法作用域,. 后并没有“可补的上下文”。强行配了也看不到效果,反而可能干扰其他插件。
常见错误:搜教程复制了类似 "auto_complete_triggers": [{"selector": "source", "characters": "."}],结果补全更卡顿,且单词补全依旧没变化。
- 原生补全不需要、也不响应
auto_complete_triggers的字符监听 - 该配置主要服务于插件(如 LSP、Anaconda)或语法高亮驱动的补全,和
auto_complete的单词模式无关 - 如果发现补全变慢,先检查这里是否误加了冗余规则
为什么不用插件时,JS/Python 文件看起来“补全更少”?
不是语言问题,是内容问题。JS 文件常有大量内置 API(Array.prototype.map),但原生补全不会加载 Array 的方法列表;它只认你亲手打过的 map。所以空 JS 文件里敲 arr,补不出 Array,除非你前面写过 Array。
性能影响极小——原生补全就是正则扫当前 buffer,10MB 文件也能秒出结果;但兼容性上,它在所有 Sublime 版本(3/4)、所有系统行为一致,不依赖 Python 解释器或 Node 环境。
- 别指望它补出
localStorage.getItem:没写过getItem,就不会出现 - 大文件里补全延迟?大概率是开启了
auto_complete_delay(毫秒级延迟),设为0即可 - 最易被忽略的一点:保存文件不会刷新补全词库,关闭再重开文件才重新扫描全文










