Sublime自动补全弹窗默认不自动触发,必须手动按Ctrl+Space(Windows/Linux)或Cmd+Space(macOS)唤出;其核心在于补全引擎分触发与提交两层,该快捷键绕过所有限制,强制显示当前上下文全部候选。

Sublime 的自动补全弹窗默认不会“输点就出”,必须手动按 Ctrl+Space(Windows/Linux)或 Cmd+Space(macOS)触发——这是最稳定、最可控的方式,别指望它像 VS Code 那样无脑响应 . 或 :。
为什么 Ctrl+Space 是唯一可靠入口
Sublime 的补全引擎分两层:触发(trigger)和提交(commit)。Ctrl+Space 绕过所有 selector 和 characters 限制,强制唤出当前上下文可用的全部候选(单词、snippet、LSP 提供项等)。很多用户折腾 auto_complete_triggers 却始终不弹窗,根源就是误以为“输入字符=自动触发”,而忽略了 Sublime 默认只做“被动响应”。
-
auto_complete_triggers只对特定语法作用域生效,比如{"selector": "source.css", "characters": ":"},但若右下角显示的是Plain Text,这条规则直接失效 - LSP 补全依赖语言服务器加载,文件未被识别为对应类型(如 .py 文件显示为
Python而非Plain Text)时,Ctrl+Space也只会返回基础单词补全 - 插件如 Emmet、AutoFileName 会劫持
Tab或Enter,但它们不响应Ctrl+Space,所以这个快捷键始终干净、可预测
auto_complete_commit_on_tab 开了但 Tab 不工作?先看补全框有没有弹出来
很多人设了 "auto_complete_commit_on_tab": true,却仍发现按 Tab 只缩进。这不是设置没生效,而是补全框压根没出现——Tab 只负责“选中已高亮项”,不负责“唤出列表”。
- 确认
"auto_complete": true已启用(否则整个补全链路断掉) - 检查
"auto_complete_selector"是否写错作用域,比如 CSS 写成"source.css -comment"是对的,但写成"source.css-comment"(少空格)会导致解析失败,整条配置静默忽略 - JSON 格式错误(如末尾多逗号、单引号代替双引号)会让整个用户设置不加载,建议用在线 JSON 校验器粘贴验证
想让 . 后自动弹窗?Python/JS 等语言需显式配 auto_complete_triggers
原生 Sublime 不支持 os. 自动补全,必须靠 auto_complete_triggers 显式声明。这个配置对 HTML/CSS/Python 都有效,但每种语言的作用域 selector 不同,不能混用。
- Python:加
{"selector": "source.python", "characters": "."},确保右下角是Python - CSS:加
{"selector": "source.css", "characters": ":"},且需配合 CSS3 插件才能识别gap、backdrop-filter等现代值 - HTML:加
{"selector": "text.html", "characters": ",用于标签名补全;但闭合标签(如 <code><div>后自动补</div>)得靠 Emmet 或auto_close_tags,不是这个触发器管的
补全候选太少?检查 snippet 和插件是否真在作用域内
输入 log 按 Ctrl+Space 却没看到 console.log(),大概率是 snippet 未加载或作用域不匹配。
- Snippet 文件的
scope字段必须覆盖当前语法,例如 JavaScript snippet 的 scope 应为source.js,若设成source.python就不会出现在 .js 文件里 - Emmet 默认只在
text.html、source.css下激活;.vue 文件中,<template>区域是text.html.vue,需在 Emmet Settings 中显式添加该 scope - LSP 补全项来自服务器,如果
Ctrl+Space只返回几个变量名,说明 LSP 还没连上或没正确解析项目结构(如没找到pyproject.toml或tsconfig.json)
真正卡住人的从来不是“怎么开补全”,而是“为什么它不在我以为该出现的时候出现”——作用域识别、JSON 格式、插件接管权这三者叠在一起,任何一个出错都会让补全变成玄学。调试时优先盯死右下角语法标识和 Ctrl+Space 的响应,比反复改触发字符更省时间。

















