先点击右下角“Plain Text”→选Lua;若无此选项,需通过Package Control安装官方Lua插件并重启,之后所有.lua文件将自动高亮。

Sublime Text 默认打不开 .lua 文件的语法高亮,不是插件没装全,而是根本没绑定语言定义;游戏开发中若还依赖 love 或 luajit,光有高亮远远不够,必须同步配对构建系统和工作目录。
怎么让 .lua 文件一打开就高亮?
右下角显示 “Plain Text” 就说明没生效——这不是 bug,是 Sublime 压根不知道该用哪个语法包解析。关键动作只有一步:打开任意 .lua 文件,点击右下角语言名 → 选 Lua(不是 LuaEnhanced 或 LuaLanguage)。之后所有同后缀文件都会自动识别。
如果列表里压根没有 Lua:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package回车 - 搜
Lua,认准作者是sublimelsp或官方维护的Lua插件(别装LuaExtended,它已废弃且正则匹配错位) - 装完重启 Sublime,再试一次右下角切换
Ctrl+B 运行脚本却报 lua: command not found?
这是环境层失败,和代码无关。Sublime 的构建系统只是调命令行,它不负责装 Lua,也不读你 shell 里的 PATH(尤其 macOS GUI 启动时)。
先在终端确认:
- Windows:运行
where lua或where luajit,看是否返回路径 - macOS/Linux:运行
which lua或which luajit - 没输出?说明 Lua 没装,或没加进系统 PATH —— 别跳过这步,直接配构建系统必失败
验证通过后,新建构建系统:Tools → Build System → New Build System…,粘贴:
{
"cmd": ["lua", "$file"],
"selector": "source.lua",
"file_regex": "^(*?):([0-9]+):?([0-9]*):? (.*)$",
"working_dir": "$file_path"
}
注意:"working_dir": "$file_path" 必须加上——游戏脚本常要读 assets/ 或 conf.lua,不设工作目录,love 启动会直接报找不到文件。
为什么 print() 输出一闪而过,或者点错行跳不到?
Windows 下窗口闪退,本质是进程结束太快;跳转错行,则是 file_regex 没匹配上真实报错格式。
解决闪退:
- 改构建命令为:
"cmd": ["cmd", "/c", "lua", "$file", "&", "pause"](Windows) - 或在脚本末尾加一行
io.read(),但仅限调试,上线前删掉
修复跳转:
- 故意写个错(比如
print(缺右括号),看终端实际报错长啥样 - Lua 5.4 默认报错是
test.lua:3: unexpected symbol near '('→ 正则用"file_regex": "^(*?):([0-9]+): - Luajit 报错带列号,如
test.lua:3:12: attempt to call a nil value→ 正则得改成"file_regex": "^(*?):([0-9]+):([0-9]+):
游戏开发绕不开的三个坑
高亮 + 运行只是起点,真写 love 或嵌入式 Lua 时,这三个点最容易卡半天:
-
love脚本必须放在项目根目录,且含main.lua和conf.lua;构建系统里"cmd"得换成["love", "$file_path"],否则love找不到项目结构 - 中文路径下
io.open读文件大概率乱码或失败;哪怕系统 locale 是 UTF-8,也建议整个项目路径用纯英文 - Sublime 没调试器——想断点、看变量、单步执行,必须换 ZeroBrane Studio 或用
mobdebug连真机;构建系统只负责“跑起来”,不是“调清楚”



















