xml tools 是唯一真正解析 xml 结构并按 dom 缩进的 sublime 插件,需通过 package control 安装、设为 utf-8 编码、语法选带图标 xml,否则格式化失败;其行为由硬编码规则决定,不支持细粒度配置,大文件建议换用 xmllint。

装对插件比调参数重要得多——XML Tools 是目前唯一能真正解析结构、按 DOM 层级缩进的 Sublime XML 格式化方案,其他名字带 “XML” 的插件大概率只做换行,甚至把 <img> 错闭合成 <img>。
怎么确认装的是真 XML Tools(不是名字像的假货)
搜 “XML Formatter”“Pretty XML”“Beautiful XML” 这类插件基本白装:它们不走 XML 解析器,只靠正则加换行,遇到 ]]> 或属性含 & 就直接崩。唯一靠谱的是官方维护的 XML Tools:
- 必须通过
Package Control: Install Package安装,不能拖 .zip 进Packages/目录 - 装完重启 Sublime,或手动执行
Package Control: Satisfy Dependencies(部分 Linux/macOS 环境必需) - 按
Ctrl+Shift+P搜XML Tools: Pretty Print (XML),能出现且可执行才算到位 - 右下角状态栏点开语法菜单,必须选中带图标的
XML,不是XML (Text)或HTML
格式化没反应?90% 卡在编码或语法上
快捷键 Ctrl+Alt+Shift+P(Win/Linux)或 Cmd+Alt+Shift+P(macOS)只是触发器,它不工作不代表插件坏了,而是前置校验失败:
- 文件编码必须是无 BOM 的 UTF-8:菜单
File → Reopen with Encoding → UTF-8,再Save with Encoding → UTF-8 - 开头不能有隐藏字符(如 Windows 记事本存的 BOM、
\x00),否则报UnicodeDecodeError - 裸露的
&(如price=10&20)必须写成&,否则直接触发XML Parse Error - 标签必须闭合、属性值必须加引号,用
python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')"可快速定位硬伤
缩进错乱、注释跑偏、CDATA 被展开,不是 bug 是设计
XML Tools 不提供细粒度开关,它的行为由内置规则硬编码决定。你看到的“问题”,其实是它严格遵循 XML 规范的默认表现:
- 缩进只认
"indentation_size": 2(数字,写成"2"会失效),不支持 Tab 或混合缩进 -
"preserve_whitespace": false才允许重排空行;设为true反而让缩进更乱 - 注释位置偏移、
被展开成纯文本,无法关闭——这是插件主动保留原始语义的结果 - 属性不会自动排序,长属性也不会折行;需要这类控制,得换
xmllint --format或 Python 脚本
大文件卡死、中文变问号、DOCTYPE 消失,说明该切工具链了
XML Tools 是内存全量加载,不是流式处理。一旦超出它舒适区,“一键美化”就变成风险操作:
- 500KB 以内基本稳;超过 2MB 就可能卡住 10 秒以上,甚至触发 Sublime 无响应警告
- 中文变问号 = 编码没切对,不是插件问题;确认已
Reopen with Encoding → UTF-8,且 XML 声明里encoding="UTF-8"一致 - 大文件建议用外部命令:
xmllint --format input.xml > output.xml(需提前装libxml2) - 如果要保留 DOCTYPE、注释位置、CDATA 原始结构,格式化前务必备份原始段落——这些都不是配置能救回来的











