lua可执行文件必须存在且终端能识别,否则vscode所有运行调试操作均静默失败;需在终端执行lua -v验证版本,若报错则须将lua安装目录加入path。

lua 可执行文件必须存在且能被终端识别,否则 VSCode 里所有运行和调试操作都会静默失败或报错——这是最常被跳过的前提,不是“可选步骤”。
确认系统已安装并可调用 lua
VSCode 本身不带 Lua 解释器,它只负责转发命令。你点 Ctrl+Alt+N、按 F5、甚至装了 Code Runner,底层全靠终端执行 lua your_script.lua。
- 打开终端(macOS/Linux)或命令提示符(Windows),输入
lua -v - 成功返回类似
Lua 5.4.6或Luajit 2.1.0-beta3才算通过 - 如果报
command not found或'lua' 不是内部或外部命令,说明 PATH 没配好,得先加 Lua 安装目录(如C:\luadist\bin或/usr/local/bin/lua)到系统环境变量 - Windows 用户慎用 LuaJIT:它与
lua-debug调试协议兼容性差,容易卡在Debug adapter process has terminated unexpectedly
用 Code Runner 快速运行单个 .lua 文件
适合验证语法、跑小工具、写测试脚本——不配 launch.json,但也不支持断点、变量监视等调试功能。
- 确保已安装插件
Code Runner(作者 Jun Han) - 右键 →
Run Code,或按快捷键Ctrl+Alt+N(Windows/Linux)、Cmd+Option+N(macOS) - 若脚本秒退看不到输出,在末尾加一行
io.read()暂停终端 - 别用中文路径存脚本:
${file}在 Windows 下遇到中文路径大概率崩溃 - 如果脚本依赖
package.path(比如require "utils"),Code Runner 默认不加载你的配置,需手动在脚本开头补:package.path = "./?.lua;" .. package.path
配置 launch.json 启动调试会话(支持断点/变量/调用栈)
这才是开发游戏脚本或复杂逻辑时该用的方式。注意:sumneko.lua 插件只管语法提示,调试必须靠 lua-debug 扩展 + 正确的 launch.json 配置。
- 先装扩展:
Lua Debug(作者 actboy168),别装 EmmyLua 或老版lua-debug.so手动放的方案 - 按
Ctrl+Shift+D→ 点左上角齿轮图标 → 选lua→ 自动生成.vscode/launch.json -
"type": "lua"必须小写,不能写成"LUa"或"luajit",否则静默失败 -
"request": "launch"表示 VSCode 自己拉起新进程;若要连游戏进程(如 Love2D、Roblox),得改"request": "attach"并确保游戏已开启调试监听 -
"program": "${file}"表示运行当前文件;若脚本依赖资源(图片、配置),加上"cwd": "${workspaceFolder}"
sumneko.lua 的 .luarc.json 配置决定 require 是否标红
Sumneko 默认只扫描工作区根目录下的 ?.lua 和 ?/init.lua,完全不读取运行时的 package.path。你项目结构是 src/utils/string.lua,写 require "utils.string",它就直接报 Module not found。
- 在工作区根目录建
.luarc.json - 写入
"runtime.path"字段,例如:{"runtime.path": ["src/?.lua", "src/?/init.lua"]} - 如果用 Lua 5.4+,还要加
"runtime.version": "5.4",否则table.pack等新 API 不识别 - 改完后必须执行命令
Restart Lua Server(Ctrl+Shift+P输入即可),状态栏右下角出现Lua (running)才算生效
lua 命令能否在终端直接跑通、.luarc.json 里的 runtime.path 是否精确匹配你 require 的路径模式、以及 launch.json 中 type 和 request 的大小写与语义是否严格一致。这三个点任一出错,现象都是“看起来装了,但就是不工作”。











