emmet 在 sublime 中不生效需依次检查:插件是否安装启用、语法是否设为 html、缩写是否在空行行首输入且用 tab 触发、避免多余空格或换行,以及确认无其他插件干扰。

Emmet 在 Sublime 里不生效?先确认插件已启用
Sublime 默认不带 Emmet,得手动装。很多人以为装完就自动可用,结果敲 html:5 没反应——其实是插件没启用或没正确绑定到 HTML 语法。
- 用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac)调出命令面板,输入Package Control: Install Package,回车后搜Emmet并安装 - 装完重启 Sublime,新建一个文件,按
Ctrl+Shift+P输入Set Syntax: HTML,确保当前语法是HTML(不是Plain Text或PHP) - 如果仍无效,检查是否被其他插件干扰:临时禁用所有插件,只留 Emmet,再试
html:5+Tab
输入 html:5 后没生成完整模板?注意触发方式
Emmet 的缩写必须在空行、且光标在行首时按 Tab 才会展开;如果前面有空格、字符,或者光标不在行尾,它只会当普通文本补全。
- 正确操作:新文件中,第一行直接输
html:5,光标停在末尾,按Tab(不是Enter) - 常见错误:输完
html:5立刻按Enter换行,或前面不小心多了个空格,导致 Emmet 完全不响应 - 想自定义模板(比如加
viewport或charset=utf-8),改的是Preferences → Package Settings → Emmet → Settings里的html5配置项,不是改缩写本身
为什么 div.container>ul>li*3 展开后 class 名不对?
Emmet 解析器对点号 . 和星号 * 的优先级很敏感,空格位置错一点,结构就全乱。
-
div.container>ul>li*3是对的:生成 3 个带默认 class 的li -
div .container>ul>li*3(中间多空格)→ 变成div后跟一个独立的.container元素,不是 class -
div.container>ul>li*3>a→ 每个li里嵌一个a,但若漏了>写成li*3 a,就会变成并列的li和a - 不确定结构时,先在小片段里试,比如新建空文件,只输
ul>li*2,看是否生成两个li套在ul里
Emmet 快捷键和默认行为在 Sublime 里能改吗?
能,但别乱动默认键位。Sublime 的 Emmet 默认用 Tab 触发,这是最稳妥的;改成 Enter 或其他键容易和自动补全冲突。
立即学习“前端免费学习笔记(深入)”;
- 修改触发键:进
Preferences → Package Settings → Emmet → Key Bindings,改tab对应的command绑定,但建议只加新快捷键(如Ctrl+E),不动原Tab - 禁用某类缩写:比如不想让
div自动补全成<div></div>,可在用户键位设置里加一条规则,匹配div开头且无子节点的场景 - 注意:Emmet 在非 HTML 文件(如
.vue或.jsx)里默认不激活,需手动在语法模式下启用,或配置emmet.includeLanguages
真正卡住人的,往往不是不会写缩写,而是光标位置、语法模式、空格有无这些“看不见的条件”。多试两次空行 + Tab,比查文档更快定位问题。











