# 引言
最近学习Lua,在解释器中运行代码很是不习惯,加上自己偏好使用 Sublime,于是将 Lua 在 Sublime 中进行相关配置,将过程整理备忘并推荐相关插件。
# Lua环境配置
# Lua安装
下面给出两种安装方式,可执行程序安装 和 源码编译安装,在很多人看来可能基于源码编译安装更加麻烦,事实也是如此。
但是基于源码版安装后续安装 luacheck、 luasocket等常用库时可以利用 lua 源码用 luarocks 基于库源码编译安装,毕竟有些库,编译后的版本可能已经很久没有维护了而且对于 lua 有指定版本要求,关键还不一定好使,所以个人觉得通过源码安装虽然麻烦,但是相对靠谱和可控。
源码下载
源码下载链接,点击 Source 下载最新源码版或者指定版本
https://www.lua.org/download.html

编译环境
这儿通过 mingw32-make 进行编译,所以需要先到 https://nuwen.net/mingw.html 下载 MinGW 安装 mingw32-make 再将文件所在 bin 目录添加到环境变量即可

编译版本
解压 lua 源码,根目录文件夹下新建批处理脚本 仅限Windows, Mac下直接由于homebrew过于强大,直接安装就行了,运行编译完成后, \dist\bin 即为编译后 Lua 可执行程序目录
@echo off
:: ========================
:: build.bat
::
:: build lua to dist folder
:: tested with lua-5.3.5
:: based on:
:: https://medium.com/@CassiusBenard/lua-basics-windows-7-installation-and-running-lua-files-from-the-command-line-e8196e988d71
:: ========================
setlocal
:: you may change the following variable’s value
:: to suit the downloaded version
set work_dir=%~dp0
:: Removes trailing backslash
:: to enhance readability in the following steps
set work_dir=%work_dir:~0,-1%
set lua_install_dir=%work_dir%\dist
set compiler_bin_dir=%work_dir%\tdm-gcc\bin
set lua_build_dir=%work_dir%
set path=%compiler_bin_dir%;%path%
cd /D %lua_build_dir%
mingw32-make PLAT=mingw
echo.
echo **** COMPILATION TERMINATED ****
echo.
echo **** BUILDING BINARY DISTRIBUTION ****
echo.
:: create a clean “binary” installation
mkdir %lua_install_dir%
mkdir %lua_install_dir%\doc
mkdir %lua_install_dir%\bin
mkdir %lua_install_dir%\include
mkdir %lua_install_dir%\lib
copy %lua_build_dir%\doc\*.* %lua_install_dir%\doc\*.*
copy %lua_build_dir%\src\*.exe %lua_install_dir%\bin\*.*
copy %lua_build_dir%\src\*.dll %lua_install_dir%\bin\*.*
copy %lua_build_dir%\src\luaconf.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lua.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lualib.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lauxlib.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lua.hpp %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\liblua.a %lua_install_dir%\lib\liblua.a
echo.
echo **** BINARY DISTRIBUTION BUILT ****
echo.
%lua_install_dir%\bin\lua.exe -e "print [[Hello!]];print[[Simple Lua test successful!!!]]"
echo.
:: configure environment variable
:: https://stackoverflow.com/a/21606502/4394850
:: http://lua-users.org/wiki/LuaRocksConfig
:: SETX - Set an environment variable permanently.
:: /m Set the variable in the system environment HKLM.
pause
# 添加环境变量
将上一步的 Lua 可执行程序目录 添加到 环境变量 Path 下就好了,如下图,是我放在了 E盘 的配置示例

在 cmd 中输入 lua 回车若显示版本号即配置正确(不行可以尝试重启或者注销电脑再在 cmd 中看看)
# 在Sublime中配置Lua
# Lua集成
打开 Sublime 选择 Tools --> Build System --> New Build System
在新出现的文件中输入如下内容
{
"cmd": ["lua", "$file"],
"file_regex": "^(?:lua:)?[\\t ](...*?):([0-9]*):?([0-9]*)",
"selector": "source.lua"
}Ctrl + S 到默认保存路径就好了,比如命名为 lua(lua.sublime-build)
这样以后新建 .lua 文件然后 Ctrl + Shift + B 或者 F7 运行就ok了
# 插件推荐
- SublimeLinter
- SublimeLinter-lua
- SublimeLinter-luacheck
- All Autocomplete
- LuaSmartTips
Sublime 自带快捷键
- Ctrl + Shift + R 工程内定义与实现跳转
- Ctrl + R 文件内任意函数跳转~
# Lua静态语法检测 & 辅助功能
# luacheck静态检查
这儿同样提供 基于源码 和 可执行程序 的两种安装方式, 注: 源码安装需要上一步也是源码安装的Lua
本质上 luacheck 算是一个 lua 库,而对于 lua 的各种库通过 luarock 来进行安装管理是非常方便的,所以我们需要先做一下前置工作
Luarocks安装
Luarocks下载链接,页面选择最新版直接下载即可,这儿不想编译可以直接下载执行程序,安装 lua 库时使用源码版 lua 即可
http://luarocks.github.io/luarocks/releases/
这儿建议解压后放在和之前 lua 源码所在同级目录,便于方便管理
将 Luarock 解压后执行程序所在路径 添加到 环境变量 Path 下
cmd 执行 luarocks config 可以看到,luarock 依赖的 lua 二进制文件路径,以及安装的 bin 文件路径

为了一劳永逸,避免命令行设置路径同时便于后续管理,以及 lua 环境的一键移植,可以定义一个 config.lua 文件重载全局的 config
lua_interpreter = "lua.exe"
---相关部署路径
deploy_bin_dir = "D:\\MyProfile\\Lua\\luarocks/bin"
deploy_lib_dir = "D:\\MyProfile\\Lua\\luarocks/lib/lua/5.3"
deploy_lua_dir = "D:\\MyProfile\\Lua\\luarocks/share/lua/5.3"
local_cache = "D:\\MyProfile\\Lua\\luarocks/Cache"
rocks_dir = "D:\\MyProfile\\Lua\\luarocks/lib/luarocks/rocks-5.3"
---指向Luarocks所在目录,建议Lua也放在这儿,可以直接lua整包进行环境移植
home = "D:\\MyProfile\\Lua"
home_tree = "D:\\MyProfile\\Lua\\luarocks"
variables = {
---lua源码版执行文件,lib文件,以及源码路径,用于源码安装库文件依赖编译
LUA_BINDIR = "D:\\MyProfile\\Lua\\lua-5.3.6\\dist\\bin",
LUA_DIR = "D:\\MyProfile\\Lua\\lua-5.3.6\\dist\\bin",
LUA_INCDIR = "D:\\MyProfile\\Lua\\lua-5.3.6\\dist\\include",
LUA_LIBDIR = "D:\\MyProfile\\Lua\\lua-5.3.6\\dist\\bin",
ROCKS_TREE = "D:\\MyProfile\\Lua\\luarocks/lib/luarocks/rocks-5.3",
SCRIPTS_DIR = "D:\\MyProfile\\Lua\\luarocks/bin",
}新建环境变量

到此整个 luarocks 部署完成,很麻烦有没有(不要慌,这叫工欲善其事,必先利其器,毕竟用lua开发不可能不用到其他库,这样后续就方便了呀,逃~~)
Luacheck安装
cmd 执行如下命令完成安装,然后将luacheck所在 bat 文件添加到 环境变量 Path 下即可,按照上面的配置这个路径应该是 D:\\MyProfile\\Lua\\luarocks\\bin 其实安装了其他的 库文件 基本也都是在这个目录下了,后续就不再需要添加环境变量了
luarocks install luacheck可执行程序下载链接
https://github.com/mpeterv/luacheck
通过上述链接下载后运行 cmd cd 到 luacheck 的所在目录 输入如下命令运行
lua install.lua E:\\MyProfile\\Lua\\luacheck\\
# 其中E:\\MyProfile\\Lua\\luacheck\\为luacheck的目录
# 注: 若lua未添加环境变量,可手动给出full path运行即
# E:\\MyProfile\\Lua\\lua-5.3.4_Win64_bin\\lua.exe install.lua E:\\MyProfile\\Lua\\luacheck\\这一步的目的在于,根据使用者系统的相关目录重新生成 luacheck.bat 文件
然后将luacheck的 bin(即 luacheck.bat 所在)目录添加到系统环境变量中的 path 目录,如上图 环境变量 最后一条记录
# luacheck作用解释
比如你手贱的写了如下代码,在鼠标移动至第一个变量位置(点击),在下方的状态栏,当光标移动到第一行会提示你 该变量没有使用,移动到第二行就会提示 变量没有定义,这样就可以有效避免出现鬼畜的代码了

# 语法检测自定义忽略规则
配置完成后会发现在 Lua 中输入多余空格空行会提示警告可谓烦人
打开 Sublime 菜单栏 -- package setting --> SublimeLinter -- setting userd
编辑打开文件复制下列代码替换即可
{
"user": {
"debug": false,
"delay": 0.25,
"error_color": "D02000",
"gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme",
"gutter_theme_excludes": [],
"lint_mode": "background",
"linters": {
"lua": {
"@disable": false,
"args": [],
"excludes": []
},
"luacheck": {
"@disable": false,
"args": [],
"excludes": [],
"ignore_match": [
".*trailing whitespace.*",
".*only whitespace",
".*line is too long",
".*inconsistent indentation"
]
}
},
"mark_style": "outline",
"no_column_highlights_line": false,
"passive_warnings": false,
"paths": {
"linux": [],
"osx": [],
"windows": []
},
"python_paths": {
"linux": [],
"osx": [],
"windows": []
},
"rc_search_limit": 3,
"shell_timeout": 10,
"show_errors_on_save": false,
"show_marks_in_minimap": true,
"syntax_map": {
"html (django)": "html",
"html (rails)": "html",
"html 5": "html",
"javascript (babel)": "javascript",
"magicpython": "python",
"php": "html",
"python django": "python",
"pythonimproved": "python"
},
"tooltip_fontsize": "1rem",
"tooltip_theme": "Packages/SublimeLinter/tooltip-themes/Default/Default.tooltip-theme",
"tooltip_theme_excludes": [],
"tooltips": false,
"warning_color": "DDB700",
"wrap_find": true
}
}其实主要就是添加其中 luacheck 的 ignore_match 这样语法检测就会忽略这些无关紧要的警高了
# 结语
以上就是 Lua 在 Sublime 的一些集成和配置已经相关插件推荐,这样就可以在 Subllime 中书写 Lua 了。
另外这儿的的 Lua 代码在 Sublime 的控制台中运行,无法使用 io.read() 之类进行输入,如若可以更改配置文件调用终端输入,欢迎留言评论~


有什么想法,欢迎留下评论。