0x00 任务目标
配置VScode中的Lua开发环境,包含代码提示等工具。
配置Code Runner,让其Lua代码运行在VSCode中的LuatOS模拟器中。
0x01 配置Lua开发环境
VSCode支持在不同的工作环境配置不同插件,类似于虚拟环境。我们将在VSCode中配置专属于LuatOS的开发环境。
1. 创建VSCode配置环境并切换
启动VSCode,点击设置->配置文件(默认)->创建配置文件
在弹出的对话框中,输入我们创建的配置文件名称:"LuatOS",可自定义名称,并点击确认。
此时VSCode应该自动切换了配置文件,且插件应该仅仅安装了中文插件,这个环境非常纯净。如果没有切换或者想要切换到其他环境,可以在点击设置,切换不同的配置文件。
上图可以看到,我配置了很多配置文件,当前使用了LuatOS配置。
2. 安装LuatOS扩展
参考LuatOS官网文档,安装插件"LuatOS-SOC推荐拓展包"、"LuatOS-SOC代码补全"和"Code Runner",安装完成后应该如下图所示。
3. 创建HelloWorld工程
😊 此时,开发环境已经配置成功,可以在特定的位置创建一个工程目录,并用VSCode打开,笔者创建了一个HelloWorld工程,并编写了main.lua,如下图所示:
Lua
PROJECT = "hello_world"
VERSION = "0.0.1"
-- 代码来自于LuatOS模拟器:"https://wiki.luatos.com/_static/luatos-emulator/lua.html"
-- 此处为纯lua5.3测试场地
-- 同时,支持加载sys库,使用task框架特性
-- 如下:
-- 加载sys库
sys = require("sys")
-- 启动一个定时器
sys.timerLoopStart(function()
log.info("Timer:", os.time())
end, 1000)
-- 新建任务,每休眠2000ms继续一次
sys.taskInit(function()
local count = 0
while true do
sys.wait(2000) -- 等待2000ms
count = count + 1
log.info("Task", "Running: ", count, "Times")
end
end)
-- 用户代码已结束---------------------------------------------
-- 运行lua task,只能调用一次,而且必须写在末尾
-- 结尾总是这一句
print("HelloWorld")
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
0x02 配置LuatOS模拟器
1. 下载LuatOS模拟器文件并解压
前往合宙网盘下载对应文件,并解压到特定目录,笔者将文件解压至了目录:"D:\LuatOSeMulator"
2. 测试LuatOS是否正常使用
复制上述main.lua至该目录,利用命令行运行lua文件到模拟器中。
在当前目录下运行Windows PowerShell,并运行以下代码:
bash
.\luatos.exe .\main.lua
😊 当前模拟器运行正常。
0x03 配置Code Runner一键运行在LuatOS模拟器中
本小节将介绍利用Code Runner直接在VSCode的终端中使用LuatOS模拟器运行Lua。
1. 配置Code Runner
通过UI或者快捷键打开Code Runner的配置项,可以看到以下配置项。
【必选配置项】Code-runner: Run In Terminal ,终端中运行,必须勾选。
【可选配置项】*Code-runner: Save All Files Before Run,*运行前保存所有文档,个人可以按照自己的需要勾选。
【可选配置项】*Code-runner: Save File Before Run,*运行前保存当前文档,个人可以按照自己的需要勾选。
除了"必选配置项"外,其余配置项可以根据自身配置。通过浏览或者利用搜索框筛选,找到配置项:"Executor Map"
点击"在setting.json中编辑",打开配置文本,找到lua的配置项,填写模拟器可执行文件的路径,如下图所示,并快捷键操作Ctrl+S保存设置。
😊 此时已经完成模拟器运行的配置。
2. 测试效果
在VSCode中,打开HelloWorld的main.lua,并点击"运行"按钮,若出现以下内容,则说明已经运行成功,终止运行请输入"Ctrl C"
0x04 存在的问题
1. 未配置调试
配置完成后,利用本文方法配置后,无法调试运行在LuatOS模拟器中的程序,可能需要Print大法。
2. 中文编码异常
若输出包含中文,编码异常,当前未找到方法解决,如下图片所示。
0x05 参考文档与资源
0x06 后记
- No Pains,No Gains