需先安装Lua解释器(如LuaJIT或Lua),配置PATH并验证命令可用;再创建Build System支持Ctrl+B运行;接着安装SublimeLinter-lua进行语法检查;最后用SublimeCodeIntel配合love.lua实现API补全与跳转。

安装 Lua 解释器并验证 lua 命令可用
Sublime Text 本身不带 Lua 运行环境,游戏开发中常用的是标准 Lua 5.1/5.3 或 LuaJIT;没装解释器,连 print("hello") 都跑不起来。别指望插件自动帮你装。
实操建议:
- Windows 用户去 LuaJIT 官网 下载预编译包,解压后把
luajit.exe所在目录加进系统PATH;验证:终端敲luajit -v能输出版本号 - macOS 用户用
brew install lua(默认 5.4)或brew install luajit;注意:有些老游戏引擎(如 Love2D 11.x)只认 Lua 5.1,得手动指定路径 - Linux 用户确认
which lua或which luajit有输出;若用 Docker 或 WSL,要确保 Sublime 启动时能继承正确的环境变量(直接从终端启动:subl)
配置 Build System 让 Ctrl+B 跑 Lua 脚本
默认 Sublime 没有 Lua 构建规则,Ctrl+B 会报 “No build system” —— 不是插件问题,是根本没配。
实操建议:
- 菜单栏 → Tools → Build System → New Build System…,粘贴以下内容(以 LuaJIT 为例):
{
"cmd": ["luajit", "-e", "io.write('OK\n')"],
"selector": "source.lua",
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"variants": [
{
"name": "Run",
"cmd": ["luajit", "$file"]
}
]
}
保存为 LuaJIT.sublime-build(路径自动在 Packages/User/)。关键点:
-
"cmd"里必须用绝对路径(如"/usr/local/bin/luajit")才能跨桌面环境生效,尤其 macOS 的 GUI 应用常读不到 shell 的PATH -
"selector": "source.lua"必须存在,否则 Sublime 不知道该对 .lua 文件启用这个构建系统 - 如果游戏脚本依赖当前工作目录(比如读取
assets/),用"working_dir": "$file_path"显式指定
用 SublimeLinter-lua 避免语法错误卡死运行时
游戏逻辑一复杂,漏个 end 或错位缩进,luajit 报错位置常偏移十几行,调试成本陡增。光靠构建系统只能发现“不能跑”,没法提前标红。
实操建议:
- 先装 Package Control(没装的话搜 “install package control sublime”),再用
Cmd+Shift+P→Package Control: Install Package→ 搜SublimeLinter和SublimeLinter-lua,两个都装 -
SublimeLinter-lua默认调用luac -p,但 LuaJIT 不兼容;需在Preferences → Package Settings → SublimeLinter → Settings里改"executable":
"linters": {
"lua": {
"executable": ["/usr/local/bin/luajit", "-b", "-"]
}
}
注意:-b - 表示把代码 stdin 当字节码编译检查,比 luac 更准;路径必须写全,不然 lint 直接静默失效。
游戏开发常用:快速跳转函数定义 & 补全 love.* API
写 Love2D 游戏时,love.graphics.draw() 这类函数不会被 Sublime 自动识别,Ctrl+Click 跳转失败,补全也空白——因为没语言服务器,也没 API 描述文件。
实操建议:
- 不要装“Lua IDE”类重型插件(如 LuaIDE),它们依赖 LSP,而 Sublime 的 LSP 支持不稳定,容易和 Build System 冲突
- 用轻量方案:装
SublimeCodeIntel(注意不是 CodeIntel),再手动丢一个love.lua到项目根目录(内容可从 rxi/lua-docs 拷贝),它就能基于注释推导出love.*补全 - 如果用自定义模块(如
src/player.lua),确保文件名和require("player")一致,并在src/下放一个空的__init__.lua,否则 SublimeCodeIntel 会忽略整个目录
最麻烦的其实是路径解析:Love2D 的 require 搜索顺序和 Sublime 的索引逻辑不同,补全不准时,优先查 package.path 是否包含你项目的 src/?.lua。











