最稳定可靠的插件是 ocaml(作者:darioteixeira),它支持语法高亮、ocamlbuild/dune构建集成及基础跳转,兼容sublime text 4,需通过package control安装并手动启用构建系统。

装哪个插件才真正支持 OCaml 语法和构建?
Sublime 本身不带 OCaml 支持,得靠第三方插件,但不是所有叫 “OCaml” 的插件都靠谱。目前最稳定、更新活跃的是 OCaml(作者:darioteixeira),它提供语法高亮、ocamlbuild / dune 构建集成、基础跳转,且兼容 Sublime Text 4。别装 OCamlSublime 或老旧的 SublimeOCaml——它们要么已停止维护,要么只支持 ST2/ST3 且不兼容 LSP。
- 插件必须通过 Package Control 安装,手动放
Packages/ 目录容易缺依赖
- 安装后默认不启用构建系统,需手动选中:按
Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入 Build With: OCaml 并回车
- 若文件后缀是
.ml 或 .mli,语法高亮应自动生效;否则右下角点击语法名 → 选择 OCaml
为什么写完代码按 Ctrl+B 没反应?常见构建失败原因
构建失败通常不是插件问题,而是环境没对齐。插件默认调用 ocamlbuild,但现代项目多用 dune,而插件不会自动识别 dune-project 文件。
- 确保终端里能直接运行
ocamlc --version 和 dune --version;若提示 command not found,请先用 opam 配置好环境,并在 Sublime 启动方式上注意:
- macOS:不要双击图标打开 Sublime,要从已加载 opam env 的终端运行
subl .
- Linux/Windows:检查
PATH 是否包含 opam 的 bin/(如 ~/.opam/default/bin)
- 插件的构建命令硬编码为
ocamlbuild $file_base_name.byte,若你用 dune build,需手动覆盖构建系统:菜单 → Tools → Build System → New Build System…,填入:
{
"shell_cmd": "dune build $file_base_name.exe",
"file_regex": "^(.*):([0-9]+):([0-9]+):",
"working_dir": "$file_path"
}
想补全函数或跳转定义,但插件不支持怎么办?
原生 OCaml 插件无语义补全和跳转能力,这是它的明确限制,不是配置错误。真需要这些功能,必须引入 LSP(Language Server Protocol)方案,即搭配 LSP 插件 + ocaml-lsp-server。
- 先装
LSP 插件(不是 LSP-json 或其他变体)
- 再通过 opam 安装服务端:
opam install ocaml-lsp-server
- 创建
LSP.sublime-settings(菜单 → Preferences → Package Settings → LSP → Settings),加入:
{
"clients": {
"ocaml-lsp": {
"command": ["ocaml-lsp-server"],
"enabled": true,
"languageId": "ocaml",
"scopes": ["source.ocaml"],
"syntaxes": ["Packages/OCaml/OCaml.sublime-syntax"]
}
}
}
- 注意:
ocaml-lsp-server 要求项目根目录有 dune-project 或 merlin 配置,否则无法加载上下文
Mac 上路径权限和 shell 初始化经常被忽略
macOS Catalina 及以后版本,Sublime 从 Dock 启动时用的是非交互式 shell,读不到 ~/.zshrc 里的 opam 初始化段,导致 ocaml、dune 命令找不到。
- 不要试图改
/etc/shells 或重装 shell,简单做法是:把 opam 初始化代码(通常是 eval $(opam env))复制到 ~/.zprofile —— 这是 GUI 应用能读到的唯一 shell 配置文件
- 验证方法:在 Sublime 里按
Ctrl+` 打开内置 Python 控制台,执行 import os; os.environ.get('PATH'),看输出是否含 ~/.opam/default/bin
- 如果用了 fish shell,LSP 插件可能无法正确解析
opam env 输出,建议临时切到 zsh 测试,确认功能再回调
Packages/ 目录容易缺依赖Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入 Build With: OCaml 并回车.ml 或 .mli,语法高亮应自动生效;否则右下角点击语法名 → 选择 OCaml
ocamlbuild,但现代项目多用 dune,而插件不会自动识别 dune-project 文件。
- 确保终端里能直接运行
ocamlc --version和dune --version;若提示 command not found,请先用 opam 配置好环境,并在 Sublime 启动方式上注意:- macOS:不要双击图标打开 Sublime,要从已加载 opam env 的终端运行
subl . - Linux/Windows:检查
PATH是否包含 opam 的bin/(如~/.opam/default/bin)
- macOS:不要双击图标打开 Sublime,要从已加载 opam env 的终端运行
- 插件的构建命令硬编码为
ocamlbuild $file_base_name.byte,若你用dune build,需手动覆盖构建系统:菜单 →Tools → Build System → New Build System…,填入:
{
"shell_cmd": "dune build $file_base_name.exe",
"file_regex": "^(.*):([0-9]+):([0-9]+):",
"working_dir": "$file_path"
}
想补全函数或跳转定义,但插件不支持怎么办?
原生 OCaml 插件无语义补全和跳转能力,这是它的明确限制,不是配置错误。真需要这些功能,必须引入 LSP(Language Server Protocol)方案,即搭配 LSP 插件 + ocaml-lsp-server。
- 先装
LSP 插件(不是 LSP-json 或其他变体)
- 再通过 opam 安装服务端:
opam install ocaml-lsp-server
- 创建
LSP.sublime-settings(菜单 → Preferences → Package Settings → LSP → Settings),加入:
{
"clients": {
"ocaml-lsp": {
"command": ["ocaml-lsp-server"],
"enabled": true,
"languageId": "ocaml",
"scopes": ["source.ocaml"],
"syntaxes": ["Packages/OCaml/OCaml.sublime-syntax"]
}
}
}
- 注意:
ocaml-lsp-server 要求项目根目录有 dune-project 或 merlin 配置,否则无法加载上下文
Mac 上路径权限和 shell 初始化经常被忽略
macOS Catalina 及以后版本,Sublime 从 Dock 启动时用的是非交互式 shell,读不到 ~/.zshrc 里的 opam 初始化段,导致 ocaml、dune 命令找不到。
- 不要试图改
/etc/shells 或重装 shell,简单做法是:把 opam 初始化代码(通常是 eval $(opam env))复制到 ~/.zprofile —— 这是 GUI 应用能读到的唯一 shell 配置文件
- 验证方法:在 Sublime 里按
Ctrl+` 打开内置 Python 控制台,执行 import os; os.environ.get('PATH'),看输出是否含 ~/.opam/default/bin
- 如果用了 fish shell,LSP 插件可能无法正确解析
opam env 输出,建议临时切到 zsh 测试,确认功能再回调
LSP 插件(不是 LSP-json 或其他变体)opam install ocaml-lsp-server
LSP.sublime-settings(菜单 → Preferences → Package Settings → LSP → Settings),加入:ocaml-lsp-server 要求项目根目录有 dune-project 或 merlin 配置,否则无法加载上下文~/.zshrc 里的 opam 初始化段,导致 ocaml、dune 命令找不到。
- 不要试图改
/etc/shells或重装 shell,简单做法是:把 opam 初始化代码(通常是eval $(opam env))复制到~/.zprofile—— 这是 GUI 应用能读到的唯一 shell 配置文件 - 验证方法:在 Sublime 里按
Ctrl+`打开内置 Python 控制台,执行import os; os.environ.get('PATH'),看输出是否含~/.opam/default/bin - 如果用了 fish shell,LSP 插件可能无法正确解析
opam env输出,建议临时切到 zsh 测试,确认功能再回调
OCaml 在 Sublime 里跑起来不难,难的是让每个环节的环境上下文对齐——编译器、构建工具、LSP 服务、Shell 初始化,四者只要一个断链,就会表现为“没反应”或“找不到命令”。很多人卡在第二步就放弃了,其实问题往往不在插件本身。
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化 。Scala的Case Class及其内置的模式匹配相当于函数式编程语言中常用的代数类型(Algebraic Type)。 Scala课堂是Twitter启动的一系列讲座,用来帮助有经验的工程师成为高效的Scala 程序员。Scala是一种相对较新的语言,但借鉴了许多熟悉的概念。因此,课程中的讲座假设听众知道这些概念,并展示了如何在Scala中使用它们。我们发现










