sublime text 中“运行代码”无内置命令,必须通过插件(如 terminus、sublimerepl 或 build system)实现,真实 command 名需实测获取:按 ctrl+shift+p 搜索功能关键词(如“terminus: open default shell”),或启用 sublime.log_commands(true) 后手动触发操作查看控制台输出;覆盖快捷键时应避免直接替换默认键(如 ctrl+b),推荐新增组合键或配合 args 与 context 精确限定(如 {"command": "build", "args": {"variant": "run"}, "context": [{"key": "selector", "operand": "source.python"}]}),同时严格校验 json 格式、大小写及数组语法,否则静默失效。

Sublime Text 里没有“默认运行”这个内置命令,所谓“运行代码”实际是插件(如 SublimeREPL、Terminus、Build System)提供的功能,快捷键绑定必须对应具体插件的 command 名,不能直接改“运行”这个模糊概念。
怎么找到你用的“运行”命令真实名称
快捷键失效最常见的原因是 command 写错——比如你以为是 run 或 build,但实际可能是 terminus_open 或 repl_open。必须实测获取:
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入你常用的运行操作关键词,比如 “Terminus: Open Default Shell”,它右边显示的terminus_open就是真实命令名 - 或者打开控制台
Ctrl+`,输入sublime.log_commands(True),然后手动点一次菜单里的“运行”操作(如Tools → Build或插件菜单里的“Run Python”),控制台会打印出类似command: build {"variant": "Run"}这样的完整记录 - 如果你用的是自定义 Build System,它的命令名通常是
build,但必须配合args指定variant,否则可能只执行默认构建而非“运行”
如何安全覆盖 Ctrl+B 或 F7 这类构建快捷键
很多用户想把 Ctrl+B 改成只运行不编译(比如跳过 lint),但直接覆盖会丢失原 Build 功能。更稳妥的做法是新增组合键或加 context:
- 不要直接删掉或覆盖
["ctrl+b"],而是新增一条如["ctrl+alt+b"],避免破坏原有工作流 - 如果非要改
Ctrl+B,确保新规则带args:例如{"command": "build", "args": {"variant": "Run"}}(前提是你的 Build System 定义了名为Run的 variant) - 用
context限定语言:比如只在 Python 文件中生效,加{"key": "selector", "operator": "equal", "operand": "source.python"}
为什么改完没反应?三个高频静默失败点
Sublime 不报错,但快捷键不生效,大概率卡在这三处:
-
keys字段写成字符串而不是数组:"ctrl+b"❌,必须是["ctrl+b"]✅ -
command名大小写或拼写错误:terminus_open对,TerminusOpen或terminus-open错 - JSON 格式非法:末尾多逗号、中文引号、缺方括号包裹整个数组——右下角弹红字就是这原因,但没红字也不代表没问题,得靠控制台日志确认
真正麻烦的不是写 JSON,而是搞清你点的那个“运行”按钮背后到底触发了哪个 command、带什么 args、在什么 context 下才有效。别抄网上旧教程的命令名,每个插件版本都可能变。











