Sublime Text 本身不检查 Erlang 语法,必须依赖 erlc 命令行工具与 SublimeLinter 框架联动;前提是 erlc 已安装且 Sublime 能通过绝对路径调用,GUI 进程不继承终端 PATH,需手动配置 executable 路径、启用 lint_mode: "save",并确保文件为 UTF-8 无 BOM 编码。

Sublime Text 本身不检查 Erlang 语法,必须靠 erlc 命令行工具 + SublimeLinter 框架联动才能实现——装插件只是最后一步,漏掉本地 erlc 或路径没对上,语法红线永远不会出现。
确认 erlc 已就位且 Sublime 能调用到
这是整个语法检查的前提。Sublime 的 GUI 进程通常不继承终端的 PATH,所以即使你在 iTerm 或 PowerShell 里能跑 erlc -v,Sublime 也可能找不到它。
- 先在终端执行
which erlc(macOS/Linux)或where erlc(Windows),拿到绝对路径,比如/usr/local/bin/erlc或C:\Program Files\erl-26.2\bin\erlc.bat - Windows 用户注意:路径含空格时,
erlc.bat必须用正斜杠或双反斜杠写,例如"C:/Progra~1/erl-26.2/bin/erlc.bat";不要用单反斜杠加空格路径 - macOS 用户若用
asdf管理 Erlang,which erlc输出可能是~/.asdf/shims/erlc,但 Sublime 无法展开~,得换成完整路径如/Users/you/.asdf/shims/erlc
安装 SublimeLinter 和 SublimeLinter-erlc
只装 SublimeLinter 框架不行,必须额外装对应语言的 linter 插件。社区维护的 SublimeLinter-erlc 是目前最稳定的 Erlang 语法检查后端。
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package,回车 - 依次安装:
SublimeLinter→ 等待完成后再装SublimeLinter-erlc(不是SublimeLinter-erlang或其他变体) - 安装完重启 Sublime,否则插件可能不激活
配置 SublimeLinter-erlc 路径和触发模式
默认配置下,SublimeLinter-erlc 会尝试从 PATH 找 erlc,但几乎必然失败。必须手动指定路径,并启用保存即检。
- 打开
Preferences → Package Settings → SublimeLinter → Settings - 在右侧用户设置中加入:
{
"linters": {
"erlc": {
"args": [],
"executable": "/usr/local/bin/erlc",
"disable": false
}
},
"lint_mode": "save",
"paths": {
"linux": [],
"osx": ["/usr/local/bin"],
"windows": ["C:/Progra~1/erl-26.2/bin"]
}
}
其中 "executable" 填你前面查到的绝对路径;"paths" 是 fallback,供 Sublime 在找不到 executable 时补救;"lint_mode": "save" 表示仅在保存时检查(避免编辑中频繁报错干扰)。
常见失效原因和验证方式
语法红线不出现,90% 是这三类问题之一,而不是插件没装好。
-
erlc报错但被静默吞掉:打开 Sublime 控制台(Ctrl+`),保存一个故意写错的.erl文件(比如少个句点),看控制台是否输出类似erlc: command not found或error: syntax error before: '.'—— 有输出说明链路通了,没输出就是路径或插件根本没加载 - 文件编码含 BOM:
.erl文件必须是 UTF-8 无 BOM,否则erlc解析直接失败且不提示位置;右键 →Set Encoding → UTF-8再重存 - 模块名与文件名不一致:Erlang 要求模块名(
-module(foo).)必须和文件名(foo.erl)完全一致,否则erlc会报filename does not match module name,但 SublimeLinter 默认不显示这类错误,得看控制台
真正麻烦的是跨平台路径硬编码和 BOM 静默失败——这两处没盯住,语法检查永远像没开一样。

















