Sublime如何启用单词自动补全?(非插件原生功能)

3次阅读

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

Sublime如何启用单词自动补全?(非插件原生功能)

sublime text 原生单词补全默认是开启的,但只在当前文件内生效

很多人以为没开,其实是没触发条件:原生 auto_complete 只基于当前视图已有的词(包括注释、字符串、变量名),不跨文件、不读取语法定义、也不分析作用域。它不是 ide 那种语义补全,就是纯文本“打过什么补什么”。

常见错误现象:Ctrl+Space 没反应,或只补出几个无关词;新开一个空文件敲 cons 补不出 console —— 因为当前文件里根本没出现过这个词。

  • 确保没禁用:检查 Preferences → Settings 里没有 "auto_complete": false
  • 手动触发:按 Ctrl+Spacewindows/linux)或 Cmd+Spacemacos),别等自动弹出
  • 补全源仅限当前 buffer:想补 fetch,得先在这个文件里写过一次 fetch 或粘贴过

如何让原生补全“看到”更多单词?靠复制粘贴或预埋关键词

没有插件时,唯一扩大补全词库的方式,就是把你想补的词提前放进当前文件——哪怕藏在注释里。这不是 hack,是 Sublime 原生机制的设计逻辑:它不索引项目,只做局部文本统计。

使用场景:写配置文件、模板代码、或批量处理相似文本时,提前塞入高频词效率很高。

  • 在文件顶部加注释块:// console log fetch post document,之后敲 con 就能补 console
  • 复制一段含目标词的代码(比如从浏览器控制台拷个 document.querySelector),再删掉,词就进缓存了
  • 注意大小写敏感:Consoleconsole 被视为两个词,补全时需严格匹配已输入的大小写

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 即可
  • 最易被忽略的一点:保存文件不会刷新补全词库,关闭再重开文件才重新扫描全文
text=ZqhQzanResources