sublime text格式化xml失败的主因是未安装或未启用xml tools插件;需通过package control安装、重启并确认右键菜单出现“xml tools → pretty print”,否则插件未加载成功。

XML格式化失败:没装插件或插件没启用
Sublime Text 默认不带 XML 格式化能力,直接按 Ctrl+Shift+P 搜 XML 基本找不到可用命令。必须先装插件,且要确认它已启用。
- 推荐插件是
XML Tools(作者:tomv564),在 Package Control 里搜安装即可 - 装完重启 Sublime 或手动执行
Preferences → Package Settings → XML Tools → Settings,确认没有报错 - 如果右键菜单里没出现
XML Tools → Pretty Print,说明插件未加载成功,可查Console(Ctrl+`)里是否有ImportError或路径错误
大文件卡死或格式化后乱码
XML Tools 的 Pretty Print 默认用 Python 的 xml.etree.ElementTree 解析,对含 BOM、编码声明不一致、或超 10MB 的文件极易崩溃或丢字符。
- 先用
File → Reopen with Encoding → UTF-8强制指定编码,避免解析时误判 - 若文件含
(零宽空格)或(BOM),建议先用正则[\u200B-\u200D\uFEFF]替换为空 - 超过 5MB 的 XML,别用
Pretty Print,改用命令行工具:在终端运行xmllint --format input.xml > output.xml(需提前装xmllint)
格式化后缩进错乱或属性换行异常
XML Tools 的默认缩进是 2 空格,且不支持保留属性顺序、不处理 CDATA 块内换行——这些不是 bug,是设计限制。
- 修改缩进:打开
Preferences → Package Settings → XML Tools → Settings – User,加一行:"indent": 4 - 属性不换行:默认行为就是把所有属性塞在同一行;如需每属性一行,得用
XML Tools → Reindent XML(但仅对已格式化的文档有效) - CDATA 内容被破坏:务必在格式化前手动选中 XML 主体(避开
区域),再执行Pretty Print
和 VS Code 或 Notepad++ 对比,为什么 Sublime 还值得用
不是“更好”,而是“更可控”:Sublime 的 XML Tools 不自动联网、不收集数据、插件逻辑透明——你删掉 Packages/XML Tools/ 目录就彻底干净,不像某些编辑器把格式化逻辑藏在闭源扩展里。
- 调试方便:想看它怎么解析,直接打开
Packages/XML Tools/xmltools.py,搜etree.parse就能找到核心调用 - 可嵌入自定义脚本:比如需要按特定 schema 重排元素顺序,写个
sublime_plugin.TextCommand调用lxml即可,不依赖 GUI 配置 - 真正麻烦的从来不是格式化本身,而是混合了 DTD、XSD 引用、命名空间前缀冲突的 XML——这类文件,Sublime + 手动分段处理,反而比全自动工具更稳











