Sublime Text 无一键运行功能,仅通过 Build System 调用外部解释器;需配置绝对路径、-u 参数、正确 selector,否则 Ctrl+B 静默失败或报 command not found。

Sublime Text 本身不运行脚本,它只调用系统命令行执行解释器——配错 cmd、漏掉 -u、selector 不匹配,Ctrl+B 就会静默失败或报 command not found。
为什么 Ctrl+B 没输出,只显示 “[Finished]”
根本不是快捷键问题,而是构建系统没被真正激活:
- 右下角状态栏没显示
source.python或source.js——说明语法高亮没设对,selector匹配失败,哪怕文件后缀是.py也无效 -
cmd里写的解释器名(如python)在系统 PATH 中不可达;Windows 用户尤其容易因没勾选“Add to PATH”而卡在这里 - 没加
-u参数,Python 输出被缓冲,print内容卡在内存里不刷到面板,看起来像“没运行”
Python 构建系统必须写死路径还是能用 python?
取决于环境变量是否可靠。终端里能跑 python --version,不代表 Sublime 能继承这个环境——它不读 $PATH,也不加载 shell 配置。
- macOS/Linux:优先用
["python3", "-u", "$file"],前提是python3在/usr/bin/或/opt/homebrew/bin/等默认位置且已软链 - Windows:强烈建议写死路径,例如
["C:\Python311\python.exe", "-u", "$file"](注意双反斜杠);用python容易因环境变量未生效而失败 - 所有平台都必须加
-u,否则交互式脚本(含input())会卡住,或输出延迟到程序退出才刷出
如何让选中的代码片段直接执行(比如一段 JS 或 PHP)
这不是运行整个文件,而是把选中内容作为字符串传给解释器的 -e 模式,适合快速验证逻辑。
- Node.js:用
["node", "-e", "console.log(`$selected_text`);"],但注意单双引号嵌套和转义 - PHP:用
["php", "-r", "$selected_text"],要求系统已装 PHP 且php -v可执行 - 关键限制:
$selected_text不支持换行或复杂上下文,变量不会延续,不能替代完整文件执行 - 必须在构建系统 JSON 中显式启用
target:"exec"和"working_dir": "$file_path",否则可能找不到相对路径资源
中文路径、空格、GBK 编码导致乱码或编译失败
Sublime 的构建系统默认以 UTF-8 启动子进程,但 Windows 控制台默认是 GBK,两者不一致就炸。
- Windows 下 C/Python 脚本含中文路径时,在
cmd前加["chcp", "65001", "&&"]切换编码(如["chcp", "65001", "&&", "gcc", ...]) - 路径含空格必须确保
$file被双引号包裹,但 JSON 里不能直接写""$file"";正确做法是用shell_cmd替代cmd,并写成"shell_cmd": "python -u "$file"" - Linux/macOS 上如果终端 locale 是
en_US.UTF-8,但脚本里用了open("中文.txt"),仍可能报UnicodeEncodeError——这时得在cmd里加环境变量:"env": {"PYTHONIOENCODING": "utf-8"}
最常被忽略的一点:Sublime 的构建系统没有 stdin 输入能力,所有带 input() 或 scanf 的脚本,在底部面板里必然卡住。真要交互,得用 Terminus 插件起外部终端,而不是靠 Ctrl+B。


















