Emmet 必须通过 Package Control 官方渠道安装,且仅认“Emmet”(首字母大写、无空格),安装后需重启并设置语法为 HTML 才生效;Tab 键默认不绑定,应使用 Ctrl+E;缩写须位于行尾且光标紧贴右侧。

Package Control 没装好,Emmet 根本进不来
Emmet 必须走 Package Control 安装,拖 ZIP、双击安装包、手动扔进 Packages/ 目录,全是“假安装”:命令面板搜不到 emmet_expand_abbreviation,Preferences → Package Settings 里压根没有 Emmet 选项。
验证方式很简单:Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入 Package Control: Install Package —— 能弹出菜单才算到位。如果报 urllib.error.URLError 或空白无响应,大概率是企业网络拦截了 https://packagecontrol.io。
- 去官网下载
Package Control.sublime-package,放进Installed Packages/目录,重启 Sublime - 控制台执行安装脚本时,必须用官网最新 HTTPS 地址:
https://packagecontrol.io/installation;旧的http://sublime.wbond.net已在 2026 年起强制失效
只认 Emmet(首字母大写),别装错分支
Sublime Text 4 不再内置 Emmet,必须手动装官方维护版。搜 emmet(小写)、Emmet Snippets 或 Emmet Live,都会装到非官方分支——它们不支持 .vue 映射、缺失设置入口、Ctrl+E 不响应。
正确操作路径:Ctrl+Shift+P → 输入 Package Control: Install Package → 等列表加载完成 → 输入 Emmet(注意大小写、不能少字母、不能多空格)→ 只选作者显示 sergeche 的那一项。
- 安装后必须重启 Sublime Text;否则
html:5、ul>li*3等缩写完全无响应——这是 2026 年用户卡住的第一步 - 重启后,打开命令面板搜
Emmet: Expand Abbreviation,能执行且有反馈,说明插件已注册成功
右下角不是 HTML,Emmet 直接无视你写的任何缩写
Emmet 不看文件后缀名,只认右下角状态栏显示的语法类型。新建文件默认是 Plain Text,此时敲 div.container + Ctrl+E 也不会有任何反应。
真正生效的前提:新建文件后,Ctrl+Shift+P → 输入 Set Syntax: HTML → 回车,右下角出现 HTML 两个字才算到位。
- 别只输
div测试——它在非 HTML 模式下可能被 Sublime 自带补全劫持;真正有效的测试是html:5或ul>li*3 - 如果右下角始终不显示目标语法,检查是否误点了
Revert to Saved,或文件被自动识别为XML、PHP等变体(它们默认不启用 Emmet) - Vue/JSX 文件需额外配置:
Preferences → Package Settings → Emmet → Settings – User中加入"emmet_include_languages": {"vue-html": "html", "javascript": "jsx"}
Tab 键默认不绑定 Emmet,Ctrl+E 才是真触发键
Sublime Text 4 默认不把 Tab 绑定给 Emmet。很多团队禁用 Tab 补全,或装了 AutoIndent、Emacs Pro Mode 类插件,它们会优先截获 Tab,导致展开失败。
最可靠的做法是直接用默认快捷键:Ctrl+E(Win/Linux)或 Cmd+E(macOS)。想改回 Tab,得手动加 context 限定,否则会和原生补全冲突:
{
"keys": ["tab"],
"command": "expand_abbreviation",
"context": [
{"key": "setting.auto_indent"},
{"key": "selector", "operand": "source.css, text.html.basic, source.vue"}
]
}
- 缩写必须写在行尾,光标紧贴其右侧;前面有空格、换行、中文标点,Emmet 解析器直接放弃
- CSS 文件默认不启用 Emmet 缩写,需在 Emmet 用户设置中补全
syntax_scopes映射
复杂点不在安装步骤本身,而在 Sublime 对语法上下文的严格判定和快捷键的上下文隔离机制——哪怕所有插件都装对了,只要右下角没显示 HTML,或者光标没停在缩写末尾,Ctrl+E 就不会触发。这不是 bug,是设计逻辑。

















