sublime text 能写 zig 系统级代码,但必须配齐 zig 编译器 + zls 语言服务器 + 正确构建系统三件套;仅语法高亮无法支持 @compilelog、comptime 补全、@import 跳转或内存布局分析。

Sublime Text 能写 Zig 系统级代码,但**语法高亮只是起点,不是终点**——光靠插件无法看到 @compileLog、补全 comptime 字段、跳转 @import 目标,更没法分析内存布局。真正起作用的是三件套:Zig 编译器 + zls 语言服务器 + 正确绑定的构建系统,缺一不可。
为什么 .zig 文件打开还是纯文本?
这不是插件没装,是 Sublime 根本没把后缀和语法 scope 关联上。
- 右下角显示 Plain Text 就是铁证;手动执行
Ctrl+Shift+P→Set Syntax: Zig可临时修复 - 若列表里没有
Zig(只有ZigLang或zig-mode),说明你装错了插件——zig-mode最后更新于 2020 年,已废弃,会覆盖 Sublime Text 4 内置的Packages/Zig/Zig.sublime-syntax,导致nosuspend、async、///注释不着色 - 彻底解决:卸载
zig-mode,用 Package Control 安装Zig Language(作者 mitchellh),重启 Sublime 后点右下角 →Open all with current extension as…→ 选Zig
Ctrl+B 构建报 “command not found: zig” 怎么办?
Sublime 启动时不会继承 shell 的 PATH,尤其 macOS 用 Dock 打开、Windows 没配系统环境变量时,终端能跑 zig version,构建却找不到命令。
- macOS:必须用终端启动 ——
open -a "Sublime Text",否则zls启动也会失败 - Windows:把
zig.exe所在目录加进「系统属性 → 高级 → 环境变量 → PATH」,然后彻底关闭并重开 Sublime - 兜底方案:在
Zig.sublime-build中写死绝对路径,比如"cmd": ["/opt/homebrew/bin/zig", "run", "$file"]或 Windows 下"cmd": ["C:/zig/zig.exe", "run", "$file"] -
"selector": "source.zig"必须存在且大小写严格匹配——这是 Zig 官方语法包定义的 scope,不是source.ziglang或其他变体
zls 不工作,“No definition found” 或控制台报 connection refused
zls 不是插件,是独立进程;它提供所有语义能力,但启动失败非常隐蔽。
-
LSP.sublime-settings里"command"字段必须是完整绝对路径,例如"/opt/zig/zls",不能只写"zls"——Sublime 不读系统PATH - 首次打开项目时 zls 会扫描依赖树,卡住 3–5 秒正常;若超 10 秒无响应,打开控制台(
Ctrl+`)看错误:connection refused是路径错或没启动,exec format error是二进制与 Zig 版本不兼容(Zig 0.13.x 必须用 zls 0.13.x 分支编译) - zls 必须与 Zig 编译器同版本。推荐用源码编译:
cd zls && zig build -Drelease-fast -Denable-zls;用zigpkg install zls需确认发布时间是否匹配(最新版发布于 2026 年 4 月 29 日)
想看 comptime 过程和 @compileLog 输出?
默认 zig run 不输出编译期日志,必须显式开启 verbose 模式。
- 构建系统中改用:
"cmd": ["zig", "run", "$file", "--verbose-cc", "--verbose-link"] - 输出面板里会出现
@compileLog实际打印内容、类型推导链、泛型展开步骤,这对调试comptime计算和内存布局极关键 - 单文件测试别硬套
zig build——它强制要求项目根目录有build.zig;直接用zig run更实在
comptime 元编程、手动内存管理)高度依赖编译期反馈,而这些反馈只有在 zls 正常运行 + 构建命令带 --verbose-cc 时才可见。很多人卡在“高亮有了但啥都补全不了”,问题不在插件,而在 zls 进程根本没连上,或者构建命令压根没触发编译期分析。











