lua -v 命令跑不通就别往下配了,因Notepad++不自带Lua解释器,所有运行均依赖PATH找到lua.exe;若cmd中执行lua -v报“not recognized”,说明未安装或未配置PATH,需从luabinaries.org下载预编译版并添加含lua.exe的目录到系统PATH,且改完后必须彻底关闭再重开Notepad++。

lua -v 命令跑不通,就别往下配了
Notepad++ 本身不带 Lua 解释器,所有“运行”动作都依赖系统 PATH 找到 lua.exe。如果在 CMD 或 PowerShell 里执行 lua -v 报错 'lua' is not recognized,说明解释器根本没装好或没进环境变量——后面所有配置都会静默失败。
推荐从 luabinaries.org 下载预编译版(如 lua-5.4.6_Win64_bin.zip),解压后把含 lua.exe 的目录(例如 C:\lua\)加进系统 PATH。改完 PATH 后,必须彻底关闭 Notepad++(不是新建窗口),再重开,否则新变量不生效。
F5 运行命令里引号漏一个,脚本就只读半截路径
Windows cmd 对空格极其敏感。$(FULL_CURRENT_PATH) 是 Notepad++ 提供的变量,会自动展开为类似 C:\my project\test.lua 这样的路径。一旦没用英文双引号包住,cmd 就把它当两个参数:C:\my 和 project\test.lua,结果 lua.exe 只收到前半段,报错找不到文件。
正确写法是:cmd /k lua "$(FULL_CURRENT_PATH)" & PAUSE
- 必须用英文双引号,中文引号(“”)直接失效
- 不要写成
lua54.exe或lua-5.4.exe—— 绑死版本号,升级 Lua 就崩 - 用
cmd /k+& PAUSE留住黑窗;若用cmd /c,得自己加& EXIT关窗
NppExec 才真能跳错误行,F5 不行
按 F5 运行时,Lua 报错像 test.lua:23: attempt to index a nil value 只在黑窗一闪而过,没法点进去。NppExec 能捕获 stderr 输出,并且默认格式匹配这个报错样式,勾选 Follow console output with caret 后,点击那行错误就能自动跳转到第 23 行。
安装 NppExec 后,在 Plugins → NppExec → Execute 中填入:
cd "$(CURRENT_DIRECTORY)" lua "$(FILE_NAME)" $1 $2 $3
其中 $1、$2、$3 是运行时弹窗填入的参数占位符(比如 --debug config.json)。保存为 Run Lua,再进 Advanced Options → Add to Menu 加到菜单栏即可复用。
中文乱码不是脚本问题,是 cmd 编码和 Notepad++ 不一致
Notepad++ 默认用 UTF-8 编码保存文件,但 Windows 控制台(cmd)默认是 GBK。所以 print("你好") 在黑窗里显示为乱码,跟 Lua 本身无关。
临时解法:在运行命令最前面加 chcp 65001 &&,变成:chcp 65001 && lua "$(FULL_CURRENT_PATH)"
更彻底的做法是确保三处编码统一:
- Notepad++:菜单栏
Encoding → UTF-8(别用 UTF-8-BOM) - 文件保存时确认是 UTF-8(右下角状态栏应显示
UTF-8) - cmd 环境:运行
chcp 65001切换为 UTF-8 模式(可写进批处理或 NppExec 命令里)
注意:io.stdout:setvbuf('no') 只强制刷新输出缓冲区,对乱码无效;lua.exe 自身不处理编码转换。
真正卡住的从来不是某一行配置,而是 PATH、引号、编码、重启编辑器这四件事里漏掉一个。调试时别猜,挨个验证:cmd 能否 lua -v、路径是否带空格、Notepad++ 是否彻底重启、输出面板里有没有 chcp 65001 成功执行的日志。


















