sublime text本身不自带编译器,所有语言的编译/运行均依赖外部工具链,配置本质是通过合法json格式的.sublime-build文件绑定可执行路径、参数及环境,需严格匹配selector、正确设置shell/cmd/path等字段,且修改后须手动选择构建系统才生效。

Sublime Text 本身不自带编译器,所有语言的编译/运行都依赖外部工具链。手动载入第三方编译器,本质是告诉 Sublime:「用哪个可执行文件、在什么路径下、怎么传参」——不是安装,而是绑定。
怎么写 .sublime-build 文件才不报错
Build System 文件必须是合法 JSON,且字段含义严格。常见错误包括:
-
cmd是数组,每个参数单独一项(比如"gcc"和"${file}"不能合并成"gcc ${file}") -
selector必须匹配语法高亮 scope,C 用"source.c",Kotlin 是"source.kotlin",TypeScript 是"source.ts",拼错就触发不了构建 - Windows 下若调用 cmd/shell 命令(如
&&连续执行),必须设"shell": true,否则&&被当字面量传给编译器导致失败 -
working_dir缺失时默认在 Sublime 启动目录,不是当前文件所在目录,容易找不到头文件或输出路径错乱
tsserver_path 为什么必须硬编码
TS 插件(如 TypeScript-Sublime-Plugin)默认找全局 tsserver,但你在项目里用 pnpm add -D typescript 或 yarn add -D typescript,tsserver 就在 node_modules/.bin/tsserver 里。nvm/fnm/volta 切换 Node 版本后,全局路径也变,插件直接失效。
解决方式是在插件设置中填绝对路径:
{
"tsserver_path": "/path/to/your/project/node_modules/.bin/tsserver"
}
注意:tsserver 在 macOS/Linux 是 shell 脚本,Windows 是 tsserver.cmd,路径要对应;如果项目多,每个项目都要单独配。
clangd / clang++ / kotlinc 怎么加进 PATH 才生效
Sublime 不读取你终端里的 ~/.zshrc 或 ~/.bash_profile,它启动时只继承系统级环境变量。所以即使你在终端里 which clangd 能出来,Sublime 仍可能找不到。
可行方案:
- macOS:把
export PATH="/opt/homebrew/bin:$PATH"加到/etc/paths(需 sudo),重启 Sublime - Windows:在「系统属性 → 高级 → 环境变量」里修改「系统变量」中的
Path,不是用户变量(某些 Sublime 版本只读系统级) - Linux:把
export PATH="/opt/clang/bin:$PATH"写进/etc/environment,然后重启桌面会话 - 最稳但麻烦的方式:在
.sublime-build里用"path"字段显式声明,例如:"path": "/usr/local/opt/llvm/bin:/usr/bin"
为什么改完 build file 还是没反应
Sublime 不自动重载 Build System,改完 .sublime-build 文件后必须手动操作:
- 保存文件(扩展名必须是
.sublime-build) - 菜单栏 →
Tools → Build System→ 点击你刚保存的名字(不是 “Automatic”) - 快捷键
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Build With,选对应项 - 如果名字没出现,检查文件是否放在
Packages/User/目录下(不是子文件夹),且没有语法错误(JSON 校验可用在线工具)
最容易被忽略的是:build system 名称显示在菜单里的是文件名(不含扩展名),但 Sublime 实际加载时会校验 JSON 结构——哪怕多一个逗号,整个 build system 就静默失效,也不报错。











