Ctrl+B 本身不“运行”脚本,仅执行构建系统主命令;要真正运行需配置 variants 并用 Ctrl+Shift+B 选择“Run”变体,且必须正确设置 selector、-u 参数、解释器路径及 working_dir 等关键字段。

Ctrl+B(Windows/Linux)或 Cmd+B(macOS)就是实际生效的“运行”快捷键,但按了没输出、一闪而过、或根本没反应——不是快捷键坏了,而是构建系统没被识别或配置缺关键字段。
为什么 Ctrl+B 按了只显示 [Finished] 却看不到输出
最常见原因是命令执行完就退出,终端窗口不保留。Python 脚本里有 input()、C/C++ 用了 scanf 或 cin,默认构建方式根本等不到你输入。
- Python 必须加
-u参数禁用输出缓冲,否则 print 不刷屏;Windows 还得加chcp 65001防中文乱码卡死 - C/C++ 默认用
shell_cmd串联编译+运行时,若没设"shell": true,&&和start会被当字面量忽略 - Java 的
Run变体必须显式指定working_dir,否则java ${file_base_name}找不到 class 文件
如何让 Ctrl+B 真正“一键运行”,而不是只编译
构建系统 JSON 里必须定义 variants,且至少有一个变体叫 "name": "Run"。Sublime 只会在按下 Ctrl+B 时执行主 cmd;要触发运行动作,得用 Ctrl+Shift+B 并选中那个 Run 变体。
- 别依赖“自动运行”幻想:Sublime 的构建系统没有“编译完自动执行”的隐式逻辑,一切靠
variants显式声明 - Python 示例中写
"cmd": ["python", "-u", "$file"]是基础,但想支持交互输入,得改用shell_cmd+cmd /c start cmd /c "python -u $file & pause"(Windows) - Linux/macOS 下不能直接
bash -c "... && ./a.out",因为 Sublime 的构建面板不继承 tty,必须用gnome-terminal或open -a Terminal启新窗口
selector 匹配失败:右下角显示 Plain Text 就等于废了
构建系统是否生效,唯一可靠信号是编辑器右下角状态栏显示 Python、C++ 或 Java ——不是文件后缀名,而是当前语法高亮所用的 scope。
- 新建 .py 文件后,必须手动点击右下角 → 选择
Python,否则"selector": "source.python"永远不匹配 - C++ 文件若用
.cc或.hpp后缀,需在构建系统里把"selector"改成"source.c, source.c++, source.cc, source.hpp" - Java 文件如果写了
package com.example;,源码必须放在com/example/子目录下,否则javac编译通过但java找不到类
真正卡住人的从来不是怎么写 JSON,而是哪一行漏了引号、哪个变量名多打了个下划线、或者环境变量改了却没彻底重启 Sublime。这些地方一错,Sublime 就静默失败,连错误提示都不给。


















