Lua代码格式化器
指导
Lua代码格式化器
粘贴您的 Lua 代码,一键获得格式整洁、缩进均匀的版本。该格式化器理解 Lua 的代码块结构(if/then/end、do/end、function/end、repeat/until),并规范化运算符间距,而不会将您的代码发送到任何服务器——所有操作都在您的浏览器中完成,因此适用于专有游戏脚本、嵌入式设备固件和配置片段。
如何使用
- 将您的 Lua 源代码粘贴到输入区域,或点击 尝试一个示例 加载示例。
- 选择您的缩进样式:2 个空格(默认)、4 个空格或制表符。
- 切换 保留注释 如果您希望移除所有行注释和块注释而不是保留它们。
- 切换 合并多个空行 以合并连续的空行为单个换行。
- 点击 格式。使用复制或下载图标获取结果。
特征
- 块感知缩进 – 跟踪 Lua 关键字(then、do、repeat、function、end、until、else、elseif)以实现一致的嵌套结构。
- 操作符间距 – 规范化 =、==、~==、..、算术和比较运算符周围的间距,同时保持表索引(
t.x)和方法调用(obj:m())的紧密性。 - 字符串与注释安全 – 长字符串(
[[...]],[=[...]=])和块注释保持原样;其中内容不会被重新格式化。 - 缩进样式选择 ——使用 2 个空格、4 个空格或制表符。
- 注释控制 – 保留您的注释或移除所有注释。
- 空行清理 – 可选地合并长段空行。
- —— cURL 命令永远不会离开您的浏览器。在您不想将 API 令牌粘贴到聊天服务时非常有用。 – 100% 客户端,无需上传,无需 AI 交互。
适用对象
Lua 出现在游戏脚本(Roblox、Love2D、World of Warcraft 插件、Garry’s Mod)、嵌入式环境(OpenWrt、Redis 模块、Neovim 配置)以及许多 CI 流程中。如果您经常编写或审查 Lua 代码,您需要一个快速、确定性的格式化器,无需本地工具链。只需将论坛帖子、同事的拉取请求或生成的配置片段粘贴进来,即可立即清理并格式化。
常问问题
-
Lua 为何使用 end 而不是大括号?
Lua 是为嵌入性和可读性而设计的,因此其作者选择了关键字限定的代码块(then/do/repeat ... end、until)而非符号。关键字在短脚本中更容易扫描,并且当 Lua 代码嵌入 C 字符串时,可以避免与宿主语言大括号的冲突。这种设计的代价是冗长——每个代码块都必须显式关闭,而这正是一个能正确处理开闭配对的格式化器所发挥的作用。
-
Lua 中短字符串和长字符串有何区别?
短字符串用单引号或双引号包裹,并支持 \n 和 \t 等转义序列。长字符串使用双方括号 ([[...]]) 和可选的等号层级 ([==[...]==]),以便包含未转义的引号和换行符。括号层级允许嵌套内容,其中包含闭合括号——请选择最小的层级,使其不出现于您的文本中。
-
Lua 中的 .. 拼接运算符与其它语言中的 + 有何不同?
在 Lua 中,+ 严格用于数值运算——使用 + 拼接字符串会引发错误。.. 运算符用于字符串拼接(自动将数字转换为字符串形式),并且是右结合的,这意味着 a..b..c 被解析为 a..(b..c)。对于大量拼接操作,table.concat 更高效,因为 .. 在每一步都会分配一个新的字符串。
-
Lua 为何同时存在 pairs 和 ipairs?
ipairs 遍历表的数组部分——从键 1、2、3... 直到遇到 nil。pairs 遍历表中的所有键,包括字符串键和整数序列中的空缺。pairs 的遍历顺序无法保证,而 ipairs 始终按数值顺序进行。选择正确的遍历方式既是正确性也是性能的决定。
