sublime text 原生不支持 xml 格式化,必须安装插件;唯一真正可靠、开箱即用且持续维护的是 xml tools——它专为 xml 设计,能保留注释和 cdata、不重排属性顺序、识别编码并精准报错,而其他插件普遍存在语义破坏或功能失效问题。

Sublime Text 原生不支持 XML 格式化,必须装插件;唯一真正可靠、开箱即用且持续维护的是 XML Tools —— 其他插件要么报错,要么破坏语义,要么根本没反应。
为什么只有 XML Tools 是首选
它专为 XML 设计,不是通用格式化器的“捎带支持”。HTML-CSS-JS Prettify 会把 <img> 强行展开成 <img>,Pretty JSON 直接报 Invalid JSON string,Indent XML 不校验语法、缩进不可调、连快捷键都要手动配。而 XML Tools 能:保留注释和 CDATA、不重排属性顺序、识别编码、报错时指出是哪一行哪类问题(比如 not well-formed (invalid token))。
安装路径极简:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Install Package回车 - 等列表加载完,输入
XML Tools,回车安装 - 安装后无需重启,但需确认当前文件被识别为
XML(右下角状态栏点开选XML,不是Plain text或XML (Text))
XML Tools 格式化失败的三个高频原因
点了 Ctrl+Alt+Shift+P 没反应,或者弹窗报错,大概率不是插件问题,而是文件本身过不了基础解析关:
-
&字符裸露:比如price=10&20必须写成price=10&20,否则xml.parsers.expat.ExpatError直接中断 - 属性值没加引号:
<node id="123"></node>是非法的,必须是<node id="123"></node>或<node id="123"></node> - 文件带 BOM 或编码不匹配:Windows 记事本另存的 UTF-8 常含 BOM,导致
UnicodeDecodeError;解决方法是菜单File → Reopen with Encoding → UTF-8,再Save with Encoding → UTF-8
验证是否合法最快速的方式:python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')" —— 报错信息比 Sublime 弹窗更具体。
怎么让格式化结果符合你的缩进习惯
XML Tools 默认用 2 空格缩进,但可改。打开 Preferences → Package Settings → XML Tools → Settings,修改以下字段:
-
"indent_size": 4→ 改成 4 空格 -
"indent_with_tabs": true→ 改用 Tab 缩进(注意:这会覆盖indent_size) -
"expand_entities": true→ 让<这类实体在格式化后显示为(仅当需要时开启)
别碰 Indent XML 的配置——它硬编码缩进为 2 空格,且不响应这些设置。
大文件或特殊场景下的替代方案
超过 2MB 的 XML(比如数据库 dump 或日志快照),XML Tools 容易卡死甚至崩溃,这时该切到命令行:
- macOS/Linux:确保已装
xmllint(brew install libxml2或系统自带),终端执行:xmllint --format --encode utf-8 yourfile.xml > formatted.xml - Windows:下载
xmllint.exe,加入 PATH,同样用上述命令 - Sublime 内部调用:在
Tools → Build System → New Build System中写入:{"cmd": ["xmllint", "--format", "--encode", "utf-8", "$file"], "selector": "source.xml"}保存后按Ctrl+B即可
这个方式不依赖插件加载、不卡 UI、能处理任意大小文件,但不会保留注释位置和 CDATA 块原样——如果这两点对你关键,还是得回到 XML Tools 并分段操作。
最后提醒一句:XML 格式化前,永远先确认语法合法、编码干净、文件不大。这三个条件漏掉任何一个,后面所有快捷键和设置都白搭。











