Sublime Text不能做Erlang分布式开发,所谓“分布式语言设置”是误导;它仅支持高亮-spec/-callback、跳转-include、避免erlc静默失败,所有节点管理、网络连通、热更均需终端手动操作。

Sublime Text 不能做 Erlang 分布式开发,所谓“分布式语言设置”是误导性说法;它最多帮你高亮 -spec、跳转 -include、让 erlc 编译不静默失败——所有节点启停、网络连通、代码热更,全得靠终端手动操作。
为什么 -spec 和 -callback 不高亮?
不是插件没装,而是装错了或语法 scope 没激活。只有 erlang-editors/sublime-erlang 这个官方插件从 OTP 24 起才完整支持新语法;其他叫 “Erlang” 的插件(比如已停更的 Erlang Language Support)会把 -spec fun() -> ok. 当成注释丢掉。
- 安装后打开任意
.erl文件,右下角必须显示Erlang—— 若是Plain Text,右键 →Set Syntax→Erlang→Erlang手动切一次 - 按
Ctrl+Alt+Shift+P(macOS 是Cmd+Alt+Shift+P)查光标位置 scope:应看到类似meta.spec.erlang;若只有source.erlang,说明插件根本没加载语法定义 - 别信“自动识别”,首次切换后 Sublime 才会缓存映射;
.hrl文件同理,也得手动设一次语法
Ctrl+B 编译没报错但没生成 .beam?
Sublime 构建系统默认吞掉 stderr,erlc 因 BOM、路径错、权限不足退出时,你只看到“构建完成”或空白面板——这不是配置问题,是错误被藏起来了。
- 确保文件编码为
UTF-8 without BOM:BOM 会让erlc解析失败且不报行号(用file -i your_file.erl可查) - 构建系统中加
"shell": true,并把"cmd"改成 shell 命令串:["sh", "-c", "erlc '$file' 2>&1 || echo '--- COMPILATION FAILED ---'"] -
"working_dir": "$file_path"必须显式设置,否则erlc找不到同目录下的.hrl,或把.beam写到奇怪位置 - Windows 用户若用 WSL,别调用
erlc.exe,而应配:["wsl", "erlc", "$file"]
构建系统里写 "cmd": ["erlc", "$file"] 为啥总失败?
GUI 应用(包括 Sublime)在 macOS/Linux 上通常继承不到 shell 的 PATH,Windows 则因路径含空格和反斜杠解析出错——它根本找不到 erlc,但也不告诉你。
- 先在终端运行
which erlc(macOS/Linux)或where erlc(Windows),拿到绝对路径,例如:/Users/xxx/.asdf/shims/erlc或C:\Progra~1\erl-25.3\bin\erlc.exe - 构建配置中必须写死该路径:
"cmd": ["/Users/xxx/.asdf/shims/erlc", "$file"] - 模块名必须与文件名严格一致:
foo.erl→-module(foo),否则erlc成功但erl加载时报module foo is not loaded - 避免中文路径、带空格路径;
$file_path不能含 Unicode 字符,否则erlc在某些 OTP 版本下直接崩溃
真正容易被忽略的是:Sublime 从不验证 Erlang 是否真能跑起来。你看到 -spec 高亮了、Ctrl+B 有输出了,不代表 erl -sname node1 -pa . -eval 'application:ensure_all_started(your_app).' -noshell -s init stop 就能通——那一步永远在终端里,而且得你自己敲、自己 ping、自己 debug。

















