sublime text 需配置 zig.sublime-syntax 绑定后缀、写死 zig 路径构建系统、搭配 zls 实现语义功能;调试需切 vs code。

Sublime Text 本身不支持 Zig,但能通过组合配置达成接近 VS Code 的开发体验——关键不是装一堆插件,而是理清三件事:语法高亮靠内置或 Zig Language 插件、构建靠 zig run 或 zig build、语义能力(补全/跳转/错误提示)必须依赖 zls。
为什么打开 .zig 文件还是纯文本?语法高亮失效的真正原因
Sublime Text 4 自带基础 Zig.sublime-syntax,但默认不自动绑定 .zig 后缀;老版本或某些定制版可能压根没这个文件。这不是插件没装对,而是“文件类型识别”这层断了。
- 先检查路径:
Packages/Zig/Zig.sublime-syntax是否存在(Preferences → Browse Packages…进入) - 若不存在,用 Package Control 安装
Zig Language(作者 mitchellh),别选zig-mode——它已停更多年,不支持nosuspend、async和///文档注释 - 安装后,打开任意
.zig文件 →View → Syntax → Open all with current extension as… → Zig,强制绑定一次 - macOS 用户若从 Dock 启动 Sublime,PATH 不继承 shell 环境,高亮可能闪退;改用终端执行
open -a "Sublime Text"启动可避免
Ctrl+B 构建报错 “Unable to find target” 或 “command not found: zig”
Sublime 的构建系统不读 shell 的 PATH,尤其 GUI 启动时 macOS 和 Windows 都容易栽在这一步。直接写死路径最稳,而不是赌环境变量生效。
- 新建构建系统:
Tools → Build System → New Build System… - 粘贴以下内容(注意
cmd中 zig 路径要真实存在):
{
"cmd": ["/opt/homebrew/bin/zig", "run", "$file"],
"file_regex": "^(.*?):([0-9]+):([0-9]+): (error|warning): (.*)$",
"selector": "source.zig",
"working_dir": "${project_path:${folder}}"
}
- Windows 用户把路径换成类似
C:\zig\zig-windows-x86_64-0.13.0\zig.exe,且必须带.exe后缀,否则找不到命令 - 单文件快速测试用
zig run "$file";项目级构建必须有build.zig,此时改用["zig", "build"]并确保working_dir指向项目根 - 如果想看
comptime执行过程(比如@compileLog输出),加参数--verbose-cc --verbose-link
代码补全和 Go to Definition 失效:zls 是唯一靠谱解法
Sublime 原生不解析 Zig AST,所谓“智能”全靠外部语言服务器。目前只有 zls(Zig Language Server)被官方推荐且持续维护,SublimeLSP 插件是它唯一可行的宿主。
- 先编译
zls:克隆 zls GitHub 仓库,在根目录运行zig build -Drelease-safe,生成可执行文件 - 安装
SublimeLSP插件(别装 SublimeLinter-zig,它只做 lint,不提供 LSP) - 在
LSP.sublime-settings里配 client:
"clients": {
"zls": {
"command": ["/path/to/zls"],
"scopes": ["source.zig"],
"syntaxes": ["Packages/Zig/Zig.sublime-syntax"],
"languageId": "zig"
}
}
-
zls启动后会扫描整个项目,@import跨文件补全、comptime结构体字段提示、goto definition才真正可用 - 如果
zls崩溃,大概率是build.zig里root_source_file路径写错,或用了未发布的 Zig 版本(zls 总是滞后 zig 主干一两个小版本)
调试 Zig 代码在 Sublime 几乎不可行,这事得认
Sublime 没有原生调试器集成,sublime-debugger 插件长期停滞,对 DWARF 符号支持极弱。你可以在构建时加 -g 和 -fno-strip,但没法设断点、看变量、步进执行。
- 构建命令示例:
["zig", "build-exe", "$file", "-g", "-fno-strip"] - 生成的二进制只能扔进
lldb或gdb手动调试,Sublime 里看不到栈帧或局部变量 - 真要调试,直接切到 VS Code +
CodeLLDB,这是当前事实标准;Sublime 定位应是“高效编写与构建”,而非“全功能 IDE” - 容易被忽略的一点:
zls虽不能调试,但能提前标出comptime错误位置、泛型约束失败原因——这比运行时调试更能防 bug











