【最新版】从零开始在 macOS 上配置 Lua 开发环境

 

脚本语言,你可能更需要的是 Lua

不同的脚本语言有不同的特性,第一接触的脚本语言,可能会影响自己对整个脚本语言的理解和认知。我以前接触最多的脚本语言是 JavaScript。后果就是:我一度以为脚本语言都是必须和宿主语言运行在不同的进程;脚本本身的语法受环境的影响很大,很难做到统一;如果想统一写法,都需要在应用体积上做出非常大的妥协(嵌入一个通用的 JS 解释器,会使应用体积增大十几 M)。

我在试着做一些努力,去改进因大量使用 JavaScript 引起的一些特定的技术问题。但是偶然间又想起了 Lua。最开始是从玩 WOW 的室友那里听说 Lua 的。因为他说写WOW插件很赚钱,所以曾经认真地搜索过 Lua,现在脑海中有一些残留的片段。

我突然意识到,可能 JavaScript 的大部分限制,在 Lua 或其他脚本语言中并不存在。想要解决那些因为使用 JavaScript 引起的各种问题,可能只需要换一门脚本语言。

当然,此处不考虑通常意义上的使用难度,学习难度,推广成本一类的因素;毕竟我是纯自嗨。但假如,Lua 真的能很好解决我目前遇到的脚本语言无法和宿主语言灵活通信的问题,必将给自己的整体知识体系带来一个新的提升,也必将在自己的日常实践中创造出许多新的可能。

所涉及的各个工具的版本

  • 编程语言: Lua 5.3.4

  • Lua 模块管理工具:LuaRocks 2.3.0

  • 编辑器:IntelliJ IDEA CE (社区版)

Build #IC-172.4343.14, built on September 26, 2017
JRE: 1.8.0_152-release-915-b12 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.13.1

  • 调试插件:EmmyLua 1.2.0

  • 操作系统:macOS 10.13.1

  • macOS 专用模块管理工具: Homebrew 1.3.6

以下讨论,均以 macOS 为主,其他系统平台仅供参考。

安装 Lua

打开 macOS 终端,输入以下指令:

brew tap homebrew/versions
brew install lua53

Lua 的安装有多种方式,这是较为简化高效的一种。需要注意的是,以此种方式安装,Lua 的调用命令,将变为 lua5.3

安装 Lua 模块管理工具:LuaRocks

打开 macOS 终端,输入以下指令:

brew tap mesca/luarocks
brew install luarocks53

LuaRocks 的安装也有多种方式,这是较为简化高效的一种。需要注意的是,以此种方式安装,LuaRocks 的调用命令,将变为 luarocks-5.3

选择一个合适的 Lua 编辑器: IntelliJ IDEA CE

Lua 日常编码,推荐使用 IntelliJ IDEA CE(社区免费版),下载地址:https://www.jetbrains.com/idea/download/

主要是从配置难度,语法高亮,代码提示,代码调试等方面权衡。

使用 EmmyLua 插件配置调试环境

安装 EmmyLua

Lua 的调试和高亮,主要得益于 EmmyLua。在 IntelliJ IDEA CE 的 Plugins 中,直接搜索安装即可。记得,要先安装此插件,然后再新建工程。安装此插件后,工程模板,会多一个 Lua 模板选项。从 Lua 模板新建工程,会简化许多 Lua 相关的配置。

安装 luasocket

在安装 EmmyLua 插件之后,还需要安装一个 Lua 库 luasocket,才能进行调试。

打开终端,输入以下指令:

sudo luarocks-5.3 install luasocket  

修改 lua 路径配置

Lua 的配置路径要从默认的 lua,改为 lua5.3 的真实路径,一般是 /usr/local/bin/lua5.3

开始调试

在 IntelliJ IDEA CE 中新建 Lua 工程,然后新建 Lua 文件 hello.lua,输入代码:

-- defines a factorial function
function fact (n)
if n == 0 then
return 1
else
return n * fact(n - 1)
end end
a = 42
print(fact(a))

在编辑区左侧,打上几个断点,然后文件编辑区右键,选择 Debug 'hello.lua':

一起简单看下 Debug 断点调试的效果:

注意事项

  • 一定是要在配置好 EmmyLua 插件后,直接基于新出现的 Lua 模板新建工程;否则在修改项目配置上,可能会花费许多时间。

  • 只有 Lua 5.3 以后的版本才支持 UTF-8,有大量中文处理需求的童鞋可能会需要这个信息。

  • 调试时报错 module 'socket' not found ,是因为没有安装 luasocket。

  • Lua 基于MIT 开源,如果哪天想自己定义某种新语言来实现特定的产品特性,可以考虑基于 Lua 定制。

  • 借助于 LuaJIT,Lua 的执行效率可以进一步提升几十倍。

  • Lua 支持各种低级硬件嵌入式开发,可移植性非常好,物联网时代可能会有新的可能和增长潜力。

  • 如果感觉 lua5.3 没有 lua 写着方便,可以试着在 .profile 中配置 alias 命令别名,详见:https://stackoverflow.com/a/8967864

alias lua="/usr/local/bin/lua5.3"
alias luarocks="/usr/local/bin/luarocks-5.3"
  • 命令别名,不能 sudo 执行,如安装 luasocket 时,还是需要 sudo 原始命令:

sudo luarocks-5.3 install luasocket

小结

以上介绍了 macOS 平台,Lua 从安装到配置调试环境的完整过程。接下来,就可以根据自己的节奏和需要,好好领略 Lua 之美了~

参考文档:

macOS 上配置 Lua的更多相关文章

  1. 【最新版】从零开始在 macOS 上配置 Lua 开发环境

    脚本语言,你可能更需要的是 Lua 不同的脚本语言有不同的特性,第一接触的脚本语言,可能会影响自己对整个脚本语言的理解和认知.我以前接触最多的脚本语言是 JavaScript.后果就是:我一度以为脚本 ...

  2. 【LuaJIT版】从零开始在 macOS 上配置 Lua 开发环境

    前言 这篇文章针对的是基于 LuaJIT 的环境配置.借助于 LuaJIT,Lua 的执行效率可以进一步提升几十倍.如果你不是很清楚自己是需要 Lua 还是 LuaJIT,那么建议你从 LuaJIT ...

  3. 在MacOs上配置Hadoop和Spark环境

    在MacOs上配置hadoop和spark环境 Setting up Hadoop with Spark on MacOs Instructions 准备环境 如果没有brew,先google怎样安装 ...

  4. CentOS 上配置 lua 的服务器环境(enet)

    安装 lua & luarocket 安装依赖 $ yum install gcc gcc-c++ kernel-devel $ yum install readline-dev $ yum ...

  5. (一)通过JAVA连接SAP (sapjco3.jar在Windows和MacOS上的配置)

    (一)通过JAVA连接SAP调用接口 (sapjco3.jar在Windows和MacOS上的配置) 一.sapjoc3.jar获取 由于sap官网提供的链接需要合作公司提供账号密码,如果商用请索要正 ...

  6. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  7. CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]

    上一篇文章我提到:为了使用"国货",我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊.还好,这货支持 macOS 系统.所以就把 ...

  8. docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用

    .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...

  9. ASP.NET Core 中文文档 第二章 指南(1)用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

    原文:Your First ASP.NET Core Application on a Mac Using Visual Studio Code 作者:Daniel Roth.Steve Smith ...

随机推荐

  1. pwd---以绝对路径的方式显示用户当前工作目录

    pwd命令以绝对路径的方式显示用户当前工作目录.命令将当前目录的全路径名称(从根目录)写入标准输出.全部目录使用/分隔.第一个/表示根目录,最后一个目录是当前目录.执行pwd命令可立刻得知您目前所在的 ...

  2. Ubuntu 16.04安装mysql (连接)

    1.安装mysql sudo apt-get install mysql-server 注:若出现依赖问题安装失败,先执行以下命令sudo apt-get install -f 2.安装过程中会输入密 ...

  3. 【Uva 242】Stamps and Envelope Size

    [Link]: [Description] 给你n个集合; 每个集合都包含一些不同面额的邮票; (每种邮票都当做有无限张) 然后给你一封信上最多能贴的邮票张数S; 问你,哪一个集合的邮票; 能够贴出来 ...

  4. HOJ——T 1867 经理的烦恼

    http://acm.hit.edu.cn/hoj/problem/view?id=1867 Source : HCPC 2005 Spring   Time limit : 2 sec   Memo ...

  5. eclipse部署maven web项目到tomcat服务器时,没有将lib、web.xml复制过去的解决办法

    我这几天在写项目的时候发现自己以前的项目能够访问,隔一段时间写的这个项目却不能够访问,没有发现代码的逻辑错,但是就是访问不了jsp页面,项目一发布就是出现404错误,后来发现原来是发布到tomcat上 ...

  6. pip的认识

    一.pip与python的关系:pip并不是一种语言,而是一个Python包管理工具,主要是用于安装 PyPI 上的软件包.安装好pip之后,使用pip install 命令即可方便的安装python ...

  7. IOS 一句代码搞定启动引导页

    前言引导页,一个酷炫的页面,自从微博用了之后一下就火起来了,对于现在来说一个app如果没有引导页似乎总显那么不接地气,那么为了让我们的app也“高大上”一次,我写了一个demo来实现启动引导页的实现, ...

  8. 修改url中某个参数

    function changeURLArg(url,arg,arg_val){ var pattern=arg+'=([^&]*)'; var replaceText=arg+'='+arg_ ...

  9. Flask的快速入门详细笔记

    Flask的框架结构对应关系及理解 1.简介 简单介绍下Flask是一个轻量级的web前端框架,不像django那样本身具备一套完整的页面体系,轻量级说明了完全可以自定义,从功能逻辑到业务处理,都可以 ...

  10. 洛谷 P1957 口算练习题

    洛谷 P1957 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效 ...