Skip to content
zig 版本:0.14.0

编辑器选择

工欲善其事,必先利其器!

VS Code

官网地址:https://code.visualstudio.com/

Visual Studio Code 是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装其他扩展以拓展软件功能。

目前最轻量且生态丰富的编辑器,微软出品,zig 官方为其开发了插件,仅需要安装 Zig Language这个插件即可,在初次初始化时会推荐安装 language server,确认即可!

vscode-zig

Zed

官网地址:https://zed.dev/

ZED 是新一代的代码编辑器,使用 AI 增强人的开发速度。

这是近年来比较热门的编辑器,使用 rust 编写,并支持插件系统,颜值还很不错,同时其提出了一种 zed AI 的体系,用于接入各种 AI 模型,提供高效的使用体验。

Zig 扩展安装方式:在主界面按下 Ctrl + Shift + p,在呼出的命令栏中输入 extension,选择 zed: extensions,进入后搜索 zig,点击右侧的 Install 即可!

zed-zig

Vim / Neovim

Vim:https://github.com/vim/vim

Neovim:https://github.com/neovim/neovim

古老的编辑器之一,被誉为“编辑器之神”!

推荐安装插件 zig.vim,由官方维护,提供了基本的语法解析

zig.vim 配置小细节

推荐关闭 vim / neovim 的保存自动格式化功能(默认开启):

sh
# 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 并配置好。

nvim-zig

Emacs

如果说 Vim 是编辑器之神,那么 Emacs 就是神的编辑器!

Zig 官方维护了 Emacs 的插件 zig-mode,参照页面配置即可。

推荐使用 Emacs 28 版本新引入的 eglot 作为 LSP 客户端。

emacs-zig

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 插件(均为第三方作者维护)分别是 ZigBrainsZig Support,均支持 zig 的 latest release 版本。

Sublime Text

经典的编辑器,插件也是由 zig 官方维护:sublime-zig-language,安装即可。

⛔ 危险

值得注意的是,该插件已经有两年无人维护!

zls 体验优化

当前的 zls 已经支持保存时自动检查代码,但默认关闭。

仅仅需要在 zls 的配置文件(可以通过 zls --show-config-path)中加入以下内容即可:

json
{
  "enable_build_on_save": true,
  "build_on_save_step": "check"
}

同时对应的项目的 build.zig 也需要进行部分调整:

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 的内容,否则诊断功能将会失效。

更多资料: