sublime text 默认不支持 xml 格式化,需安装 xml tools 插件;格式化失败多因 xml 语法错误或编码问题;大文件建议用 xmllint;缩进与注释控制需借助 prettier 或脚本。

Sublime Text 本身不支持 XML 格式化,必须靠插件或外部命令;没有“开箱即用”的快捷键,也没有 Settings 里能调出来的选项——这不是你配置漏了,是它真没这个功能。
怎么装真正能用的 XML 格式化插件
别搜 Pretty JSON 或随便点个叫 XML Formatter 的插件,大概率报错或根本没反应。唯一被长期验证、兼容 Sublime Text 4 且维护活跃的是 XML Tools:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Install Package,回车 - 等列表加载完,输入
XML Tools,选中安装 - 安装后打开一个
.xml文件,右下角状态栏点击语法名,确认显示的是XML(不是Plain text或HTML) - 格式化快捷键默认是
Ctrl+Alt+Shift+P(Win/Linux)或Cmd+Alt+Shift+P(macOS)
如果按了没反应,先打开命令面板搜 XML Tools: Pretty Print,看是否在列表里——不在说明插件没加载成功,重启 Sublime 或重装一次。
为什么一格式化就报错“not well-formed”
这不是插件坏了,是 XML 文件本身有硬伤。常见原因包括:
- 裸露的
&字符,比如price=10&20,必须写成price=10&20 - 属性值没加引号:
<node id="123"></node>应为<node id="123"></node> - 标签没闭合:
<item><name>abc</name></item>后面缺 - 文件开头有 BOM(尤其 Windows 记事本另存的 UTF-8),导致解析器直接拒读
验证方法:把内容粘到 xmlvalidation.com,或终端跑一句:python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')"。报错位置就是你要修的地方。
大文件卡死、乱码、注释错位怎么办
XML Tools 是内存全量加载解析,对文件大小和编码极其敏感:
- 超过 2MB 就容易卡住甚至无响应,建议改用命令行:
xmllint --format input.xml > output.xml(需提前装libxml2) - 乱码基本等于编码不匹配:用 Sublime 菜单
File → Reopen with Encoding → UTF-8,再Save with Encoding → UTF-8,同时检查 XML 声明里encoding="UTF-8"是否一致 - 注释位置偏移、
被展开、自闭合标签变成双标签(<img>→<img>),这些是XML Tools内置行为,无法关闭——它不提供保留策略开关
如果你需要可控缩进(比如 4 空格)、保留注释原位、不碰 CDATA,就得绕过插件,走 prettier + prettier-plugin-xml,或者自己写个脚本调 xmllint 并传参控制行为。
要不要装 Indent XML 插件
可以装,但得清楚它的限制:
- 只支持 2 空格缩进、强制换行,不能设成 4 空格,也不能保持单行标签如
<link rel="stylesheet" href="x.css"> - 不处理 DTD/XSD 校验,也不报错提示语法问题,格式化失败时静默跳过
- Windows 上偶尔因路径空格或 PowerShell 执行策略报错,错误信息藏在 Sublime 控制台(
Ctrl+`)里
它适合快速清理小文件、对格式要求宽松的场景;一旦你开始纠结缩进风格、注释位置或 schema 兼容性,XML Tools 或外部命令才是更稳的选择。











