Sublime如何配置ReasonML/ReScript语法高亮?(函数式前端)

1次阅读

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

Sublime如何配置ReasonML/ReScript语法高亮?(函数式前端)

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 ControlRemove Package → 清掉 reason-sublimereasonmlocaml 等冲突项
  • 安装方式只认官方渠道:Package ControlInstall 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,所以它能标出 letswitchtype 这类关键字,但无法识别自定义模块名(如 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 顶层字段(如 namefile_extensions)格式严格符合 YAML,多一个空格都会报错

最易被忽略的一点:Sublime 的语法缓存有时不刷新,哪怕你改对了配置,也要关掉所有窗口再重开,不能只重启进程。

text=ZqhQzanResources