Emmet 缩写语法是什么?怎么用
Emmet 缩写语法是一套类似 CSS 选择器的表达式,输入后由编辑器动态解析,展开成完整的 HTML 或 CSS 代码。它适合需要频繁手写重复标签结构的网页开发场景,前提是你的编辑器已安装并启用 Emmet(或内置支持,如 VS Code 默认集成)。与普通代码片段不同,Emmet 缩写不需要事先定义,可以在输入时即时扩展。
核心机制:动态解析而非预定义片段
Emmet 官方文档指出,多数文本编辑器允许保存和复用常用代码块(snippets),但这类实现有两个共同局限:必须先定义片段,且无法在运行时扩展。Emmet 把片段思路推进了一步——你输入的是可被动态解析的 CSS 式表达式,输出结果取决于缩写内容本身。
这意味着同一个缩写模式可以随参数变化生成不同结构,不需要为每种组合单独建片段。
一个完整例子
文档给出的演示缩写:
ul#nav>li.item$*4>a{Item $}
各部分含义:
| 写法 | 作用 |
|---|---|
ul |
元素类型,生成 <ul> |
#nav |
id,生成 id="nav" |
> |
子元素,进入下一层 |
li.item$ |
生成 <li class="item1">,$ 为递增编号 |
*4 |
重复 4 次 |
a{Item $} |
生成 <a>Item 1</a> 等文本内容 |
展开后得到嵌套的导航列表结构。输入缩写后执行 “Expand Abbreviation”(VS Code 中默认 Tab 键)即可看到结果。
文档覆盖的语法要素
根据 Emmet Documentation 的目录,缩写语法部分包含:
- 元素类型(Element types):直接写标签名
- 隐式标签名(Implicit tag names):某些上下文可省略标签名,由 Emmet 推断
- “Lorem Ipsum” 生成器:快速生成占位文本
- CSS 缩写:用于 CSS 属性,含厂商前缀、渐变等
- 模糊搜索(Fuzzy search):不必完整输入也能匹配
配套动作
缩写只是入口,文档还列出一组围绕代码导航和编辑的动作,例如:
- Expand Abbreviation:展开缩写
- Balance:向外选中当前标签
- Go to Matching Pair:跳到配对标签
- Wrap with Abbreviation:用缩写包裹选中内容
- Go to Edit Point:在重要代码点之间跳转
- Select Item:选中下一个/上一个可编辑项
- Toggle Comment:注释整个标签
- Update Image Size、Evaluate Math Expression、Increment/Decrement Number 等
这些动作配合缩写使用,能减少手动定位和重复输入。
怎么开始
- 确认编辑器支持 Emmet(VS Code 等已内置)。
- 在 HTML 或 CSS 文件中输入一个缩写,例如
div>p。 - 执行 “Expand Abbreviation”(通常按 Tab),观察展开结果。
- 逐步加入
#id、.class、*n、{}等,验证输出变化。 - 需要时查阅 docs.emmet.io 的 Abbreviations Syntax 与 Actions 章节。
常见卡点
- 缩写未展开:检查光标位置是否在缩写末尾,以及 Tab 键是否被其他功能占用。
- 隐式标签名推断不符合预期:显式写出标签名可避免歧义。
- CSS 缩写与 HTML 缩写行为不同,需分别参考对应章节。
Emmet 的价值在于把“定义片段—调用片段”变成“直接写表达式—即时展开”,适合结构重复度高、需要快速搭建骨架的前端工作。