XML Tools不会规范化注释,仅按XML解析规则重排位置;Indent XML则完全无视注释语义,仅机械缩进;真要控制注释格式需换用xmllint或Python脚本预处理。

XML Tools 不会“规范化”注释,它只按规范重排位置
Sublime Text 里没有插件能真正“规范化”XML注释(比如统一缩进、对齐、合并或提取),XML Tools 的 Pretty Print (XML) 命令只是把 <!-- comment --> 当作普通文本节点解析并重排缩进——它不识别注释语义,也不保留原始偏移。你看到注释被移到新行、缩进变深、甚至跨标签错位,不是 bug,是插件严格遵循 XML 解析器行为的结果。
常见现象包括:
- 单行注释
<!-- foo -->可能被拆成三行:<!-- foo -->
- 嵌套在标签内的注释(如
<tag><!-- a -->text</tag>)会被拉到父标签缩进层级,脱离原上下文 - 连续多个注释块可能被合并空行或打散,无法预测
Indent XML 插件对注释完全无感知,只做机械缩进
Indent XML 更简单粗暴:它不解析 XML 结构,只靠正则匹配 和 <code>/> 符号加空格。这意味着:
-
<!-- comment -->被当作普通字符串处理,缩进仅取决于前后标签的嵌套深度 - 注释内部换行、缩进、对齐全无控制——它不会主动加空格,也不会删空格
- 如果注释前是自闭合标签(如
<img alt="Sublime插件规范化XML注释的整理方法" ><!-- c -->),它可能把注释顶到上一行末尾,破坏可读性 - 不校验 XML 合法性,所以即使文件里有裸露的
&或未闭合标签,它照样缩进,但结果不可信
真要控制注释格式,得绕开 Sublime 插件
Sublime 的 XML 插件都不提供注释专用配置项。XML Tools 没有 comment_indent 或 preserve_comment_position 这类设置;Indent XML 根本不区分注释和其他文本。想达成“规范化”效果,必须换工具链:
- 用
xmllint --format:它保留注释原位置,只调整缩进,且不展开CDATA,适合轻量整理 - 用 Python 脚本预处理:例如用
xml.etree.ElementTree加载后遍历Comment节点,手动插入/对齐/补空行 - 大文件或 CI 场景下,直接写 Makefile 或 shell 脚本调
xmllint,比依赖 Sublime 稳定得多
最易忽略的一点:如果你的 XML 里混用了 <!--[if IE]>...<![endif]--> 这类条件注释,所有 Sublime 插件都会把它当普通注释乱排——这类结构本就不属于标准 XML,任何“规范化”动作都可能破坏语义。

















