Sublime Text 构建系统必须放在 Packages/User/ 目录下且后缀为 .sublime-build;cmd 必须为数组、路径需正确转义;selector 匹配语法作用域而非文件扩展名;快捷键需用 build_with 并指定 name;$file 要求文件已保存。

构建系统文件必须放在 Packages/User/ 目录下才生效
Sublime Text 只加载 Packages/User/ 下的 .sublime-build 文件,其他路径(如桌面、项目根目录、Packages/MyLang/)一概无视。文件放错位置,菜单里根本不会出现对应构建项,Ctrl+B 也完全没反应。
实操建议:
- 用菜单 Preferences → Browse Packages… 打开目录,直接进入
User/子文件夹新建文件 - 文件名随意,但后缀必须是
.sublime-build(例如Rust.cargo.sublime-build) - 别双击桌面文件再拖进 Sublime —— 这样保存路径仍是桌面,不会自动移到
User/
cmd 字段写法决定命令能否真正执行
cmd 是数组形式,不是字符串;Windows 路径含空格时必须加引号且用双反斜杠转义;macOS/Linux 依赖 PATH,但多版本共存时建议写死解释器路径。常见错误现象:提示 Unable to find command python3 或命令一闪而过无输出。
实操建议:
- Windows:
"cmd": ["C:\Program Files\Python39\python.exe", "-u", "$file"](注意双反斜杠和引号包裹整个路径) - macOS/Linux:
"cmd": ["python3.11", "-u", "$file"](运行which python3.11确认真实路径) - 避免用
python别名,尤其在 conda/virtualenv 环境中,它可能指向旧版本或系统 Python -
-u参数很重要,它禁用输出缓冲,否则print()内容可能延迟显示甚至不显示
selector 匹配失败会导致构建系统不自动激活
selector 不是文件扩展名,而是 Sublime 的语法作用域(scope)。比如 Python 文件的 scope 是 source.python,不是 .py;Rust 是 source.rust,不是 .rs。匹配不上,即使文件是 .rs 后缀,也不会自动选中该构建系统。
实操建议:
- 打开一个目标文件(如
main.rs),按Ctrl+Shift+P(Windows)或Cmd+Shift+P(macOS),输入 Show Scope Name 查看当前光标处的实际 scope - 常见 scope 值:
source.python、source.rust、source.c、source.cpp、source.shell - 如果想“万能运行”任意文本文件,可用
"selector": "source | text",但需配合shell_cmd和脚本判断后缀
热键必须用 build_with 命令并显式指定 args.name
build 命令不响应快捷键,Ctrl+B 默认触发首个可用构建系统,不是你当前想用的那个。直接写 {"keys": ["ctrl+b"], "command": "build"} → 完全不生效,控制台无报错。
实操建议:
- 必须走
build_with命令,并通过args显式传入构建系统名称(即.sublime-build文件中的name字段值) -
name必须完全一致,区分大小写和空格,例如"name": "Rust (cargo build)"就不能简写成"Rust" - 不加
args或args缺name字段 → 快捷键无效 - 推荐改用
Ctrl+Alt+B、Ctrl+Shift+B等组合,避开系统/输入法劫持(尤其 Windows 下Ctrl+Alt常被中文输入法吞)
最易被忽略的一点是:$file 变量要求文件已保存——未命名的 Untitled 标签页,$file 展开为空字符串,命令就变成类似 python -u "",直接失败或静默退出。别指望它能读取未保存内容,Sublime 的构建系统没有 $file_content 这种变量。

















