sublime text运行zig需分两层配置:语法高亮靠zig language插件绑定source.zig scope(禁用过时zig-mode),智能功能如补全、跳转、comptime分析则必须依赖同版本zls语言服务器,二者解耦且缺一不可。

Sublime Text 能跑 Zig,但语法高亮只是起点,zls 才是补全、跳转、@compileLog 输出和 comptime 分析的唯一来源;不配 zls,就等于只开了 syntax highlighter,没装编译器。
打开 .zig 文件还是纯文本?先确认语法 scope 是否生效
右下角显示 “Plain Text” 不是主题问题,是 Sublime 根本没把文件当 Zig 处理。关键不是“有没有插件”,而是“有没有绑定对 scope”:
- 手动触发一次:
Ctrl+Shift+P→ 输入Set Syntax: Zig→ 回车(前提是已装Zig Language插件) - 更彻底:点右下角语法名 →
Open all with current extension as…→ 选Zig(注意不是ZigLang或zig-mode) - 如果列表里没有
Zig,检查Packages/Zig Language/syntaxes/Zig.sublime-syntax是否存在——缺失说明安装失败 -
禁用
zig-mode:它最后更新于 2020 年,会覆盖 Sublime Text 4 内置的Packages/Zig/Zig.sublime-syntax,导致nosuspend、async、///注释等新特性不着色
Ctrl+B 构建报 “command not found: zig” 或 “Unable to find target”
这不是 Zig 没装好,是 Sublime 启动时没继承 shell 的 PATH,尤其 macOS GUI 启动、Windows 未设系统变量时最常见:
- macOS:必须用终端启动
open -a "Sublime Text",否则 Dock 启动的 Sublime 完全看不到$PATH - Windows:把
zig.exe所在目录加进「系统属性 → 高级 → 环境变量」的PATH,然后彻底重启 Sublime - 兜底方案:在
Zig.sublime-build中写死绝对路径,例如:"cmd": ["/opt/homebrew/bin/zig", "run", "$file"] -
"selector": "source.zig"必须存在且大小写严格匹配——Zig 官方语法包定义的就是这个 scope,不是source.ziglang或其他变体 - 单文件测试别硬套
zig build:它强制要求项目根目录下有build.zig;直接用["zig", "run", "$file"]更实在
zls 不工作:“No definition found” 或控制台报 “connection refused”
zls 不是开箱即用的服务,它是个独立进程,必须手动拉起、路径对、版本配——错一个环节,所有语义功能全挂:
-
LSP.sublime-settings里"command"字段必须是完整绝对路径,比如"/opt/zig/zls",不能只写"zls"——Sublime 不读系统PATH -
zls必须与当前zig编译器同版本:Zig 0.14.1 就要用 zls 0.14.x 分支编译;用zigpkg install zls可能不匹配,推荐从源码构建:zig build -Drelease-fast -Denable-zls - 首次打开项目时
zls会扫描整个依赖树,卡住 3–5 秒属正常;若超过 10 秒无响应,打开 Sublime 控制台(Ctrl+`)看是否有connection refused或exec format error——后者说明二进制与 Zig 版本不兼容 - 想看
comptime过程?构建命令加参数:["zig", "run", "$file", "--verbose-cc", "--verbose-link"],输出面板里会出现@compileLog结果和类型推导链
真正容易被忽略的是:语法高亮和 zls 是两层完全解耦的东西。装了 Zig Language 插件 ≠ 有补全,zig run 成功 ≠ zls 在跑。很多问题表面是“没提示”,根因其实是 zls 进程压根没起来,或者连上了却因版本错位返回空响应。











