必须在 User.sublime-keymap 中写覆盖规则,Default 文件为只读内置资源,修改无效;User 文件是唯一生效位置,需确保 JSON 格式正确、command 名准确、context 和 args 结构合规,规则按顺序匹配。

必须在 User.sublime-keymap 里写覆盖规则,改 Default 文件完全无效
Sublime Text 没有“修改默认快捷键”这回事。左侧打开的 Default (Windows).sublime-keymap(或 macOS/Linux 对应文件)是只读内置资源,编辑它、保存、重启,下次升级就清空——而且你改了也压根不生效。真正起作用的唯一位置,是 Preferences → Key Bindings 打开后右侧那个空白或带 [] 的文件,它实际路径是 User.sublime-keymap。
常见错误现象:Ctrl+Shift+K 一直删行,你在左侧 Default 文件里删掉那条 {"keys": ["ctrl+shift+k"], "command": "run_macro_file", ...},结果毫无变化——因为那文件根本没被加载执行。
- 首次打开
User.sublime-keymap时内容可能是空的或只有[],这是合法 JSON 数组,直接往里加对象就行 - 保存后立即生效,不用重启;没反应?90% 是 JSON 格式错:多逗号、引号不闭合、用了中文标点
- 每条规则必须是对象,至少含
"keys"和"command"两个字段,且整个文件必须是数组(用[...]包裹)
command 名必须实测,不能靠猜或搜旧教程
写错 command 字段,快捷键就静默失效:不报错、不提醒、不执行。比如想绑定“格式化代码”,网上教程写的 js_format 在 2026 年多数已被弃用,实际可能是 eslint_fix 或 black,取决于你装的是哪个插件。
最稳的获取方式只有两个:
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P)打开命令面板,输入功能关键词(如 “delete line”),看到带 ⌨️ 图标的那一行,后面就是真实command名(例如run_macro_file) - 打开控制台
Ctrl+`,输入sublime.log_commands(True),再手动触发一次目标操作(比如菜单里点 “删除行”),控制台会输出类似:command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"}
注意:插件命令名随版本变化,必须以当前控制台日志为准,别信过期教程。
覆盖 Ctrl+S、Ctrl+B 这类高频键前,先想清楚后果
直接把 Ctrl+S 改成其他功能,会导致保存失灵;把 Ctrl+B 改成只运行 Python,就再也无法执行默认构建(比如编译 + lint)。这不是配置失败,是设计冲突。
- 优先换组合键,比如用
Ctrl+Alt+R代替Ctrl+B来运行代码,避免破坏原有工作流 - 真要复用键位,必须加
context限定触发条件,例如让Ctrl+D只在无选区时复制整行:{"key": "selection_empty", "operator": "equal", "operand": true} - 禁用某个默认行为,得显式写
"command": "unbound",不能留空或删掉整条 -
context多条件是“且”关系;想实现“或”,得拆成两条独立规则
args 和 context 必须结构正确,否则静默失效
args 和 context 不是可有可无的装饰,它们必须作为同级字段,跟 keys 和 command 并列,嵌套结构也不能错。
-
args是字典,必须嵌套在命令对象里,例如格式化代码:{"keys": ["ctrl+alt+l"], "command": "format_code", "args": {"profile": "prettier"}} - 用
context限定语言时,比如只在 Python 文件中运行:{"key": "selector", "operator": "equal", "operand": "source.python"} - Build System 的“运行”变体必须配
args:{"command": "build", "args": {"variant": "Run"}},前提是你的 .sublime-build 文件里真定义了"variant": "Run"
容易被忽略的一点:规则按顺序匹配,靠上的先生效;如果两条规则冲突,上面那条赢。调试时建议用 Key Binding Resolver 插件,按快捷键就能看到哪条规则被触发、为什么没触发。


















