# 引言
最近学习 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]{.blue}, 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 |
可执行程序下载链接
http://www.lua.org/download.html
将解压后的目录放在需要的位置即可,三个执行文件所在目录即为 Lua 可执行程序目录
# 添加环境变量
将上一步的 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
解压后执行程序所在路径 添加到 [环境变量]{.blue} 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
文件添加到 [环境变量]{.blue} 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()
之类进行输入,如若可以更改配置文件调用终端输入,欢迎留言评论~