XML Tools插件必须通过Package Control安装并满足编码、语法等前置条件才能正常格式化;其行为严格遵循XML规范,不支持细粒度配置,大文件或特殊需求应换用xmllint等工具。

XML Tools 插件必须装对,不是名字带“XML”就行
搜“XML Formatter”“Pretty XML”这类插件大概率白装——它们不解析结构,只粗暴加换行,甚至把<img src="x"/>错闭合成<img src="x"></img>,直接破坏语义。唯一经长期验证、兼容 Sublime Text 4 且持续维护的是 XML Tools:
- 必须通过
Package Control: Install Package安装,不能拖文件进Packages目录 - 装完重启 Sublime 或手动执行
Package Control: Satisfy Dependencies(部分系统必需) - 打开命令面板
Ctrl+Shift+P,搜XML Tools: Pretty Print (XML)能出现并可执行,才算到位 - 别装
Pretty JSON或HTML-CSS-JS Prettify,它们根本不管 XML 规范
格式化没反应?90% 是语法识别或编码卡在第一步
快捷键 Ctrl+Alt+Shift+P(Win/Linux)或 Cmd+Alt+Shift+P(macOS)只是个触发器,它不工作不代表插件坏了,而是前置条件没满足:
- 右下角状态栏必须显示纯
XML—— 点它 → 搜XML→ 选带图标的那个,不是XML (Text)或XML (Sublime) - 文件编码必须是无 BOM 的
UTF-8:菜单File → Reopen with Encoding → UTF-8,再Save with Encoding → UTF-8 - 开头不能有隐藏控制符(如
\x00)或 Windows 记事本存的带 BOM UTF-8,否则报UnicodeDecodeError - 裸露的
&(如price=10&20)会直接触发XML Parse Error,得先替换成&
缩进错乱、注释跑偏、CDATA 被展开,这不是 bug 是设计
XML Tools 不提供细粒度开关,它的格式化行为由内置规则硬编码决定。你看到的“问题”,其实是它严格遵循 XML 规范的默认表现:
- 调整缩进只靠
"indentation_size": 2(数字,不是字符串),写成"2"会失效 - 空行重排依赖
"preserve_whitespace": false;设为true反而让缩进更乱 - 注释位置偏移、
<![CDATA[...]]>被展开成纯文本,无法关闭——这是插件主动保留原始内容语义的结果,不是漏配置 - 属性不会自动排序,长属性也不会折行;想控制这个,得换
xmllint --format或写 Python 脚本调xml.etree.ElementTree
大文件卡死、中文变问号、DOCTYPE 消失,说明该切工具链了
XML Tools 是内存全量加载,不是流式处理。一旦超出它舒适区,所谓“一键美化”就变成风险操作:
- 500KB 以内基本稳;超过 2MB 就可能卡住 10 秒以上,甚至触发 Sublime 无响应警告
- 中文变问号 = 编码没切对,不是插件问题;确认已用
Reopen with Encoding → UTF-8且保存时也选了UTF-8 -
DOCTYPE消失是插件解析后重建 DOM 时的默认行为,不支持保留;若业务强依赖,必须用xmllint --format input.xml > output.xml - 含非法字符(如裸
&、\x00)时,插件只报错不定位行号;建议先用正则&(?!([a-zA-Z]+|#[0-9]+);)批量修复
真正麻烦的从来不是按哪个键,而是你是否清楚自己要的是“视觉对齐”还是“结构合规”——前者 XML Tools 能应付,后者它只认规范,不讲情面。

















