sublime text 不支持 erlang 分布式功能,仅提供语法高亮、基础跳转和编译触发;-spec/-callback 无高亮因插件不匹配,需用官方 sublime-erlang 插件;编码须为 utf-8 without bom;构建系统需启用 shell 并显式设 working_dir;ctrl+click 跳转依赖插件对 -include 的解析,且不自动识别 rebar.config 或 -pa;所有分布式与运行时功能必须在终端完成。

Sublime Text 不提供 Erlang 分布式语言支持,所谓“分布式高亮”是误解;它只做语法着色、基础跳转和编译触发,所有节点通信、模块加载、网络发现都必须在终端里手动完成。
为什么 -spec / -callback 没有高亮或报错?
根本原因不是配置漏了,而是插件不匹配。OTP 24+ 引入的 -spec fun() -> ok.、-callback、-opaque 等语法,只有官方 erlang-editors/sublime-erlang 插件能识别并赋予正确 scope。
- 装错插件(比如已停更的
Erlang Language Support)会导致整行被当注释处理,光标悬停无提示,Ctrl+Alt+Shift+P查 scope 只显示source.erlang,而非meta.spec.erlang - 安装后打开任意
.erl文件,右下角必须显示Erlang—— 若是Plain Text,右键 →Set Syntax→Erlang→Erlang手动激活一次 - 文件编码必须为
UTF-8 without BOM:BOM 会破坏 Erlang 解析器对-spec行的识别,且不报任何行号错误
Ctrl+B 编译没反应,错误信息全丢了?
Sublime 的构建系统默认吞掉 stderr,erlc 即使因路径错、权限不足或 BOM 失败,你也只看到“构建完成”或空白面板。关键不是改 JSON 格式,而是让错误浮出来。
- 构建配置中必须加
"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"];macOS/Linux 用户务必用which erlc拿到绝对路径,填进"cmd",不能只写["erlc", "$file"]
Ctrl+Click 跳不到 -include 的 .hrl 文件?
这不是 Sublime 配置问题,是 Erlang 语言特性限制:Sublime 默认不解析 -include、-define 或模块导出关系,跳转能力完全依赖插件是否实现了头文件路径解析逻辑。
- 只有
erlang-editors/sublime-erlang插件支持基础-include跳转,但前提是.hrl文件必须与当前.erl在同一目录,或显式通过-I参数传入搜索路径(需在构建系统中补全) - 插件不会自动扫描
rebar.config或ERL_LIBS,也不会读取-pa参数——这些是erl运行时行为,和编辑器无关 - 如果
.hrl在include/子目录下,跳转失效是正常现象;此时建议在构建系统中加"cmd": ["erlc", "-I", "$file_path/include", "$file"]
真正容易被忽略的是:Sublime 里所有“Erlang 功能”都止步于单文件静态分析。模块间调用链、进程监控、分布式节点发现、热更新路径——这些必须回到终端,靠 erl -name、net_adm:ping()、observer:start() 和 rebar3 shell 来验证。编辑器只是起点,不是运行环境。











