先确认lua.exe能否被系统识别:在CMD中执行lua -v,输出Lua版本号才成功;否则需安装并添加PATH,重启Notepad++;F5命令须用英文双引号包裹"$(FULL_CURRENT_PATH)"防截断;中文乱码需改Notepad++编码为UTF-8(无BOM)并加chcp 65001;传参与错误跳转必须用NppExec插件。

Notepad++ 运行 Lua 脚本失败,90% 的情况不是脚本写错了,而是 lua.exe 根本没被系统识别——先跑通 lua -v,否则所有配置都是白忙。
cmd 中 lua -v 报错“not recognized”,必须立刻停手
这是整个链路的起点,不是 Notepad++ 的问题,是 Windows 找不到 lua.exe。不解决它,F5、NppExec、宏变量全无效。
- 打开 CMD 或 PowerShell,直接输
lua -v;有类似Lua 5.4.6输出才算过关 - 报错就说明没装或 PATH 没加对;推荐从
luabinaries.org下载预编译包(如lua-5.4.6_Win64_bin.zip),解压后把含lua.exe的目录(例如C:\lua\)加进系统环境变量PATH - 改完
PATH后,必须彻底关闭 Notepad++(不是新建窗口),再重开——它启动时就缓存了环境变量
F5 运行命令里漏了英文双引号,路径一含空格就截断
$(FULL_CURRENT_PATH) 是 Notepad++ 提供的变量,但它本身不带引号;如果路径里有空格(比如 C:\my project\test.lua),CMD 会把它拆成两个参数,lua.exe 实际只收到 C:\my,然后报“找不到文件”。
- 按 F5 → 输入框填:
cmd /k lua "$(FULL_CURRENT_PATH)" & PAUSE(注意"是英文双引号,且包裹整个路径) - 别写
lua54.exe或lua-5.4.exe——靠PATH解耦,升级 Lua 时不用改任何配置 - 用
cmd /k是为了保留黑窗,& PAUSE防闪退;若用cmd /c,得自己加& EXIT关窗
中文输出乱码或脚本报 unexpected symbol near '▒',其实是编码格式错了
Notepad++ 默认保存为 UTF-8 with BOM,而 Lua 解释器读到 BOM 字节(EF BB BF)会当成非法字符,第一行就崩;控制台默认 GBK 编码,print("你好") 也会变乱码。
- 菜单栏点
Encoding → UTF-8(不是UTF-8-BOM),保存后再运行,unexpected symbol near '▒'就消失 - 临时解决控制台乱码:F5 命令改成
chcp 65001 && lua "$(FULL_CURRENT_PATH)";chcp 65001切换 CMD 为 UTF-8 模式 - 别在 Lua 里折腾
io.stdout:setvbuf('no')——它只刷缓冲区,不改编码;也别信文件头加# -*- coding: utf-8 -*-,Lua 不认这个
想传参、看错误行、点击跳转?NppExec 是唯一靠谱方案
F5 只能跑单文件,不支持参数、不捕获 stderr、错误堆栈一闪而过。NppExec 才能把 test.lua:23: attempt to index a nil value 解析成可点击的链接,光标一点就跳过去。
- 插件 → 插件管理 → 安装
NppExec(v1.0+ 支持 UTF-8 输出) - 插件 →
NppExec→ Execute,输入:cd "$(CURRENT_DIRECTORY)"<br>lua "$(FILE_NAME)" $1 $2 $3
($1是运行时弹窗填的参数占位符,比如--debug config.json) - Save 为
Run Lua,再进 Advanced Options → Add to Menu,并勾选Follow console output with caret
最易被忽略的是工作目录:cd "$(CURRENT_DIRECTORY)" 这一行不能少,否则脚本里用 io.open("data.txt") 会找不到同目录下的文件——F5 没这能力,只有 NppExec 能稳住相对路径。











