sublime text 本身不运行 erlang,配置环境需三步:确保.erl文件正确高亮、ctrl+b调用erlc编译、终端用erl加载测试;前提为终端中erlc -v和erl -version有输出,且必须安装官方erlang插件并手动配置构建系统。

Sublime Text 本身不运行 Erlang,也不自带 Erlang 支持;所谓“配置环境”,就是三件事:让 .erl 文件正确高亮、让 Ctrl+B 能调用 erlc 编译、让终端里能用 erl 加载测试——缺一不可,且顺序不能乱。
怎么确认 erlc 和 erl 已就位?
这是所有后续操作的前提。Sublime 的构建系统本质是执行 shell 命令,如果终端里都找不到 erlc 或 erl,Sublime 肯定也调不动。
- 在终端运行
erlc -v和erl -version,必须有输出(如Erlang/OTP 26) - macOS 用
brew install erlang通常自动进 PATH;Windows 安装时没勾选 “Add to PATH” 就得手动把C:Program Fileserl-25.3in加进系统环境变量 - Linux 用户若用
asdf,需确保asdf global erlang ref已设,并在终端中验证which erlc有返回 - 别跳过这步去配 Sublime 构建系统——很多“没反应”问题根源都在这里
为什么装了插件还是没语法高亮?
因为装错了插件,或没激活语法映射。Sublime 默认不识别 .erl 后缀,必须靠插件补全,但社区里名字带 “Erlang” 的插件有好几个,只有官方维护的 Erlang(作者是 erlang-editors)能稳定支持 OTP 24+ 新语法(比如 -spec fun/0)。
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package - 搜索
Erlang,只选 GitHub 地址为https://github.com/erlang-editors/sublime-erlang的那个 - 安装后打开一个
.erl文件,右下角应显示Erlang;若仍是Plain Text,右键 →Set Syntax → Erlang → Erlang手动切换一次,之后会自动识别 - 装错插件(如已停更的
Erlang Language Support)会导致保存时误删空行、-spec解析失败
Build System 怎么写才不报错?
Sublime 没有默认 Erlang 构建系统,必须手动新建。关键不是“能不能编译”,而是编译结果是否落在正确位置、错误能否准确定位到行号、模块依赖是否可解析。
- 菜单栏 →
Tools → Build System → New Build System… - 粘贴以下内容并保存为
Erlang.sublime-build(路径自动为Packages/User/):
{
"cmd": ["erlc", "$file"],
"file_regex": "^(.+):([0-9]+):([0-9]+):.*$",
"working_dir": "$file_path",
"selector": "source.erlang"
}
-
$file是完整路径(如/home/user/proj/test.erl),$file_path是目录(/home/user/proj)——必须设working_dir,否则erlc可能找不到-include的.hrl或生成.beam到错误位置 - Windows 用户若
erlc在带空格路径(如C:Program Fileserl-25.3in),建议复制erlc.exe到无空格路径(如D:erlanginerlc.exe),然后把"cmd"改成["D:\erlang\bin\erlc.exe", "$file"] - 别用
shell_cmd:它在 macOS/Linux GUI 环境下常继承不到 shell 的 PATH,直接写cmd数组更可靠
为什么 Ctrl+B 编译完却没法在 Sublime 里运行?
因为 Sublime 不是 IDE,没有内置 Erlang 运行时。所谓“运行”,实际是两步:先用 erlc 编译出 .beam,再用 erl 加载执行——而第二步必须在终端里手动做,插件封装的“一键运行”往往卡在路径、cookie、应用启动顺序上,反而增加调试成本。
- 编译成功后,打开终端,
cd到你的源码目录(即.erl所在目录) - 运行
erl -pa .进入 shell(-pa .让 Erlang 在当前目录找.beam) - 在 shell 中执行
c(module_name).(注意末尾点号),返回{ok, module_name}即加载成功 - 再调用函数:
module_name:function().—— 这才是真实执行环境,和生产部署一致 - 模块若依赖其他
.beam,确保它们也在-pa指定路径下;不要指望插件自动处理多级src/或_build/目录结构
rebar3 项目同理:纯 erlc 构建只适用于单文件测试;真实并发系统(含 gen_server、supervisor)必须用 rebar3 compile,需额外写 shell/batch 脚本调用,Sublime 构建系统本身不感知 rebar.config。











