sublime text 不能直接运行 erlang 代码,需依赖系统已安装的 erlc/erl;构建失败常因路径错误、bom 编码或静默失败;跳转 -include 需 erlang-sublime 插件且头文件须在指定路径;跨平台构建应避免硬编码路径,优先用 sublimebuild 插件管理。

Sublime Text 能不能直接运行 Erlang 代码
不能。Sublime Text 本身只是编辑器,没有内置 Erlang 运行时或编译器集成,所谓“配置 Erlang 环境”本质是让 Sublime 能调用系统已安装的 erlc 和 erl,并正确高亮、跳转、报错——不是装 Erlang,而是告诉 Sublime 哪里找 Erlang。
为什么 erlc 编译失败却没报错提示
常见于路径没配对、权限不足或 .erl 文件编码含 BOM。Sublime 的构建系统默认静默失败,不弹窗也不输出 stderr。
- 确认
erlc在终端能直接运行:which erlc(macOS/Linux)或where erlc(Windows) - 在 Sublime 构建系统中显式指定完整路径,比如
/usr/local/bin/erlc,避免依赖 PATH - 构建文件里加
"shell": true并把cmd改成 shell 命令串,方便调试:["sh", "-c", "erlc $file && echo 'OK' || echo 'FAIL'"] - 用 UTF-8 无 BOM 编码保存
.erl文件,BOM 会导致erlc解析失败且不提示具体位置
如何让 Sublime 正确跳转到 -include 头文件
Sublime 默认不解析 Erlang 的 -include 或 -define,跳转失效不是插件问题,是语法层面缺失索引能力。
- 装
Erlang-sublime插件(GitHub 上维护较活跃的那个),它提供基础的goto_definition支持,但仅限模块名和导出函数 -
-include("xxx.hrl").中的xxx.hrl必须在当前项目根目录或ERL_LIBS指向路径下,否则跳转找不到 - 不要指望自动补全
-record字段或宏定义;Erlang 动态性太强,Sublime 插件做不到 IDE 级别语义分析 - 如果项目结构深,建议用
rebar3管理,并在 Sublime 里用Build With… → rebar3 compile替代裸erlc,至少能统一 include 路径
Mac / Windows 下构建系统路径写法差异
Windows 的空格路径、反斜杠、环境变量展开方式和 macOS/Linux 完全不同,硬写死路径极易失效。
- macOS/Linux:构建系统里用
"cmd": ["erlc", "$file"]通常可行,前提是erlc在 PATH - Windows:必须用正斜杠或双反斜杠,且推荐用
%USERPROFILE%替代硬编码用户名,例如:"cmd": ["erlc", "${file}"]+ 设置"path": "%USERPROFILE%\AppData\Local\Programs\erl12.3\bin" - 跨平台方案:用 Package Control 安装
SublimeBuild插件,它支持按 OS 切换构建配置,比手写 JSON 更稳 - 别信网上抄来的 “一键配置包”,很多把
erl -noshell -eval塞进构建系统,结果每次运行都卡住——那是交互式命令,不是构建命令
真正麻烦的从来不是配路径,而是 Erlang 的模块名必须和文件名严格一致、原子必须小写、字符串必须双引号——这些错误不会被构建系统高亮,只会等你 erl -noshell -s xxx start 时才报 undef。得靠人眼盯。










