zig 在 vscode 跑不起来主因是 zig 命令未全局可用或插件路径配置错误;必须确保终端执行 zig version 有响应,再配置 zig fmt 格式化、codelldb 调试及 zls 补全支持。

Zig 在 VSCode 里跑不起来,90% 是 zig 命令没进 PATH 或插件没配对路径,不是插件本身有问题。
zig 命令必须全局可用,否则所有功能都会静默失效
VSCode 的 Zig 插件(无论 ziglang.zig 还是 kubkon.zig)默认只调用系统 PATH 中的 zig 可执行文件。它不会自动找你解压在 Downloads 里的那个 zip 包,也不会读取你写在 ~/.zshrc 里但没生效的 export 行。
- 终端里运行
zig version必须立即返回版本号(如0.13.0),否则 VSCode 里打开.zig文件时,状态栏可能显示 “Zig” 但 LSP 实际未连接,补全、跳转、错误提示全失效 - macOS/Linux 用户常错在改了
~/.zshrc却没执行source ~/.zshrc,或 VSCode 是从 Dock 启动而非终端启动,导致没继承 shell 环境变量 - Windows 用户若用 Scoop 安装,确认
scoop install main/zig后,zig.exe已在 Scoop 的 shims 目录(通常自动加入 PATH);若手动解压,必须把含zig.exe的完整路径(如C:\zig\zig-windows-x86_64-0.13.0\zig.exe)加进系统环境变量
格式化必须显式绑定 zig fmt,不能只靠“安装插件”
即使插件已装、zig 可用,VSCode 默认仍不会用 zig fmt 格式化代码——它连“有这个格式化器”都不知道。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 打开设置(
Cmd+,或Ctrl+,),搜索default formatter,点击“在 settings.json 中编辑”,添加:{ "[zig]": { "editor.defaultFormatter": "ziglang.zig" } } - 同时确保
editor.formatOnSave已开启;否则保存时不会触发格式化 - 如果格式化报错 “command 'zig.fmt' not found”,说明插件没找到
zig—— 回头检查上一条:PATH 和终端验证
调试需两步缺一不可:生成调试符号 + 配置 CodeLLDB
Zig 没有原生调试器,调试依赖 DWARF 信息 + 外部调试适配器。少一步,断点就灰掉,变量面板为空。
- 构建时必须加
-Doptimize=Debug,例如:zig build -Doptimize=Debug或zig build-exe main.zig -ODebug;用Release或默认构建,调试信息被剥离,lldb 什么也看不到 - 必须安装
CodeLLDB扩展(vadimcn.vscode-lldb),仅装 Zig 插件无调试能力 -
.vscode/launch.json中program字段必须指向带调试符号的二进制(如${workspaceFolder}/zig-out/bin/main),不能写源文件路径或不存在的路径
zls 不是必需项,但补全质量差异巨大
官方 ziglang.zig 插件自带轻量 LSP,能处理基础语法和简单跳转;但跨文件符号解析、模块导入补全、类型推导等强依赖 zls(Zig Language Server)。
- 如果你发现
@import("std")后按.没补全、std.log.info点不进去、重命名变量不联动 —— 很可能没跑 zls - zls 需单独编译:
git clone https://github.com/zigtools/zls && cd zls && zig build -Drelease-safe,生成的zls二进制路径需填入设置:zig.zlsPath(注意不是zig.sls.path,后者是旧版键名) - zls 对 Zig 版本敏感:zls v0.13.x 必须配 Zig v0.13.x,混用(如 zls v0.12 + Zig v0.13)会导致 LSP 启动失败且无明确报错
最易忽略的其实是构建产物路径和 launch.json 的 program 字段是否同步——很多人改了 build.zig 里的输出目录,却忘了更新 launch.json,结果调试器总在找一个根本不存在的文件。










