sublime text 中“运行代码”的 command 名需实测确认,非内置的 run 或 execute,而是由插件(如 terminus_open、repl_open)或 build system(如 build 配 variant)提供。

运行代码的 command 名不是 build,得实测确认
Sublime Text 没有叫 run 或 execute 的内置命令,所谓“运行代码”实际由插件(如 Terminus、SublimeREPL)或 Build System 提供。直接写 {"command": "build"} 可能只编译不运行,或根本没反应——关键要看你当前用的是哪种方式。
必须通过以下任一方法拿到真实 command 名:
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入 “Run Python” 或 “Terminus: Open Default Shell”,右侧显示的terminus_open或repl_open就是真实名 - 打开控制台
Ctrl+`,输入sublime.log_commands(True),再从菜单点一次“运行”,控制台会输出类似command: build {"variant": "Run"}的记录 - 如果你用的是自定义 Build System,且定义了
"variants": [{"name": "Run"}],那 command 仍是build,但必须带args
在 User.sublime-keymap 中写对 JSON 格式
所有自定义快捷键必须写进 User.sublime-keymap —— 点 Preferences → Key Bindings,右边那个可编辑文件才是它。首次打开常为空,但必须是合法 JSON 数组,哪怕只加一条规则也要用方括号包裹。
常见静默失效原因:
-
"keys": "ctrl+b"❌ —— 必须是数组:"keys": ["ctrl+b"]✅ - 用了中文引号、逗号末尾多一个、括号不匹配 —— 保存后右下角弹红字,90% 是这个原因
- command 名大小写/拼写错误:
terminus_open对,TerminusOpen或terminus-open错
正确示例(仅限 Python 文件中按 Ctrl+R 运行):
[{"keys": ["ctrl+r"], "command": "build", "args": {"variant": "Run"}, "context": [{"key": "selector", "operator": "equal", "operand": "source.python"}]}]
别直接覆盖 Ctrl+B,优先加 context 或换组合键
很多人想把 Ctrl+B 改成“只运行不 lint”,但直接覆盖会导致原构建功能丢失,且无法回退。更安全的做法是新增组合键,或用 context 精确限定场景。
如果非要改 Ctrl+B,必须满足两个前提:
- 你的 Build System 中明确定义了
"variants": [{"name": "Run"}] - 新规则里带
"args": {"variant": "Run"},否则仍走默认构建
推荐做法是新增键位,比如 Ctrl+Alt+R,并加上语言 context,避免在 Markdown 或 JSON 文件里误触发。
插件 command 和 Build System 的行为差异
Terminus 的 terminus_open 是开终端并执行脚本,SublimeREPL 的 repl_open 是启动交互式环境,而 build 命令依赖 .sublime-build 配置里的 cmd 字段。三者不能混用。
例如:你在 Python 文件里绑了 terminus_open,但没装 Terminus 插件,快捷键就完全无响应;你绑了 build 却没配 "variant": "Run",它可能只执行默认的 python -u $file,甚至报错 Unable to find target build system。
最易被忽略的一点:Build System 的 selector 必须和当前文件语法 scope 一致。按 Ctrl+Shift+P → Show Scope Name 查看实际值,比如 Python 是 source.python,不是 python 或 py。











