indent xml插件需手动配置快捷键且不监听保存事件,格式化失败多因xml语法错误或语法识别不正确。

Indent XML 插件根本不会自动格式化 XML
装完插件不等于能用,它默认没绑定任何快捷键,也不监听保存事件。你右键菜单里找不到“Format XML”,Ctrl+Shift+P 里搜不到 Indent XML 命令——不是插件坏了,是压根没配置触发方式。
实操建议:
- 打开
Preferences → Package Settings → Indent XML → Key Bindings – User - 填入这段绑定(Windows/Linux):
[{"keys": ["ctrl+alt+i"], "command": "indent_xml"}] - macOS 用户把
ctrl换成super,即["super+alt+i"] - 确保 XML 文件的语法识别正确:右下角状态栏应显示
XML,不是Plain Text或HTML
XML 格式化失败常见报错:xml.parsers.expat.ExpatError
一按快捷键就弹窗报错,内容类似 not well-formed (invalid token),说明文件本身有语法硬伤,不是插件问题。
典型场景:
- 存在未闭合的标签,比如
<item><name>abc</name></item>后面缺 - 属性值没加引号:
<node id="123"></node>应为<node id="123"></node> - 用了非法字符,如裸露的
&(应写成&)或控制字符(Windows 记事本另存为时可能混入 BOM 或 \r\n 异常)
验证方法:把内容粘到在线校验工具(如 xmlvalidation.com),或用 Python 快速试跑:
python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')"Indent XML 不支持自定义缩进宽度和换行策略
它只认两个硬编码参数:缩进用 2 个空格,且所有标签强制换行(哪怕一行能塞下)。如果你习惯 4 空格、或想保持 <img src="x" alt="Sublime Text XML格式化快捷键 安装Indent XML插件进行排版" > 这种单行写法,它做不到。
替代方案有限但更可控:
- 改用
XML Tools插件(需额外安装),支持在Preferences → Package Settings → XML Tools → Settings里设"indent_size": 4 - 终端党可配
xmllint外部命令:xmllint --format --encode utf-8 %f
,再绑定到快捷键 - 注意:Sublime 的
XML语法高亮本身不校验嵌套,所以即使看着颜色对,也可能格式化失败
为什么改了 key binding 还是没反应?检查这三个地方
快捷键冲突、作用域限制、插件加载失败,三者占了 90% 的“点了没反应”案例。
- 按
Ctrl+Shift+P输入Indent XML,看命令是否出现在列表里;没出现说明插件没加载成功(重启 Sublime 或重装插件) - 在 XML 文件中按快捷键后,打开
Tools → Developer → Show Console,看是否有AttributeError或ImportError(常见于 Sublime 4 装了旧版 Indent XML) - 确认当前视图的语法模式是
XML:按Ctrl+Shift+P→ 输入Set Syntax: XML手动切换,避免从 .html 或 .jsp 文件里直接改后缀导致语法识别残留
真正卡住的点往往不在插件本身,而在 Sublime 对“当前文件属于什么类型”的判断逻辑里——它不看后缀名,而看第一行声明、BOM、甚至光标位置。







