sublime text 不支持 .wasm 二进制文件语法高亮,应使用 wasm2wat 转为 .wat 文本格式后,通过 wat 插件绑定 source.wat 作用域实现正确高亮、折叠与括号匹配。

Sublime Text 本身不支持 WebAssembly 二进制格式(.wasm)的语法高亮 —— 它不是文本,没法“高亮”;你真正需要的是 .wat(WebAssembly Text Format)文件的高亮,而不是 .wasm。
为什么 .wasm 文件打不开或全是乱码?
.wasm 是二进制文件,不是人类可读文本。Sublime 默认用 UTF-8 解码它,遇到非法字节序列就会显示、乱码或直接卡住。这不是插件问题,是文件类型根本不对路。
- 打开 .wasm 文件时右下角显示
Binary或Hexadecimal(如果有 HexViewer 插件),说明 Sublime 已识别它是二进制 —— 这是正常行为 - 若显示
Plain Text却满屏 字符,说明 Sublime 强行尝试 UTF-8 解码失败,应避免双击打开 .wasm - 真要查看 .wasm 内容,用
wabt工具转成 .wat:wat2wasm hello.wat -o hello.wasm/wasm2wat hello.wasm -o hello.wat
如何正确配置 .wat 文件高亮?
WAT 是纯文本,但 Sublime 默认不识别 .wat 后缀,必须手动绑定语法作用域 source.wat。只装插件不够,关键在绑定是否生效。
- 用 Package Control 安装
WAT插件(作者 mab851),安装后重启 Sublime - 打开任意
.wat文件,右下角若仍显示Plain Text,点击它 → 选WAT→ 再点击右下角 →Open all with current extension as…→ 选WAT - 对
.wast(旧测试格式)和.WAT(大写)需重复上述操作 —— Sublime 区分大小写,.WAT≠.wat - 括号不匹配、无法折叠?检查状态栏是否真显示
WAT;若显示Plain Text,说明作用域仍是text.plain,所有高级功能(折叠/括号高亮/注释着色)都不会触发
WAT 高亮失效但右下角显示 WAT?检查 scope 是否被覆盖
即使右下角显示 WAT,也可能因主题或其它插件干扰导致实际作用域不是 source.wat。最准验证方式是看光标所在词的 scope:
- 把光标停在
func或local.get上,按Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS) - 输入
Developer: Show Scope Name回车,输出里必须含source.wat—— 若只有text.plain或source.asm,说明绑定失败或被其它插件劫持 - 常见干扰:某些 LSP 插件或 BracketHighlighter 若未显式添加
source.wat到scopes列表,括号匹配会失效 - 解决方法:在对应插件设置中补上
"source.wat",例如 BracketHighlighter 的bracket_styles配置需加一行"scope": "source.wat"
真正容易被忽略的点是:WAT 插件不提供 .wasm 支持,也不该提供;所有试图让 .wasm “高亮”的方案,本质都是绕过二进制限制去解析它 —— 这既不可靠,也违背工具定位。老老实实把 .wasm 转成 .wat 再编辑,才是稳定路径。











