sublime text 默认不支持 wat 文件高亮,需手动绑定 .wat(及 .wast、.wat)后缀到 wat 语法,并在 brackethighlighter、折叠设置及 lsp 中显式添加 source.wat 作用域;自定义指令或注释需修改 wat.sublime-syntax 文件并重载语法定义。

Sublime Text 默认不支持 WAT 文件高亮,装完插件后右下角仍显示 Plain Text,说明语法绑定没走通——不是插件坏了,是 Sublime 根本没把文件当 WAT 处理。
为什么 .wat 文件打开还是黑白?先检查语法绑定是否生效
WAT 插件(mab851 版)只在文件被识别为 source.wat 作用域时才触发高亮。默认情况下它只认 .wat 后缀,但不会自动关联;如果你双击打开一个 .wat 文件,状态栏仍显示 Plain Text,就证明绑定失败。
必须手动补这一步:
- 打开任意
.wat文件 → 点击右下角Plain Text→ 选择WAT → WAT - 再点击右下角语言名 →
Open all with current extension as…→ 再选一次WAT - 如果还有
.wast文件,对它重复上述操作(.wast不在默认绑定列表里)
注意:.WAT(大写)和 .wat 是两个扩展名,Sublime 区分大小写,得分别绑定。
括号不匹配、代码块无法折叠?根源在作用域名没对上
高亮变色了但 () 不配对、module 块不能折叠,大概率是其他插件或 Sublime 自身没识别 source.wat 这个作用域。
常见卡点:
-
BracketHighlighter默认不监听source.wat,需在它的用户设置里显式加入:"source.wat"到scope_brackets或bracket_styles中 - 折叠依赖 Sublime 的
fold_by_level规则,而原生不支持source.wat;可在该文件的语法专属设置中加:{ "fold_by_level": true } - 某些 LSP 客户端(如
lsp-wasmparser)也靠source.wat触发,作用域错一个字母(比如写成source.webassembly)就直接静默失效
怎么让非 .wat 文件也用 WAT 高亮?别依赖自动检测
粘贴一段 (module (func)) 就自动切到 WAT 模式?WAT 插件不提供内容嗅探,Sublime 也不支持基于内容的语法切换(不像 VS Code 的 onLanguage:source.wat)。强行配置效果极差,不如用快捷方式。
更可靠的做法:
- 临时切换:按
Ctrl+Shift+P→ 输入Set Syntax: WAT→ 回车(当前文件立即生效) - 绑定冷门后缀:比如项目里有
.wat.in或无后缀的 WAT 片段,可编辑Packages/User/Preferences.sublime-settings,加一条:"syntaxes": [ { "extensions": ["wat.in"], "syntax": "Packages/WAT/WAT.sublime-syntax" } ] - 慎用“根据内容识别”:有人改
WAT.sublime-syntax加first_line_match,但 Sublime 对多行正则支持弱,且会拖慢大文件加载
自定义指令或注释风格?直接改 .sublime-syntax 文件
默认 WAT 插件只覆盖标准指令(func、local.get)、基础类型(i32、f64)和括号结构。如果你在用自定义指令(如 simd.f32x4.add)或特殊注释(;;@debug),得手动加规则。
操作路径:
- 菜单 →
Preferences → Browse Packages…→ 进入WAT/目录 - 打开
WAT.sublime-syntax,搜索instruction或comment - 在
contexts:下的main:里插入新规则,例如:- match: \b(simd\.[a-z0-9.]+)\b scope: support.function.wat
- 保存后按
Ctrl+Shift+P→Reload Syntax Definitions,否则修改不生效
注意:.sublime-syntax 是 YAML 格式,缩进必须用空格,且所有字段名(如 match、scope)大小写敏感;写错一个字符,整个语法定义就会静默失效,变成 Plain Text。











