sublime text 中 reasonml 和 rescript 语法高亮本质相同,需安装社区维护的 rescript-sublime 插件并正确配置 .re 和 .res 后缀,卸载旧插件、重启编辑器,且高亮仅支持关键字而非自定义符号。

ReasonML 和 ReScript 的语法高亮本质是同一个问题
Sublime Text 本身不原生支持 ReasonML 或 ReScript,但两者共享同一套语法定义(.re 文件),核心在于加载正确的 Syntax Definition。ReScript 官方已弃用旧的 reason-sublime 插件,现在唯一稳定可用的是社区维护的 rescript-sublime —— 它基于 Sublime 的 .sublime-syntax 格式重写,兼容 Sublime Text 4(Build 4126+)。
常见错误现象:Sublime Text 打开 .re 文件后全是白色文本,或错误识别为 Plain Text;手动选择 Reason 语法后关键词高亮错乱(比如 let 正常但 switch 不着色)。
- 必须卸载所有旧插件:
Package Control→Remove Package→ 清掉reason-sublime、reasonml、ocaml等冲突项 - 安装方式只认官方渠道:
Package Control→Install Package→ 搜索并安装rescript-sublime - 安装后需重启 Sublime,否则
.re文件不会自动关联该语法
如何让 .res 文件也高亮(ReScript 默认后缀)
rescript-sublime 默认只绑定 .re,而 ReScript 项目中大量使用 .res 后缀(尤其在 rescript.json 配置了 "suffix": ".res" 时)。不配这个,新建文件或打开 .res 就是纯文本。
操作路径:Preferences → Package Settings → rescript-sublime → Settings,在用户设置里加:
立即学习“前端免费学习笔记(深入)”;
{
"extensions": ["re", "res"]
}
注意:不是改插件源码里的 rescript.sublime-syntax,那是硬编码,每次更新会被覆盖;必须走这个配置入口。
- 如果用了
rescript.json且设了"suffix": ".res",但没加这行,rescript build能跑通,Sublime 就是不亮色 - 扩展名大小写敏感:
RES或.Res不会生效,只认小写.res - 改完设置后,已打开的
.res文件要右下角点击语言名 → 选ReScript手动触发一次
为什么有些函数/模块名不着色?这不是 bug,是设计限制
rescript-sublime 的语法高亮基于词法分析(regex),不解析 AST,所以它能标出 let、switch、type 这类关键字,但无法识别自定义模块名(如 MyModule.make)、函数名(如 Array.map)或类型别名(如 type t = int 中的 t)。
这不是配置问题,是 Sublime 语法系统的能力边界。对比 VS Code 的 Language Server,后者能实时查符号表,前者做不到。
- 如果你看到
React.useEffect全灰,别折腾配置——它本就不该高亮 - 想高亮
Js.Array这类平台模块?目前无解;插件没内置这些前缀白名单 - 性能影响极小:纯 regex 匹配,比 LSP 轻量得多,大文件也不卡
遇到 “Invalid syntax” 报错或高亮全崩怎么办
典型错误信息:Error loading syntax file "Packages/rescript-sublime/rescript.sublime-syntax": Unable to read Packages/rescript-sublime/rescript.sublime-syntax。基本等于插件文件损坏或路径被干扰。
根本原因通常是:Sublime 自动更新插件失败,或手动拖拽过插件文件夹导致结构错乱。
- 先尝试
Package Control → Satisfy Dependencies(尤其 Windows 用户常缺pywin32) - 不行就彻底重装:
Remove Package→ 关闭 Sublime → 手动删Packages/rescript-sublime文件夹(路径可通过Preferences → Browse Packages查看)→ 再Install Package - Mac/Linux 用户若用 symlink 指向本地开发版语法文件,确保
rescript.sublime-syntax顶层字段(如name、file_extensions)格式严格符合 YAML,多一个空格都会报错
最易被忽略的一点:Sublime 的语法缓存有时不刷新,哪怕你改对了配置,也要关掉所有窗口再重开,不能只重启进程。










