sublime text 默认不自动闭合空标签,自闭合行为取决于插件及设置;emmet 仅对白名单内标签(如img、br)在启用auto_close_self_closing_tag后补/>, autoclosetag则支持输入时实时闭合但需正确配置且不兼容中文输入法。

Sublime Text 默认不自动闭合空标签(如 <img>、<br>),也不会给它们加 />;所谓“自闭合”行为,完全取决于你用的是哪个插件、启用了哪项开关,且不同插件对“哪些标签算自闭合”的定义还不一样。
Emmet 的 auto_close_tag 不管自闭合标签
Emmet 插件的 auto_close_tag 设置只影响成对标签(比如 <div>、<code><p></p>)。它默认不会给 <img src="a.jpg"> 补 />,哪怕你把它当 XML 写——这是有意为之的设计。
- 如果你在 HTML 文件中输入
<img> 后按 <code>Tab,Emmet 会展开为<img src="">(不带/>),符合 HTML5 规范 - 想让它输出
<img src="">?得手动开启auto_close_self_closing_tag,但这个选项只在 Emmet 的设置里有效,不是 Sublime 原生配置项 - 该选项生效后,也只作用于 Emmet 内置白名单里的标签:area、base、br、col、embed、hr、img、input、link、meta、param、source、track、wbr
- 不在白名单里的标签(比如自定义元素
<my-tag></my-tag>)永远不会被自动补/>
AutoCloseTag 插件才真正管“输入即闭合”
原生 Sublime 和 Emmet 都不支持“敲完 <img> 按 <code>> 就出 <img>”这种行为。只有 AutoCloseTag(作者 wingyplus)能做到,但它靠的是语法识别 + 白名单匹配,不是智能推断。
- 安装后必须打开
Preferences → Package Settings → AutoCloseTag → Settings - 确认
"html_self_closing_tag": true已启用,否则它会傻乎乎地给<img>补(错误!) - 它的白名单和 Emmet 基本一致,但不可扩展——你不能往里面加新标签名
- 如果当前文件语法不是
HTML或HTML (Vue)(右下角显示 Plain Text 就失效),它压根不响应 - 输入法处于中文状态时按
>,可能触发不了闭合——因为实际输入的是中文全角字符
别混用 Emmet 和 AutoCloseTag 的闭合逻辑
两者同时启用,容易出现重复补全或光标错位。典型表现是:输 <div> → 按 <code>> 补成 <div></div> → 再按 Tab 又变成
<div></div>











