notepad++ 无法直接运行 elixir,需依赖系统已安装的 elixir/erl 解释器及正确工作目录;常见报错多因路径、环境变量或调用方式错误,而非编辑器本身问题。

Notepad++ 本身不支持直接运行 Elixir,它只是个文本编辑器。想让 .ex 或 .exs 文件“跑起来”,必须靠外部命令(elixir 解释器)+ 正确的执行上下文(比如项目根目录、环境变量、依赖加载),而 Notepad++ 只负责调用和展示输出。
你看到的“运行失败”“报错 module not found”“找不到 mix”“syntax error before: def”之类问题,90% 都不是 Notepad++ 的锅,而是路径、工作目录或解释器调用方式错了。
确认 elixir 和 erl 已在系统中可用
这是所有后续操作的前提。Notepad++ 不自带 Erlang/OTP,也不打包 Elixir,它只调用你系统里已有的命令。
- 打开 CMD 或 PowerShell,执行
elixir --version和erl -version,必须有正常输出 - 如果提示“不是内部或外部命令”,说明没装,或没加进
PATH - 推荐安装方式:用
asdf(多版本可控)、Chocolatey(Windows)、或官方预编译包(如erlang-solutions提供的 Windows 安装器) - 装完后必须重启 Notepad++,否则它读不到新
PATH
用 NppExec 插件执行单文件 .exs(脚本模式)
适合快速试语法、写小工具,不依赖 mix 项目结构。
- 确保已安装
NppExec(插件 → 插件管理 → 安装) - 按
F6打开 NppExec 控制台,输入:
cd $(CURRENT_DIRECTORY) "C:\path\to\elixir.exe" "$(FILE_NAME)"
- 把
"C:\path\to\elixir.exe"换成你本地真实路径,例如"C:\Users\Me.asdf\shims\elixir.exe"(Windows 下 asdf 路径)或"C:\Program Files\erl-26.3\bin\elixir.bat" - 注意:Windows 上推荐用
.bat而非.exe,避免环境变量丢失 - 点击
Save...命名为Run Elixir Script,再进Advanced Options → Add to Menu,以后右键就能调 -
$(FILE_NAME)会自动带后缀,所以只适用于.exs文件;对.ex(模块文件)会报错,因为不能直接执行
在 mix 项目中运行 iex 或 mix test(需正确工作目录)
单文件执行解决不了依赖、配置、应用启动等问题——这时候必须让命令在项目根目录(含 mix.exs)下运行。
- 不能只用
cd $(CURRENT_DIRECTORY):如果你当前打开的是lib/my_app.ex,那$(CURRENT_DIRECTORY)是lib/,不是项目根 - 更可靠的做法是用
$(CURRENT_DIRECTORY)向上找mix.exs,但NppExec不支持路径遍历,所以得手动或半自动处理 - 实操建议:
- 把 Notepad++ 的“当前项目”设为 mix 根目录:菜单栏 →
Project → Open Project,选中mix.exs所在文件夹 - 然后用这个 NppExec 脚本:
- 把 Notepad++ 的“当前项目”设为 mix 根目录:菜单栏 →
cd $(PROJECT_DIR) elixir -r "$(FILE_NAME)"
-
或运行测试:
cd $(PROJECT_DIR) mix test "$(FILE_NAME)"
$(PROJECT_DIR)是 NppExec 内置变量,仅在你通过 Project 功能打开过项目后才有效;否则为空,命令会失败若没开 Project,临时方案:按
Ctrl+Shift+P→ 输入Change current directory→ 手动选到 mix 根目录,再执行命令
为什么总跳不到错误行?关键在输出格式
NppExec 的 Follow console output with caret 功能只有在错误信息符合 file:line:col: message 格式时才生效。Elixir 默认报错是这个格式,但某些情况会被破坏:
- 用了
mix run --no-halt启服务,日志混杂,NppExec 捕获不到结构化错误 - 输出被重定向或管道过滤(如
2>&1 | grep),丢掉了原始位置信息 - 文件路径含中文或空格,且没加双引号,导致解析错位
- 解决办法:执行命令时不加任何管道或重定向,保持原生输出;确保
$(FILE_NAME)和路径变量都用英文双引号包裹
最后提醒一句:Notepad++ 做 Elixir 开发,终究是“能跑”,不是“好跑”。真正需要调试、跳转、实时类型检查,还是得上 VSCode + ElixirLS。Notepad++ 的价值,在于轻量、快启、低资源——别让它干 IDE 的活。











