build system 文件必须放在 packages/user/ 目录下才生效,sublime text 仅加载该路径下的 .sublime-build 文件,其他位置均无视;文件需为合法 json 格式、后缀正确、selector 匹配语法作用域,且 $file 变量要求文件已保存。

Build System 文件必须放在 Packages/User/ 目录下才生效
Sublime Text 只加载 Packages/User/ 下的 .sublime-build 文件,其他任何路径(桌面、项目根目录、Packages/MyLang/)一概无视。这不是“可能不生效”,而是硬性限制——文件放错位置,菜单里根本不会出现对应构建项,按 Ctrl+B 也完全没反应。
实操建议:
- 用菜单 Preferences → Browse Packages… 直接打开
Packages/目录,进User/子文件夹新建文件 - 文件名随意,但后缀必须是
.sublime-build(例如Python3_Run.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;JS 是 source.js,不是 .js。匹配不上,即使文件是 .py 后缀,也不会自动选中该构建系统。
实操建议:
- 打开一个目标文件(如
test.py),按Ctrl+Shift+P(Windows)或Cmd+Shift+P(macOS),输入Inspect Scope查看当前光标处的实际 scope - 常见 scope 值:
source.python、source.c、source.cpp、source.shell - 如果想“万能运行”任意文本文件,可用
"selector": "source | text",但需配合shell_cmd和脚本判断后缀
$file 变量要求文件已保存,未命名文件无法构建
$file 展开为磁盘上的绝对路径;如果文件从未保存过(标签页显示 Untitled),$file 就是空字符串,命令变成类似 python -u "",直接失败或静默退出。
实操建议:
- 构建前务必先按
Ctrl+S保存文件,哪怕临时存到桌面 -
$file_path是文件所在目录,$file_base_name是不含扩展名的文件名,三者不能混用 - 没有
$file_content这种变量,Build System 不读取内存中的未保存内容 - 需要支持交互输入?默认输出面板不支持 stdin,得用
variants配 terminal 启动,或装Terminus插件











