sublime text不支持并发构建,ctrl+b仅串行执行单个进程;所谓“并发”需靠shell符号模拟,但无状态监控、输出混杂、无法单独取消,且易导致跳转失效、路径错误和卡死等问题。

Sublime Text 本身不支持并发构建任务
它没有内置的多线程或后台作业队列机制,Ctrl+B 每次只触发一个 cmd 或 shell_cmd 进程,且会阻塞后续构建直到当前完成。所谓“同时编译多个文件”或“并行跑 Python + C++”只是错觉——实际是串行排队,或靠外部工具模拟并发。
想“看起来”并发?得靠 shell 组合命令
在 shell_cmd 中用 &、&& 或子 shell 启动多个进程,但 Sublime 不监控它们的生命周期,错误/输出混杂,无法单独取消某一项。
-
"shell_cmd": "python $file & gcc $file_name -o $file_base_name &":两个命令后台运行,但 Sublime 不等它们结束就认为构建“完成” -
"shell_cmd": "(python script1.py &) && (python script2.py &)":仍无状态反馈,失败也不报错 - Windows 下需用
start /b替代&,否则 cmd 会卡住 - 所有路径含空格时,必须用双引号包裹变量:
"shell_cmd": "python \"$file\" & gcc \"$file\" -o \"$file_base_name\""
真正需要并发?换工具或加插件
原生 Build System 的设计目标是“单文件一键执行”,不是构建调度器。硬要撑并发,容易踩这些坑:
- 输出日志全挤在同一个 Build Results 面板里,分不清哪条是哪个任务的
- 点击错误行跳转失效——
file_regex只匹配第一个命令的报错格式 -
working_dir对所有子命令生效,无法为不同任务设不同工作目录 - 没超时控制,某个任务卡死,整个构建系统就挂住
如果项目真有并行需求(比如同时 lint + test + build),建议用 Terminus 插件开多个终端标签页,或直接切到 make / npm run / just 等专用任务管理器——Sublime 的构建系统不是干这个的。
最容易被忽略的一点
很多人以为加了 "shell": true 就能自动并发,其实它只影响命令解析方式(是否走 shell),和进程并发无关。真正决定是否并发的,是你写在 shell_cmd 里的符号(&、||、$(...))以及操作系统如何调度——而 Sublime 完全不干预这部分。











