
能,但必须分清用哪个命令、在哪种文件里、怎么选中——错一个环节就包不进去。
Wrap with Tag 和 wrap_with_abbreviation 到底该用哪个?
原生命令 Wrap with Tag 只支持简单标签,比如输入 div 或 p,不解析类名、嵌套、* 这类缩写;而 Emmet 的 wrap_with_abbreviation 支持 div.container>ul>li* 这种完整语法,但需要先装 Emmet(Sublime 4 默认自带,Sublime 3 需手动装)。
-
Wrap with Tag对应命令名是wrap_with_tag,快捷键默认没绑定,得用Ctrl+Shift+P手动搜 -
wrap_with_abbreviation是 Emmet 命令,快捷键默认也没开,常见自定义为Ctrl+Alt+W或Ctrl+Shift+G - 如果输
section>header+h1没反应,说明你调的是原生命令,不是 Emmet 版本
为什么按了快捷键没反应?常见失效场景
最常卡在这几个地方:
- 没真正选中内容——哪怕只选一个空格也行,光标停在词里不算
- 当前文件语法模式不是
text.html或source.js,右下角显示Plain Text或Markdown时,wrap_with_tag可能压根不出现 - 中文输入法开着,
Ctrl+Shift+G会直接切换输入法而不是触发 Emmet - 插件冲突:某些 UI 插件或 Snippet 工具会覆盖
wrap_with_abbreviation命令,可临时禁用插件测试
包裹 <pre class="brush:php;toolbar:false;"></pre> 这类敏感标签要注意什么?
这类标签对换行和空白符敏感,直接用 pre>code 包裹后,容易多出空行导致渲染异常。
- 别用
pre>code后再手动删空行——Emmet 生成的结构里,<code>标签内默认带换行,要手动把内容贴到同一行 - 更稳妥的做法:先用
pre>code包裹,然后把光标移到<code>开始标签后,按Ctrl+Shift+K删除当前行空行,再把内容粘过去 - 如果内容本身含换行(比如多行代码),建议先用
Ctrl+Shift+P→Indentation: Reindent Lines统一缩进,再包裹,避免嵌套错位
想固定用某组标签(比如总包成 figure)怎么设快捷键?
直接改 Key Bindings – User 文件,加一条带上下文限制的规则:
[
{
"keys": ["ctrl+shift+f"],
"command": "wrap_with_abbreviation",
"args": {"abbreviation": "figure>figcaption"},
"context": [
{"key": "selector", "operator": "equal", "operand": "text.html"}
]
}
]
-
"args"里填{"abbreviation": "figure>figcaption"},就能一键包出<figure><figcaption>...</figcaption></figure> -
context必须写,否则在 JS 文件里按也会触发,可能把变量名包成 HTML 标签 - 别写成
wrap_with_tag+args——原生命令不支持预设参数,写了也无效
复杂点在于:缩写语法看似简单,但类名、ID、嵌套层级一旦写错,包裹结果就错位;更隐蔽的是,不同语法模式下同一快捷键可能绑定不同命令,查错得看命令面板里实际执行的是哪一个。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











