XML Tools和Red Hat XML插件二选一,装插件、设默认格式化器、开保存自动格式化三步缺一不可;右键无“Format Document”需手动绑定格式化器并确认语言模式为XML,配置项前缀(xmlTools.或xml.)错误将导致静默失效。

装插件、设默认格式化器、开保存自动格式化——三步做完就能用,缺一不可。
XML Tools 和 Red Hat XML 插件选哪个
两个都行,但行为差异大,不能混用:
• DotJoshJohnson.xml(XML Tools)轻量、快、保留注释和 CDATA、不重排属性顺序,适合 .config、.csproj 这类简单配置文件
• redhat.vscode-xml 功能全、支持 XSD 校验和 XPath 补全,但启动略慢,对带命名空间或 <import> 的复杂 XML 更稳
• 同时装了两个?VS Code 可能随机选一个,导致格式化结果不一致。建议只留一个,并在设置里明确指定
右键没“Format Document”或快捷键无效
这不是插件坏了,是 VS Code 没把格式化器绑定到 XML 语言模式:
• 确认当前文件右下角状态栏显示的是 XML (Red Hat) 或 XML (XML Tools),不是 XML 或 Plain Text;点它手动切换
• 打开命令面板(Ctrl+Shift+P),运行 Format Document With...,选中对应插件后点 Set as Default
• 或直接在 settings.json 里加语言特定配置:
{ "[xml]": { "editor.defaultFormatter": "DotJoshJohnson.xml" } }(XML Tools)或{ "[xml]": { "editor.defaultFormatter": "redhat.vscode-xml" } }(Red Hat)
缩进错乱、属性挤成一行、换行不按预期
默认配置往往不匹配项目习惯,必须显式设参数:
• xmlTools.format.indentSize(XML Tools)或 xml.format.indentSize(Red Hat)控制缩进空格数,值必须是正整数(如 4),字符串 "4" 会失效
• xmlTools.format.splitAttributes(XML Tools)或 xml.format.splitAttributes(Red Hat)决定属性是否每行一个;true 或 "force" 都可生效
• xmlTools.format.preserveComments 建议设为 true,避免注释被错位或吞掉
• 注意:XML Tools 的配置项前缀是 xmlTools.,Red Hat 的是 xml.,写错前缀就等于没配
保存时自动格式化不触发
VS Code 的 editor.formatOnSave 是全局开关,但 XML 插件各自有独立开关:
• 先确认全局 editor.formatOnSave 已开启
• 再单独启用插件的保存格式化:
– XML Tools:设 xmlTools.format.enableOnSave 为 true
– Red Hat:设 xml.format.enableOnSave 为 true
• 如果仍不生效,临时验证方式:手动执行 Format Document With → XML Tools(或 Red Hat),能成功说明格式化器本身没问题,问题出在触发链上
最容易被忽略的是语言模式识别和配置项前缀——哪怕只差一个字母,比如把 xmlTools. 写成 xml.,整个配置就静默失效。


















