sublime 能写 zig 高性能代码,但必须手动配齐 zig + zls + 正确构建系统三件套,缺一不可;仅装语法插件或只配 zig run 无法显示 @compilelog、调试 comptime 或分析内存布局。

Sublime 能写 Zig 高性能代码,但必须手动配齐 zig + zls + 正确构建系统三件套,缺一不可。光装语法插件或只配 zig run,连 @compileLog 输出都看不到,更别提调试 comptime 或分析内存布局。
语法高亮失效:不是插件没装,是 Sublime 4 已内置但没触发
Sublime Text 4 自带 Packages/Zig/Zig.sublime-syntax,不依赖第三方插件。常见失效原因只有两个:
- 文件打开时未自动识别后缀——手动执行
Ctrl+Shift+P→Set Syntax: Zig即可临时修复 - 你装了过时的
zig-mode插件(最后更新于 2020 年),它会覆盖内置语法,导致新关键字(如nosuspend、async)不着色,直接卸载它 - macOS 用户若用 Dock 启动 Sublime,shell 环境变量(包括
PATH)不会继承,导致后续 zls 启动失败;必须用终端运行open -a "Sublime Text"
Ctrl+B 构建没反应或报 “Unable to find target”
这是构建系统没绑定到 source.zig 作用域,或 cmd 路径根本不可达。关键点:
-
"selector": "source.zig"必须存在且大小写严格匹配——Zig 官方语法包定义的就是这个 scope,不是source.ziglang或其他变体 - Windows 下
"cmd": ["zig", "run", "$file"]会失败,必须写成["zig.exe", "run", "$file"],否则 Sublime 找不到可执行文件 - 想看 comptime 过程?用
["zig", "run", "$file", "--verbose-cc", "--verbose-link"],输出面板里会出现@compileLog结果和类型推导链 - 单文件测试别硬套
zig build——它强制要求项目根目录下有build.zig,直接用zig run更实在
zls 不工作:“No definition found” 或控制台报 connection refused
zls 是 Zig 语义能力的唯一来源,但它不是开箱即用的服务,而是一个需独立启动的进程。问题几乎全出在路径和启动时机上:
-
LSP.sublime-settings里"command"字段必须是完整绝对路径,比如"/opt/zig/zls",不能只写"zls"——Sublime 不读系统PATH - 首次打开项目时 zls 会扫描整个依赖树,卡住 3–5 秒属正常;若超过 10 秒无响应,打开 Sublime 控制台(
Ctrl+`)看是否有connection refused或exec format error——后者说明 zls 二进制与当前 Zig 版本不兼容(例如 Zig 0.13.x 需用 zls 0.13.x 分支编译) - zls 必须与 Zig 编译器同版本。用
zig build -Drelease-fast从源码编译最稳妥;用zigpkg install zls要确认~/.zigpkg/bin/zls --version输出的版本号前缀和zig version一致
comptime 调试和内存管理提示为什么还是弱?
zls 支持 comptime 错误定位和跨文件补全,但有两个硬限制容易被忽略:
-
@compileLog只在zig run或zig test时触发,zig build默认不执行 comptime 块——所以构建系统必须用zig run模式才能看到输出 - 手动内存管理相关警告(如未释放的
allocator.alloc、悬垂指针)目前 zls 不提供,得靠zig test -Denable-llvm-assertions或运行时加-fsanitize=address捕获,Sublime 无法内联提示 - comptime 结构体字段补全依赖 zls 成功索引——如果
comptime const cfg = .{ .port = 8080 };补全失败,先检查该文件是否被@import到主入口,否则 zls 不会加载其 AST











