notepad++运行lua脚本需本地安装lua.exe并加入path;f5命令为“lua "$(full_current_path)"”,中文路径须加引号,乱码可用chcp 65001临时解决。

确认 lua.exe 是否在系统 PATH 中
Notepad++ 本身不带 Lua 解释器,所有“运行”动作本质是调用外部 lua.exe。如果 lua -v 在 CMD 或 PowerShell 中报错 'lua' is not recognized,后续任何配置都无效。
- 去 luabinaries 下载预编译的 Windows 二进制包(如
lua-5.4.6_Win64_bin.zip),解压后把含lua.exe的目录(例如C:\lua\)加进系统环境变量PATH - 改完
PATH后,必须彻底关闭并重启 Notepad++——仅新建窗口不生效 - 验证方式:在 Notepad++ 内按
F5,输入cmd /c lua -v && pause,能输出版本号才算通过
用 NppExec 实现带参数、可跳转的执行流程
相比原生 Run → Run,NppExec 是唯一能稳定捕获错误行号、支持传参、且允许复用的方案。它不是“增强版运行”,而是替代性执行管道。
- 安装插件:菜单
插件 → 插件管理 → 安装 NppExec(v8+ 版本无需手动放 DLL) - 执行脚本内容建议写成:
cd $(CURRENT_DIRECTORY) "C:\lua\lua.exe" "$(FILE_NAME)" $1 $2 $3
其中$1、$2是运行时弹窗填入的参数占位符;路径用双引号包裹防空格中断 - 保存为
Run Lua后,在Advanced Options → Add to Menu加入插件菜单;务必勾选Follow console output with caret,否则报错test.lua:23: attempt to index a nil value时无法自动跳转
中文路径或 print 输出乱码的临时修复
Windows 控制台默认 GBK 编码,而 Notepad++ 文件多为 UTF-8,print("你好") 直接输出会显示为 浣犲ソ。这不是 Notepad++ 的 bug,是 cmd 和 lua.exe 之间的编码错位。
- 最轻量做法:在 NppExec 脚本开头加
cmd /c chcp 65001 >nul &&,即完整命令为:cmd /c chcp 65001 >nul && "C:\lua\lua.exe" "$(FILE_NAME)"
- 不要依赖
io.stdout:setvbuf('no')解决乱码——它只控制缓冲,不改变编码 - 避免根治式修改系统区域设置(启用“Beta: 使用 Unicode UTF-8”),该选项会影响老旧工具链,比如某些批处理或 VBScript 工具会异常退出
LuaScript 插件 ≠ 运行 Lua 脚本
看到 “LuaScript” 就以为能跑 .lua 文件?这是最大误区。LuaScript 是用于编写 Notepad++ 自身插件的宿主环境,和你写的业务脚本完全无关。
- 它依赖特定 DLL:
lua54.dll必须放在%APPDATA%\Notepad++\plugins\LuaScript\下,且 Notepad++ 必须是 x64 版本 - 即使装好了,
notepad.save()也只对已保存文件生效;getSelText()在非 UTF-8-BOM 编码下常返回空字符串,调试只能靠console.write() - 想用 Ctrl+S 触发自定义逻辑?不能监听快捷键,只能通过
menu.add()新增菜单项,再手动绑定快捷键——这和“运行当前脚本”是两件事
真正要让一个 hello.lua 跑起来,核心就三件事:lua.exe 可达、路径引号不漏、控制台编码对齐。其余全是干扰项。











