Sublime Text构建系统是调用外部命令运行脚本的指令配置,核心在于正确设置cmd、-u参数、file_regex及环境变量;未保存文件、语法类型不匹配、JSON错误或缺少-u均会导致无输出、卡死或跳转失效。

Sublime Text 本身不执行脚本,它只是把 $file 交给系统命令行去跑——构建系统(Build System)就是你写的那条“怎么交、交给谁、在哪交”的指令。配错一个变量或漏掉 -u,就可能输出卡住、报错跳不到行、甚至根本没反应。
为什么 Ctrl+B 没输出或报 “No build system”
这不是插件没装好,而是 Sublime 根本没“认出”当前文件该用哪个构建系统。
- 右下角状态栏必须显示语言类型(如 Python 或 Bash),否则
selector不匹配,构建系统不会自动启用 - 即使写了
"selector": "source.python",如果文件语法被设成Plain Text,它就永远不触发 - 文件必须已保存:未保存的临时文件没有
$file_path和$file_name,shell_cmd里一用就报路径空错误 - JSON 格式有误(比如多了一个逗号、引号没转义)会导致整个
Packages/User/下的构建系统失效,建议粘到 jsonlint.com 快速校验
Python 构建系统怎么写才不卡输出
默认 print() 在 Sublime 构建面板里经常不实时刷出来,本质是 Python 缓冲了 stdout——因为 Sublime 不提供伪终端(pty),-u 参数才是关键。
-
"cmd": ["python", "-u", "$file"]是最简稳态配置;Windows 若没配环境变量,得写死路径:["C:\Python39\python.exe", "-u", "$file"](注意双反斜杠) -
file_regex决定双击报错能否跳转:"^File "(.*?)", line ([0-9]+)"才能正确提取文件名和行号 - 别用
shell: true包一层再调 python:虽然能绕过某些 PATH 问题,但会丢失-u的缓冲控制,输出仍可能滞留 - 含
input()的脚本无法在构建面板交互输入,这是 Sublime 的固有限制,不是配置问题
Shell 脚本 Permission denied 怎么办
报错 bash: ./script.sh: Permission denied 和脚本内容无关,是 Unix 权限或调用方式错了。
- 检查权限:
ls -l script.sh输出中必须含x(如-rwxr-xr-x),修复命令:chmod +x script.sh - 不想改权限?把构建命令从
"./$file_name"改成"bash '$file_name'",绕过可执行位检查 - WSL 用户慎用自带的
Shell-Unix构建系统:它硬编码调/bin/sh,但 WSL 默认 shell 是/usr/bin/bash,且不加载.bashrc;应自定义:"shell_cmd": "bash -c "cd '$file_path' && bash '$file_name'"" - Shebang(如
#!/bin/bash)在 Sublime 构建系统里完全无效——它不解析这一行,只按你shell_cmd里写的命令执行
真正容易被忽略的点是:Sublime 的构建系统不继承你的 shell 环境变量(比如 PATH、conda activate),也不加载 .bashrc 或 .zshrc。如果脚本依赖某个命令(如 poetry、node),要么在构建命令里显式写全路径,要么用 bash -i -c 启动交互式 shell(但会变慢且不稳定)。

















