Sublime Text 3中HTML5自闭合标签自动补全问题求助
解决Sublime Text 3中自闭合标签自动添加闭合标签的问题
我完全懂你的困扰——想保留舒服的自动缩进,但不想让Sublime给那些本该自闭合的标签(比如你用的<image>)自动生成多余的闭合标签。下面是具体的解决方法:
方法一:自定义HTML语法规则,标记你的自闭合标签
Sublime Text对标签的判断逻辑来自HTML语法定义文件,我们可以在User目录下创建自定义规则覆盖默认设置,把<image>加入自闭合标签列表:
- 打开Sublime Text,点击顶部菜单栏的
Preferences→Browse Packages...,打开Packages文件夹。 - 进入
User子文件夹,新建一个名为HTML.sublime-syntax的文件。 - 将以下内容粘贴进去(基于默认HTML语法,仅添加
<image>到自闭合标签列表,保留原有所有规则):
%YAML 1.2 --- name: HTML file_extensions: - html - htm - shtml - xhtml - inc - tmpl - tpl scope: text.html.basic contexts: main: - include: tag-stuff tag-stuff: - include: comments - include: doctype - include: cdata - include: tags tags: - include: start-tags - include: end-tags - include: self-closing-tags - include: script-tags - include: style-tags - include: php-tags - include: asp-tags self-closing-tags: - match: '<(?=\w+\/>)' push: - meta_scope: meta.tag.self-closing.html - match: '(\w+)' scope: entity.name.tag.self-closing.html captures: 1: - meta_scope: meta.tag.name.html - include: self-closing-tag-names - match: '(?=\/>)' pop: true - include: tag-attributes - match: '<(\w+)(?=\s*\/>)' scope: meta.tag.self-closing.html captures: 1: - meta_scope: meta.tag.name.html - include: self-closing-tag-names push: - match: '\/>' scope: punctuation.definition.tag.end.html pop: true - include: tag-attributes self-closing-tag-names: - match: '(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr|image)' scope: support.tag.html # 这里我们把`image`添加到了默认的自闭合标签列表里
- 保存文件,重启Sublime Text。现在
<image>会被识别为自闭合标签,输入时不会再自动生成</image>了。
方法二:全局关闭自动标签闭合(不推荐)
如果你只是临时测试,或者愿意牺牲普通标签的自动闭合,可以修改用户设置:
- 打开
Preferences→Settings,在右侧用户设置中添加:
"auto_close_tags": false
但这个方法会关闭所有标签的自动闭合(比如<nav>也不会自动补全</nav>),所以更推荐方法一。
额外小提示
顺便提一句,HTML5标准里并没有<image>标签,标准图片标签是<img>,它默认就是Sublime识别的自闭合标签。如果是笔误的话,换成<img>就能直接解决问题啦~
内容的提问来源于stack exchange,提问作者d_zero
相关产品推荐
相关产品推荐

