Sublime Text 的编译系统按项目独立生效,需在 .sublime-project 中显式声明 build_systems 并匹配文件 syntax selector,且 cmd 推荐用绝对路径、working_dir 设为 $project_path 才能正确运行。

Sublime Text 的项目编译系统不是全局设置,而是按项目独立生效的;如果你改了 Tools → Build System → New Build System… 生成的文件却没生效,大概率是没把它关联到当前项目,或路径/语法类型不匹配。
编译系统文件必须放在项目根目录下并被正确引用
Sublime 不会自动把新建的 .sublime-build 文件绑定到当前打开的文件夹。它默认只识别项目配置(.sublime-project)中显式指定的构建系统。
- 手动创建的构建文件(如
mybuild.sublime-build)建议存放在~/Library/Application Support/Sublime Text/Packages/User/(macOS)或%APPDATA%Sublime TextPackagesUser(Windows),这样能被所有项目发现 - 若想仅对某个项目生效,需在该项目的
.sublime-project文件里写明:"build_systems": [ { "name": "My Custom Build", "file": "Packages/User/mybuild.sublime-build" } ] - 注意
"file"路径是 Sublime 内部包路径,不是磁盘绝对路径;用Packages/开头表示从已加载包目录查找
command 字段必须指向可执行命令,且环境变量不可靠
很多配置失败是因为 "cmd" 写了 python3 main.py 却没考虑 shell 环境、PATH 或工作目录——Sublime 默认不走 shell,也不继承终端的 $PATH。
- 推荐用绝对路径调用解释器:例如
"/usr/bin/python3"或"C:\Python39\python.exe" - 工作目录默认是文件所在目录(
"working_dir": "$file_path"),但若依赖项目根目录下的配置,应设为"working_dir": "$project_path" - 需要 shell 功能(如管道、通配符)时,得显式启用:
"shell": true
,此时cmd变成字符串而非数组,例如"cmd": "python3 "$file"" - Windows 下双反斜杠或正斜杠均可,但避免混合使用导致转义错误
语法 scope 决定是否自动匹配构建系统
Sublime 会根据当前文件的 syntax(即右下角显示的 “Python”、“Markdown” 等)尝试匹配构建系统中的 "selector"。如果没匹配上,就 fallback 到 “Automatic” 或你手动选的系统。
- 查当前文件 syntax scope:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Developer: Show Scope Name,看输出类似source.python - 在
.sublime-build中写:"selector": "source.python"
,才能让 Python 文件自动触发该构建 - 多个语法用逗号分隔:
"selector": "source.python, source.shell" - 不写
selector就完全不自动匹配,只能手动选择
真正容易被忽略的是:构建系统是否被启用,取决于当前视图的 syntax 和 project 配置的双重约束——哪怕 build 文件语法完全正确,只要 .sublime-project 没声明、或文件 syntax 不在 selector 列表里,它就不会出现或运行。

















