Zig 语言格式化器
指导
Zig 语言格式化器
粘贴原始的Zig代码,立即获得符合规范的格式化代码 zig fmt 风格:K&R大括号、4个空格缩进、多行列表末尾逗号、运算符周围一致的空格、以及整洁的多行字符串块。无需安装,无需工具链——完全在浏览器中运行。
如何使用
- 将您的Zig代码粘贴到输入框中,或拖放一个
.zig文件到上传器。 - 选择缩进风格——4个空格(zig fmt 默认)、2个空格或制表符。
- 切换 添加尾随逗号 以每行一个元素的规则应用于多行参数和字段列表。
- 。使用结构视图确认你的虚拟主机布局,并使用验证器来发现不匹配或未闭合的区块标签。
formatted.zig.
特征
- 规范大括号风格 ——将悬垂的左大括号移到上一行,不使用K&R或Allman风格。
- 操作符间距 ——规范化运算符周围的空格
=,==,!=,<=,+,-,*,/,%,++,**,&&,并且||而不破坏一元或指针语法。 - 关键字间距 ——在
if,while,for,switch,catch,orelse之后插入一个空格,以及在其他控制流关键字前插入一个空格(或{. - 尾随逗号 ——在多行
{},(),并且[]列表的末尾添加逗号,当右括号单独成行时。 - 多行字符串 ——保留
\\字符串续行并将其缩进到赋值后的下一级。 - 括号验证 ——标记未匹配的
{},(),[],以及未终止的块注释,在您看到编译错误之前就提示。 - 缩进控制 ——根据您的风格选择4个空格、2个空格或制表符。
- 文件或粘贴 ——拖入一个
.zig文件或直接粘贴。输出可一键复制和下载。
常问问题
-
为什么Zig使用自己的格式化工具而不是依赖约定?
Zig将源代码布局视为语言契约的一部分。zig fmt 是一个基于编译器自身解析器构建的规范重写器,因此每个平台上的每个项目都会生成完全一致的字节输出。这消除了风格争论,使差异无噪音,并为像LSP这样的工具提供了稳定的基准。而风格指南中记录的约定会在团队间漂移;一个确定性的格式化工具则不会。
-
在Zig中,尾随逗号规则实际上意味着什么?
在Zig中,参数列表、结构体字段列表或数组字面量最后一个元素的尾随逗号是告诉zig fmt:保持该列表每行一个元素的信号。如果移除尾随逗号,zig fmt 会将列表合并到单行,前提是它能容纳。这使得格式化部分由作者控制——一个逗号就是垂直布局与水平布局之间的区别。
-
Zig源代码中如何表示多行字符串?
Zig没有三引号字符串。多行字面量是通过堆叠以行首的反斜杠反斜杠序列开始的单行片段构建的。片段前的空白属于缩进,而不是内容,因此字符串值是紧跟在第二个反斜杠之后到行末的所有内容,通过字面换行连接而成。
-
为什么选择K&R大括号布局?
K&R风格——大括号与引入块的构造在同一行——最小化了垂直噪音,并保持从条件到主体的视觉视线短。它还避免了JavaScript风格的自动分号危险,其中前置大括号会引发无关的返回解析问题。Zig跟随Go和Rust,标准化了这种布局,以保持语言表面的简洁。
-
启发式格式化工具是否可能在边缘情况下与真实的zig fmt不一致?
基于正则表达式和分段的格式化工具无法与基于解析器的工具在边缘情况(如comptime块、通用匿名结构体和标记块)中匹配,因为这些情况有上下文相关的间距规则。对于日常格式化(缩进、大括号位置、运算符间距、尾随逗号)的大部分情况,启发式输出是无法区分的。在提交前需要规范格式化,请在本地运行zig fmt;浏览器工具仅用于快速清理、代码审查预览和粘贴到聊天中的代码片段。
