Lua在Linux下的IDE选择与使用 (lua linux ide)

Lua 是一个轻量级、高效的脚本语言,被广泛应用于游戏开发、嵌入式设备控制等领域。在 Linux 系统中,Lua 的应用也越来越广泛。本文将介绍 Linux 系统下常用的 Lua IDE 工具,以及相应的使用方法和技巧,帮助 Lua 开发者更高效地开展工作。

1. ZeroBrane Studio

ZeroBrane Studio 是 Lua IDE 中比较著名的一种产品,目前支持 Windows、Mac OS X、Linux、FreeBSD、OpenBSD 等操作系统。它具有轻量、快速的特点,支持多种调试工具,用户可以自定义语法高亮、括号匹配和自动补全等功能。ZeroBrane Studio 支持在本地或远程调试 Lua 代码,能够自动检测最小需求,并且支持对 Lua 虚拟机进行直接控制,可以帮助你更快地调试代码并实现错误修正。

使用方法:下载安装 ZeroBrane Studio 后,打开软件。软件自带常用调试模式,可以直接使用,也可以自定义调试模式。新建项目后,即可在左侧目录树下找到应用程序,并编辑代码。进入调试模式之前,需设置调试选项,进行连接设置。设置完成之后,即可开始调试代码,通过断点、单步调试等操作查看变量值和程序状态。

2. Eclipse Koneki Lua Development Tools

Eclipse Koneki Lua Development Tools 是 Eclipse 社区开发的一款 Lua 开发工具,支持多种编程语言和框架,能够轻松集成到 Eclipse 开发环境。Eclipse Koneki Lua Development Tools 提供了多种调试工具,包括调试器、日志查看器、性能分析器等,支持代码高亮、自动补全、语法检查等功能。它还可以支持仿真器、远程调试等功能,适用于开发嵌入式设备。

使用方法:安装 Eclipse Koneki Lua Development Tools 后,打开 Eclipse,点击“Help”菜单,选择“Eclipse Marketplace”,在搜索框中输入“Koneki Lua Development Tools”,安装该插件。安装完成后,在导航菜单中选择“Window”>“Open Perspective”>“Other”,在弹出窗口中选择“Lua Development”。

3. IntelliJ IDEA with Lua plugin

IntelliJ IDEA 是 JetBrns 公司开发的一款 Java 集成开发环境,提供了丰富的插件,支持多种编程语言和框架。IntelliJ IDEA 的 Lua 插件提供了代码高亮、自动补全、语法检查、重构等功能,支持代码导航、快速跳转等特性。Lua 插件还支持代码调试、单元测试、代码覆盖率分析等功能。

使用方法:安装 IntelliJ IDEA 后,打开 IDE,在主菜单中选择“File”>“Settings”>“Plugins”>“Browse repositories”,寻找 Lua 插件,安装后重启 IDE。创建新 Lua 工程后,在左侧 Projects 窗口选择工程,即可使用 Lua 插件编辑代码,支持调试断点等操作。

在 Linux 下选择合适的 Lua IDE 工具可以极大地提高我们的开发效率。本文介绍了 ZeroBrane Studio、Eclipse Koneki Lua Development Tools 和 IntelliJ IDEA with Lua plugin 三种工具的使用方法和技巧,希望能够对 Lua 的开发者有所帮助。当然,还有其他的 Lua IDE 工具,如 SciTE、Geany、Textadept 等,也值得尝试。同时,Lua 作为一种轻量级、高效的脚本语言,未来也将有更多的开发者涌入其中,并为其打造更好的开发工具。

相关问题拓展阅读:

Linux lua中require “bit”

为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来。现在看看lua的require的处理流程。

函数原型:require(modname)modname —->加载的模块名称

首先Lua提供高级的require函数来加载运行库。粗略的说require和dofile完成同样的功能但有两点不同:

1、require会搜索目录加载文件

2、require会判断是否文件已经加载避免重复加载同一文件。

由于上述特征,require在Lua中是加载库的更好的函数。

require函数实现了不同lua文件的加载,类似于C++中的include,java中的import。

require使用的路径和普通的路径还是有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模式列表,每一个模式指明一种由虚文件名(require的参数modname)转成实文件名的方法。更明确地说,每一个模式是一个包含可选的问号(?)的文件名。匹配的时候Lua会首先将问号用虚文件名替换,然后看是否有这样的文件存在。如果不存在继续用同样的方法用第二个模式匹配。例如,路径如下:

?; ?.lua; c:\windows\?; /usr/local/lua/?/?.lua调用require(“add”)时会试着打开以下这些文件:

add

add.lua

c:\windows\add

/usr/local/lua/add/add.lua

为了确定路径,Lua首先检查全局变量LUA_PATH是否为一个字符串,如果是则认为这个串就是路径;否则require检查环境变量LUA_PATH的值,如果两个都失败require使用固定的路径(典型的”族戚渗?;?.lua”).

require函数的实现原理如下:

–require 函数的实现

function require(name)

if not package.loaded then

local loader = findloader(name) //这一步演示在代码中以抽象函数findloader来表示

if loader == nil then

error(“unable to load module” .. name)

end

package.loaded = true

local res = loader(name)

if res ~= nil then

package.loaded = res

end

end

return package.loaded

end

require(在lua中它是ll_require函数)函数会在路径中搜索输入的文件路径,大致流程如下:

1、package.loaded

一个用于控制哪些模块已经加载的表,该表由require使用。当require一个模块名为modname的模块且package.loaded不为false时,require仅返回package.loaded存储的值.

2、 package.preload

为特定模块存仔友储加载器的一个表。查找modname, 如果preload存在,那么就把它作为loader,调用loader(L)

3、package.path

查找lua库modname,这个库是通过module函数定义的,对于顶层的lua库,文件名和库名是一 样的而且不需要调用显式地在lua文件中调用module函数(在ll_require函数中可以看到处理方式),也就是说lua会根据lua文件直接完 成一个loader的初始化过程。

4、package.cpath(实现lua调用C函数)

查找c库,这个库是符合lua的一些规范兆脊的(export具有一定特征的函数接口),lua先已动态的方式加载该c库(.so),然后在库中查找并调用相应名字的接口,例如:luaopen_hello_world

5、已之一个”.”为分割,将模块名划分为:(main, sub)的形式,根据package.cpath查找main,如果存在,就加载该库并查询相应的接口:luaopen_main_sub,例如:先查找 hello库,并查询luaopen_hello_world接口

6、得到loder后,用modname作为唯一的参数调用该loader函数。当然参数是通过lua的栈传递的,所以loader的原型必须符合lua的规范:int LUA_FUNC(lua_State *L)

ll_require会将这个loader的返回值符给package.loaded,如果loader不返回值同时 package.loaded不存在时, ll_require就会把package.loaded设为true。最后ll_reuqire把package.loaded 返回给调用者。

require的另一个功能是避免重复加载同一个文件两次。Lua保留一张所有已经加载的文件的列表(使用table保存)。如果一个加载的文件在表中存在require简单的返回;表中保留加载的文件的虚名,而不是实文件名。所以如果你使用不同的虚文件名require同一个文件两次,将会加载两次该文件。比如require “foo”和require “foo.lua”,路径为”?;?.lua”将会加载foo.lua两次。我们也可以通过全局变量_LOADED访问文件名列表,这样我们就可以判断文件是否被加载过;同样我们也可以使用一点小技巧让require加载一个文件两次。比如,require “foo”之后_LOADED将不为nil,我们可以将其赋值为nil,require “foo.lua”将会再次加载该文件。

为什么很多IDE都会开发linux版的?他们能收回成本吗?

据Stack Overflow 2023年的调查数据显示,Linux和Windows是最常见的开发平台,大约有一半的人使用Windows做开发,其余的大约平均分配给了MacOS和Linux。

单论IDE面向的用户来说,Linux一点也不小众,IDE不开发Linux版不仅仅是散失四分之一的用户,而是丢失了一整个生态。

Linux版IDE的需求是切切实实存在的,开发IDE的商业公司都不会忽略这个市场,而且现有的跨平台GUI开发方案都比较成熟了,这也降低了不少的开发成本,如JetBrains全家桶大量使用Java,迁移难度相对较低。

商业化很成功的IDE收回成本肯定不是问题,因为单套IDE售价通常都不便宜,加上销售规模庞大,利润十分可观。也有不少IDE是非盈利性质的,根本不用考虑收回成本,它们的资金由某些基金会提供或来自 社会 捐赠。

IDE跨平台是必然趋势

很多大厂背后都有自己的小心思,不愿意把技术绑死在Windows上面白白的给微软打工,通过跨平台来压制微软在操作系统上的优势,重新制定 游戏 规则。如:Sun有自己的工作站和Solaris、IBM有PowerPC和OS2。

现在语言和框架层面已经基本解决了跨平台问题,那么即使在应用方面还需要进行少量的适配,成本也并不会高到哪里去。如果只专注一到两个平台的话,确实可以做到深度优化,但这个代价是放弃未来在其他平台发展的可能性。未来如果还要移植到其他平台,如:Android、ARM架构,跨平台的IDE就会显得得心应手。

开源社区也广泛接受了跨平台的思想,并且一直致力于实现跨平台的目标。像Wine、OpenOffice、Cygwin这样的适配工作都有人搞,做IDE的怎么可能放弃Linux平台呢?

微软发现风向标变了不能继续这样玩下去了

细心的小伙伴们就会发现这几年微软变了,开始拥抱Linux、拥抱开源、拥抱跨平台。除了Windows、Office、Azure这些可以直接盈利的项目没有开源之外,其他的都开源了,目前微软的开源项目已经有一千多个了。

Vscode、GitHub、Azure已经形成了一条完整的生态链,只要在这条生态链上稍微进行扶持,就能吸引更多的开发者、应用选择Azure。

套升皮用一下纳德拉说过的话:“微软长期坚持的一个信条是,Linux等开源软件是公司的敌人。现在我们已经无力为这样的态度买单。我们必须满足客户的需求,而更重要的是确保我们以一种前瞻的方式而不是透过后视镜寻找机遇”。只有在战略上拥抱Linux、开源、跨平台,只有通过开源社区的广泛参与,微软才可能持续的壮大。

跨平台开发正在成为主流,微软免费推出的跨平台Web和云开发代码编辑器vscode支持多达 30 多种编程语言,为跨平台开发者带来了极大的便利。VSCode和Typescript的组合也让复消前杂的前端项目变得容易许多。

从IOS、Android、Windows Phone的混战就可以看出开源、跨平台的重要性

如果让一个软件开发者只开发IOS应用,而不开发Android应用,他绝对会说这样是很明智的。这时跨平台开发的重要性就开始凸显出来,它可以减少代码重构、部署的时间,降低开发成本。所以跨平台的IDE是非常有优势的。

以上个人浅见,欢迎批评指正。

IDE的开发是商业行为,一样是符合市场规律的。

首先,Linux服务器占用率很高,所以使用Linux开发的程序员的比例很高。因此开发Linux版本是符合市场规律的。

其次,使用c或是Java开发的IDE,gui改改就能移植到Linux,所以开发成本可控。

最后,不论是Linux还是Windows版本,很多IDE都有免费社区版,一方面很多开源的拿笑清东西需要更多人参与维护才能完善,另一方面使用量上来了各种赚钱的方式就产生了。而不只是卖软件license赚钱一条路。

linux主要用户群就是程序员,编程语言IDE主要用户也是程序员,有什么理由不开发Liunx版

大公司开发跨平台ide不一定单纯为了钱,像是google的chrome,通过市场占有率可以推动互联网一些新技术的发展,比如 ssl,spdy,只有通过较大的市场份额才有制定标准的话语权。 还有是培养用户习惯,增加用户粘性后推广自家其他服务,比如vscode,微软家的。 还有就是软件成本是一次性的,开发出来后销售的是使用权,不是所有权,所以可以无限授权,现在linux开发用户也不少,企业看中的是大客户企业授权。这个是营收大头,还有一些定制化服务也是单独收费的。总之,一个企业公司不是做福利事业的,他是需要盈利的,只是我们一时半会没看明白他的盈利模式。

c语言的几个IDE是用c语言或java写的。开发的时候注意的话,很容易跨windows和linux,成本差别很小

如果是使用跨平台语言做的IDE(如java),不需要针对windows和linux单独开发。

因为开发windows比开发跨平台的成本高,开发windows要么mfc,开发超慢,要么.net,但是.net客户端部署成本高。反而是qt开发,效率高,部署简单,而且跨平台,python开发人员也好招。

ide很多都是社区版的,都是程序员自己义务工作搞出来自己用的工具。所以,为什么不开发linux版本?难道你准备在windows上调试linux程序?

你说的是idea吗?idea是java写的,随便套个壳可以在任何平台使用。也是它消耗内存巨大的原因

eclipse 开源的

小弟问一下各位前辈,做linux下面的C开发一般用什么IDE和调试工具

Linux系统扒巧段C语言开发一般不用IDE,因为Linux系统C或者C++语言IDE并不能带来方便,相反还有点繁琐,主要是不够灵活。Linux C编程一般都是在文本编辑器中写代码(具体用哪个文本编辑器完全是个人喜好,专业的文本编辑器往往要比IDE的代码编辑功能要更好更强大),然后在命令行下编译(编译可以用gcc命令、g++命令,也可以编写一个makefile然后用make命令。如果你学会了makefile的编写,比IDE要方便多了,只输入一句make然后按下回车不就和点击编译按钮一样么),调试是用gdb。为什么说IDE不够灵活呢,举个例春誉子,你编写了一个程序需要调用一个共享库,但是你不知道怎么编译(就是不知道该加什么编译参数),你百度一下后,就知道编译的命令了,但是你不知道怎么控制IDE的行为,它能正常编译还好,如果不能正常编译,你就会各种折腾,效率肯定不高。

如果你实在偏爱IDE,Linux上的IDE也不少(这里只列宽并举C/C++的IDE),有codeblocks、eclipse-cdt、codelites。调试工具也有图形界面的,比较好用的有KDbg、Affinic Debugger GUI。

lua linux ide的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于lua linux ide,Lua在Linux下的IDE选择与使用,Linux lua中require “bit”,为什么很多IDE都会开发linux版的?他们能收回成本吗?,小弟问一下各位前辈,做linux下面的C开发一般用什么IDE和调试工具的信息别忘了在本站进行查找喔。


数据运维技术 » Lua在Linux下的IDE选择与使用 (lua linux ide)