notepad++运行erlang需先确保cmd中erlc和erl命令可直接调用,否则所有操作均失败;必须安装erlang并正确配置path,重启notepad++生效;推荐用nppexec编译并跳转错误行,run菜单配置utf-8编码的erl启动命令;严禁使用中文路径,否则erlc静默失败。

Notepad++ 本身不运行 Erlang,它只负责调用系统已安装的 erlc 和 erl;所有“点一下就跑起来”的失败,95% 都卡在命令行根本找不到这两个可执行文件。
确认 erlc 和 erl 能在 CMD 里直接调用
这是硬门槛,跳过这步后面全白搭。Notepad++ 的任何插件或 Run 命令,都只是把命令丢给 Windows 命令行执行——如果 CMD 里敲 erlc -v 或 erl -version 报错,Notepad++ 就不可能成功。
- 打开 CMD(不是 PowerShell),输入
erlc -v和erl -version,必须有输出(如Erlang/OTP 26) - 若报
'erlc' is not recognized,说明没装 Erlang 或没加进 PATH:去官网下载安装包,安装时务必勾选 Add Erlang to PATH;若已安装但漏勾,手动把C:\Program Files\erl-26.0\bin(路径以你实际版本为准)加入系统环境变量 PATH - 改完 PATH 后,必须彻底关闭并重启 Notepad++——它启动时缓存环境变量,只关窗口或新建标签页没用
NppExec 编译 .erl 文件并自动跳转错误行
用 NppExec 是最实用的方式,能捕获编译错误、双击错误行直接跳转,还能控制工作目录和输出位置。
- 先确保已安装 NppExec 插件(插件管理 → 安装 NppExec)
- 菜单栏:插件 → NppExec → Execute…,输入以下脚本:
cd $(CURRENT_DIRECTORY) erlc +debug_info -o ./ebin $(NAME_PART).erl
-
$(CURRENT_DIRECTORY)确保编译时工作目录是当前文件所在目录,避免include或模块依赖路径出错 -
+debug_info保留调试信息,后续用erl启动时能看堆栈 -
-o ./ebin把.beam输出到项目下的ebin目录,比默认输出到当前目录更规范 - 点击 Save…,起名如
Erlang Compile,再进 Advanced Options → Add to Menu,让它出现在插件菜单里 - 关键设置:勾选 Follow console output with caret,这样编译报错如
test.erl:12: syntax error before: ',',双击就能跳到第 12 行
Run 菜单配置一键启动 erl 并加载当前模块
适合快速测试单个模块,不需要写构建脚本,但要求模块已编译好(即已有 .beam 文件)。
- 菜单栏:Run → Run(或按 F5),输入:
cmd /c chcp 65001 >nul && erl -pa "$(CURRENT_DIRECTORY)\ebin" -s $(NAME_PART) start -noshell -s init stop
-
chcp 65001强制 CMD 切换 UTF-8 编码,避免中文字符串乱码(尤其io:format("你好~n")) -
-pa "$(CURRENT_DIRECTORY)\ebin"让 Erlang 运行时能找到刚编译的.beam,注意路径中反斜杠要写成\,不能用/ -
-s $(NAME_PART) start调用模块里的start/0函数(假设你的模块导出了该函数) -
-noshell -s init stop防止 Erlang 启动后挂住,执行完就退出,方便反复测试 - 点 Save,起名如
Erlang Run Module,快捷键设为 Ctrl+F5 更顺手
中文路径和文件名会直接导致 erlc 崩溃或静默失败
Erlang 官方工具链对非 ASCII 路径支持极差,这不是 Notepad++ 的 bug,是 erlc.exe 自身限制。哪怕路径里有一个中文字符,erlc 可能直接闪退、不报错、也不生成 .beam。
- 绝对不要把 Erlang 源文件放在
C:\用户\文档\project\或D:\我的代码\这类路径下 - 工作目录、模块名、包含的头文件(
-include("xxx.hrl"))路径,全部用英文+下划线,例如C:\erlang_proj\src\、my_server.erl、my_config.hrl - 如果必须处理中文内容,一律用 UTF-8 字符串字面量(
"你好"),并在erl启动命令里加chcp 65001,别试图改文件编码或系统区域设置
真正卡住人的地方从来不是怎么配菜单,而是 erlc 在中文路径下连错误都不输出——它就默默失败。先挪路径,再试命令,比翻十页配置文档管用。











