编辑器选择
工欲善其事,必先利其器!
VS Code
官网地址:https://code.visualstudio.com/
Visual Studio Code 是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装其他扩展以拓展软件功能。
目前最轻量且生态丰富的编辑器,微软出品,zig 官方为其开发了插件,仅需要安装 Zig Language
这个插件即可,在初次初始化时会推荐安装 language server,确认即可!
Zed
官网地址:https://zed.dev/
ZED 是新一代的代码编辑器,使用 AI 增强人的开发速度。
这是近年来比较热门的编辑器,使用 rust 编写,并支持插件系统,颜值还很不错,同时其提出了一种 zed AI 的体系,用于接入各种 AI 模型,提供高效的使用体验。
Zig 扩展安装方式:在主界面按下 Ctrl + Shift + p
,在呼出的命令栏中输入 extension,选择 zed: extensions
,进入后搜索 zig,点击右侧的 Install
即可!
Vim / Neovim
Vim:https://github.com/vim/vim
Neovim:https://github.com/neovim/neovim
古老的编辑器之一,被誉为“编辑器之神”!
推荐安装插件 zig.vim,由官方维护,提供了基本的语法解析
zig.vim 配置小细节
推荐关闭 vim / neovim 的保存自动格式化功能(默认开启):
# for vim
let g:zig_fmt_autosave = 0
# for neovim lua
vim.g.zig_fmt_autosave = false
Neovim 使用内置的 lsp(大多数用户选择)支持的话,推荐使用插件 zig-lamp,该插件支持自动安装和配置 zls,并且支持可视化管理 build.zig.zon
文件!
Neovim 使用 coc.nvim
作为 language server,则推荐使用 coc-zig,会自动下载最新的 zls 并配置好。
Emacs
如果说 Vim 是编辑器之神,那么 Emacs 就是神的编辑器!
Zig 官方维护了 Emacs 的插件 zig-mode,参照页面配置即可。
推荐使用 Emacs 28 版本新引入的 eglot 作为 LSP 客户端。
VS
官网地址:https://visualstudio.microsoft.com/
Microsoft Visual Studio 是微软公司的开发工具包系列产品。VS 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如 UML 工具、代码管控工具、集成开发环境等等。
windows 上最棒的开发 IDE,存在第三方插件:ZigVS。
CLion
CLion 是一款专为开发 C 及 C++ 所设计的跨平台 IDE。它是以 IntelliJ 为基础设计的,包含了许多智能功能来提高开发人员的生产力。CLion 帮助开发人员使用智能编辑器来提高代码质量、自动代码重构并且深度整合 CMake 编译系统,从而提高开发人员的工作效率。
原本 CLion 仅仅是 C/C++ 的开发 IDE,但在安装插件后可以作为 zig 的 IDE 使用。
目前插件市场活跃的两个 zig 插件(均为第三方作者维护)分别是 ZigBrains 和 Zig Support,均支持 zig 的 latest release
版本。
Sublime Text
经典的编辑器,插件也是由 zig 官方维护:sublime-zig-language,安装即可。
⛔ 危险
值得注意的是,该插件已经有两年无人维护!
zls 体验优化
当前的 zls 已经支持保存时自动检查代码,但默认关闭。
仅仅需要在 zls 的配置文件(可以通过 zls --show-config-path
)中加入以下内容即可:
{
"enable_build_on_save": true,
"build_on_save_step": "check"
}
同时对应的项目的 build.zig
也需要进行部分调整:
const exe_check = b.addExecutable(.{
.name = "foo",
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});
const check = b.step("check", "Check if foo compiles");
check.dependOn(&exe_check.step);
这意味着要求编译器在编译时会添加 -fno-emit-bin
,然后 Zig 将仅仅分析代码,但它不会调用 LLVM,所以并不会生成实际的文件
但需要注意的是,我们对 zls
的设置是全局的,也就意味着我们需要给所有项目添加上述 build.zig
的内容,否则诊断功能将会失效。
更多资料: