必须先确保终端中 erlc -v 和 erl -version 可执行并有输出,再安装官方 Erlang 插件(https://github.com/erlang-editors/sublime-erlang),最后在构建系统中显式指定 erlc 完整路径并设置 "working_dir": "$file_path"。

Sublime Text 不能“配置 Erlang 环境”,它只是编辑器;真正要做的,是让 erlc 和 erl 在终端可用,再让 Sublime 能调用它们编译、加载、跳转——三者缺一不可,且顺序不能颠倒。
怎么确认 erlc 和 erl 已就位?
这是所有后续操作的前提。Sublime 的构建系统本质是执行 shell 命令,如果终端里都找不到这两个命令,Sublime 肯定也调不动。
- 在终端运行
erlc -v和erl -version,必须有输出(如Erlang/OTP 26) - macOS 用
brew install erlang通常自动进 PATH;Windows 安装时没勾选 “Add to PATH” 就得手动把C:\Program Files\erl-25.3\bin加进系统环境变量 - Linux 用户若用
asdf,需确保asdf global erlang ref已设,并在新终端中验证which erlc有返回 - 别在 Sublime 里试——先关掉编辑器,在干净终端里敲两行命令,能过再往下走
为什么装了插件还是没语法高亮?
因为装错了插件,或没激活语法映射。Sublime 默认不识别 .erl 后缀,必须靠插件补全,但社区里名字带 “Erlang” 的插件有好几个,只有官方维护的 Erlang(作者是 erlang-editors)能稳定支持 OTP 24+ 新语法(比如 -spec fun/0)。
- 只选 GitHub 地址为
https://github.com/erlang-editors/sublime-erlang的那个插件 - 安装后打开一个
.erl文件,右下角应显示Erlang;若仍是Plain Text,右键 →Set Syntax→Erlang→Erlang手动切换一次,之后会自动识别 - 装错插件(如已停更的
Erlang Language Support)会导致保存时误删空行、-spec解析失败、-include跳转失效
erlc 编译失败却没报错提示?
常见于路径没配对、权限不足或 .erl 文件编码含 BOM。Sublime 的构建系统默认静默失败,不弹窗也不输出 stderr。
- 构建系统中不要写
"cmd": ["erlc", "$file"]—— GUI 应用(包括 Sublime)在 macOS/Linux 上往往继承不到 shell 配置的 PATH,Windows 则因空格和反斜杠解析出错 - 必须显式指定完整路径:先在终端运行
which erlc(macOS/Linux)或where erlc(Windows),拿到类似/Users/xxx/.asdf/shims/erlc或C:\Progra~1\erl-25.3\bin\erlc.exe的路径,然后填进构建配置 -
"working_dir": "$file_path"必须设置,否则erlc可能找不到-include的.hrl或生成.beam到错误位置 - 避免中文路径、空格路径;模块名必须与文件名严格一致(
foo.erl→-module(foo))
编译完怎么真正运行?
别信“一键启动 Erlang Shell”的插件。它们往往卡在路径、应用依赖、cookie 同步等细节上,反而增加调试成本。直接终端操作更透明、更可控。
- 编译完后,打开终端,
cd到你的源码目录(就是.erl所在目录) - 输入
erl -pa .进入 shell(-pa .让 Erlang 在当前目录找.beam) - 在 shell 里执行
:c(module_name).(注意末尾点号),成功返回{ok, module_name} - 再调用函数:
module_name:function().—— 这才是真实执行环境,和生产部署一致 - 如果模块依赖其他
.beam,确保它们也在-pa指定的路径下,或用多个-pa;不要指望插件自动处理路径层级
最常被忽略的是:Sublime 的 GUI 进程无法继承你 shell 中配置的 PATH,所以即使终端里 erlc 能跑,Sublime 里也可能找不到——必须显式写死路径,且 working_dir 和模块命名一致性不能妥协。

















