sublime text的构建系统需手动配置:.sublime-build文件必须置于packages/user/目录,使用cmd数组(如["python", "-u", "$file"])而非shell_cmd,selector须匹配语法scope(如source.python),且需确保path或解释器路径正确。

Sublime Text 的“运行系统”不是内置功能,而是靠 .sublime-build 文件调用外部命令实现的;没配对路径、没放对位置、没匹配 syntax,它就根本不会出现在 Build System 菜单里。
Build System 文件必须放在 Packages/User/ 目录下
Sublime 只扫描这一个固定路径加载构建系统,其他地方全无效。
- Windows:按 Preferences → Browse Packages…,进
User/文件夹 - macOS:菜单栏 Sublime Text → Preferences → Browse Packages…,同样打开
User/ - Linux:
~/.config/sublime-text-3/Packages/User/(或sublime-text,取决于版本) - 文件名任意,但后缀必须是
.sublime-build,比如Python3.sublime-build,不能是.json或.txt
cmd 数组比 shell_cmd 更可靠,尤其跨平台
shell_cmd 是字符串,依赖 shell 解析变量和空格,Windows 默认 cmd.exe 根本不认 $file;cmd 是数组,Sublime 自动拼接并处理路径,更安全。
- ✅ 推荐写法:
"cmd": ["python", "-u", "$file"]——-u禁用缓冲,避免print不刷新 - ❌ 错误写法:
"shell_cmd": "python $file"—— Windows 下报 “不是内部或外部命令” - ⚠️ 注意顺序:
["python", "$file", "-u"]会把-u当作脚本参数传进去,必须紧贴解释器后 - 变量如
$file、$file_path只在cmd或shell_cmd字段里生效,写在working_dir里无效
selector 不匹配 syntax,Build System 就等于不存在
Sublime 不看文件后缀,而是读右下角显示的语法类型(如 Python),再比对 selector 字段。错配了,菜单里就看不到这项。
- 查真实 scope:按
Ctrl+Shift+P→ 输入 Developer: Show Scope Name,看输出是不是source.python或source.c++ - 单语言推荐写死:
"selector": "source.python" - 多语言适配可写:
"selector": "source.python | source.js | source.c++",别删掉selector,否则所有文件都显示该选项 - 想“万能运行”?用宽泛 selector + 外部分发逻辑,比如:
"cmd": ["sh", "-c", "case $1 in *.py) python $1 ;; *.js) node $1 ;; *) echo 'Unsupported'; exit 1 ;; esac", "_", "$file"]
Windows 下脚本跑完就闪退?加 pause 或换终端
默认构建系统只调用命令行执行,输出完立即退出,根本看不到结果。这不是配置错,是机制限制。
- Windows 快速方案:
"cmd": ["cmd", "/c", "python", "-u", "$file", "&", "pause"]—— 按任意键才关窗口 - macOS/Linux 推荐新开终端:
"cmd": ["open", "-a", "Terminal.app", "--args", "-c", "cd '$file_path' && python -u '$file'"] - 如果脚本里有
input(),exec插件捕获的输出面板无法响应输入,必须切到真实终端运行 - 别指望 Sublime 自带面板支持交互式输入,它只是 stdout/stderr 的只读展示区
最常被忽略的其实是环境隔离:Sublime 启动时不一定继承你 shell 里的 PATH,所以即使终端里 python3 --version 能跑,Sublime 里也可能报 command not found —— 这时候要么写死绝对路径,要么重启 Sublime 并确保它是从正确环境启动的。











