Better Completion 是 Sublime Text 的结构化补全插件,需通过 Package Control 安装并手动配置作用域与 API 启用项,重启后生效;它不理解语义,仅做静态关键词补全,与 LSP 共存但功能独立。

Sublime Text 原生的自动补全只匹配当前文件里出现过的词,Better Completion 能按语言提供结构化补全(比如 html 标签、jquery 方法),但它不是“开箱即用”的智能提示工具——它不理解代码语义,也不提供参数签名或跳转定义。
安装 Better Completion 插件必须走 Package Control
手动下载 ZIP 解压到 Packages/ 目录容易出错:路径不对、权限缺失、Sublime 识别失败。唯一可靠方式是用 Package Control:
- 没装
Package Control?按Ctrl + `调出控制台,粘贴官网最新安装脚本(别用过期版本) - 装好后重启 Sublime,再按
Ctrl + Shift + P输入Install Package,能搜到才算成功 - 搜索并安装
Better Completion(注意名称准确,不是SublimeCodeIntel或AutoComplPop)
启用 html/jquery/bootstrap 等库补全要改两个配置文件
插件装完默认不生效,必须手动开启对应 API 并重启:
- 在
Packages/User/下新建或编辑sbc-setting.sublime-settings,确保包含:{ "completion_active_list": { "html": true, "jquery": true, "twitter-bootstrap": true } } - 每个启用的库需对应一个
sbc-api-${name}.sublime-settings文件(如sbc-api-html.sublime-settings),但这些文件插件已内置,不用手动创建 - 改完配置必须重启 Sublime,否则右下角语法识别正常、LSP 也启动了,
Better Completion仍不会触发
补全不弹窗?检查 auto_complete_triggers 和 selector 是否匹配
即使配置全开,补全框也可能完全不出现,常见原因是触发器没对上当前语法作用域:
-
Better Completion默认只在source或text作用域响应,而 JS 文件实际作用域可能是source.js,HTML 是text.html.basic - 打开命令面板
Ctrl + Shift + P→ 输入Developer: Show Scope Name,光标所在位置会显示完整 scope,比如source.js.embedded.html - 把该 scope 加进
auto_complete_triggers的selector字段,例如:"auto_complete_triggers": [ { "selector": "source.js, text.html.basic", "characters": "." } ] - 别只写
"source"——太宽泛,Sublime 可能优先匹配其他插件的触发器,导致冲突
LSP 和 Better Completion 能共存,但别指望它们互相增强
如果你同时装了 LSP 和 Better Completion,得清楚它们各干各的活:
-
LSP提供函数参数、类型推导、悬停文档,靠的是本地运行的语言服务器(如typescript-language-server) -
Better Completion只做静态关键词展开,比如输入docu补全成document,输入each补全成$.each(),不查你项目里的变量或 import - 两者触发逻辑独立:LSP 补全由
.或(触发,Better Completion默认靠.或任意字母触发——若设了"characters":".",就只在点号后弹,避免干扰 - 如果补全列表混杂、延迟高,关掉其中一个插件的
auto_complete开关再测试,别让两套机制同时抢焦点
真正卡住的点往往不在插件本身,而在 scope 匹配不准、配置文件放错位置、或者重启被忽略——尤其 sbc-setting.sublime-settings 必须放在 Packages/User/,而不是 Packages/Better Completion/ 下。


















