sublime text 需手动绑定 .xml 扩展名至 xml 语法并确保 xml 包未被禁用、xml.tmlanguage 文件存在且编码正确,否则仅显示 plain text 且高亮/折叠/格式化全部失效。

Sublime Text 本身不分析 XML 内容来决定语法,只靠扩展名或手动指定;要让 .xml 文件稳定识别为 XML,必须显式绑定扩展名或修复语法路径,否则右下角显示 Plain Text 就说明解析规则根本没加载。
确认并强制设置当前文件语法为 XML
这是最快验证是否“有语法解析”的一步:打开 XML 文件后,右下角若显示 Plain Text 或 HTML,说明 Sublime 没走 XML 解析流程。此时高亮、折叠、格式化全失效。
- 直接点击右下角语言标识 → 在弹出菜单中选
XML(注意不是XML (Text)或HTML) - 或按
Ctrl+Shift+P(Win/Linux)/Cmd+Shift+P(macOS),输入Set Syntax: XML回车 - 成功后右下角立刻变成带图标的
XML,且标签、属性、注释开始变色
把 .xml 扩展名永久绑定到 XML 语法
手动选一次只影响当前文件;要让所有 .xml 文件一打开就自动用 XML 语法,必须做扩展名绑定——这不是“开启自动识别”,而是告诉 Sublime:“凡后缀是 .xml 的,一律用这个语法”。
- 先确保当前文件已手动设为
XML(上一步做完) - 执行
View → Syntax → Open all with current extension as… → XML - 该操作会写入
Packages/User/XML.sublime-settings,内容类似:{"syntax": "Packages/XML/XML.tmLanguage"} - 如果没看到
XML在菜单里,说明XML语法包被禁用或损坏,需检查ignored_packages
检查 ignored_packages 是否误禁了 XML 语法包
很多人装插件时顺手禁用了默认包,结果把内置的 XML 包也关掉了——这时即使扩展名对、声明也对,依然显示 Plain Text。
- 打开
Preferences → Settings,左右对比:ignored_packages在用户设置(右侧)里是否包含"XML" - 如果有,删掉它(注意逗号和引号格式),保存
- 然后必须执行
Ctrl+Shift+P → Reload Syntax Definitions,不重载就不会生效 - 重启 Sublime 不是必须的,但重载语法定义这步跳不过
验证 XML.tmLanguage 文件是否存在
绑定扩展名只是“指路”,真正干活的是 XML.tmLanguage 这个语法定义文件。它丢了或路径错,绑定就成空谈。
- 执行
Preferences → Browse Packages…,进入Packages/XML/目录 - 确认里面有
XML.tmLanguage(Sublime Text 4 可能是XML.sublime-syntax,但路径仍是Packages/XML/) - 如果缺失,可从另一台正常机器复制,或重装 Sublime 默认包(不卸载用户数据)
- 第三方 XML 插件(如 XML Tools)通常不替换原生语法包,所以优先修原生路径
最常被忽略的一点:语法绑定和文件编码是两件事。哪怕 .xml 已正确关联 XML 语法,如果文件是 GBK 编码或带 BOM 的 UTF-8,Sublime 仍可能解析失败、报 UnicodeDecodeError,此时语法高亮会突然消失——得先处理编码,再谈解析规则。











