atom 不适合配置 erlang 开发环境——核心插件 language-erlang 和 atom-autocomplete-erlang 多年未更新,无法解析 erlang 25+ 新语法,不支持 otp 目录识别、rebar3 依赖索引、函数跳转等基础 ide 功能。

Atom 不适合配置 Erlang 开发环境——核心插件 language-erlang 和 atom-autocomplete-erlang 已多年未更新,无法正确解析 Erlang 25+ 的新语法(如 maps:with/2、#{K := V} 模式匹配、try ... of 多分支结构),且不支持 OTP 应用目录结构识别、rebar3 依赖自动索引、模块导出函数跳转等基础 IDE 功能。
language-erlang 插件失效的具体表现
安装后看似能高亮,但实际存在多个硬伤:
-
language-erlang仍基于 Erlang R16 时代的 grammar 规则,对-spec类型标注中的fun((_) -> ok)等现代写法直接标红 - 文件保存时不会触发
rebar3 compile,也无错误实时 lint(erlc输出无法捕获到面板) -
.app.src和rebar.config被识别为纯文本,无 key 补全或 schema 校验 - 右键菜单无“Go to Definition”,
gen_server:call/2这类 OTP 函数点不进去
script 插件运行 erl 命令的典型失败场景
即使手动配了 script 插件来跑 erl -noshell -s module function,也会遇到:
- 工作目录不是
apps/my_app/而是 Atom 打开的根目录,导致code:add_pathz("ebin")失败 - 每次运行都是全新 shell 进程,变量、已加载模块、
application:start(my_app)状态全部丢失 - 中文路径下
erl启动直接报错:ERROR: Failed to start 'erl': spawn ENOENT(Atom 不读取系统 locale) - Ctrl+C 无法终止正在运行的
gen_server,只能杀整个进程树
替代方案:轻量但可用的折中做法
如果必须用 Atom(例如团队强制统一编辑器),可临时启用最低限度功能:
- 只装
language-erlang(禁用所有 autocomplete / linter / debug 插件) - 在
Config → Core → Custom File Types中添加:"source.erlang": ["\.erl$", "\.hrl$"],避免被language-markdown劫持.md混合文件 - 用终端手动执行:
rebar3 eunit -m my_module_test或erl -pa _build/default/lib/*/ebin,Atom 仅作编辑器 - 把
rebar3 compile绑定为 Atom 的Keymap快捷键(如ctrl-alt-c),但不期望它反馈结果
真正可靠的 Erlang 开发入口其实是 rebar3 + CLI
绝大多数 Erlang 工程师日常并不依赖图形化 IDE 的“智能”功能,而是靠:
-
rebar3 shell提供带历史、自动补全、模块热重载的交互环境 -
rebar3 ct --suite test/my_SUITE直接驱动 Common Test -
rebar3 as prod tar一键打包发布包 - Vim/Neovim 用户搭配
vim-erlang-compiler+erlang-ls(LSP server)效果远超 Atom
Atom 对 Erlang 的支持早已停留在 2017 年水平,现在强行配置只会浪费时间在修 grammar scope、调 shell path、屏蔽误报 lint 上。真要调试进程树或看 OTP 应用状态,observer:start(). 在 rebar3 shell 里敲一行就完事了。











