需通过Preferences → Key Bindings打开并编辑右侧User.sublime-keymap文件,确保为合法JSON数组格式,command值须经Ctrl+Shift+P或控制台日志验证,context条件需精准且多条件为“且”关系,保存后立即生效。

Sublime 的快捷键不是“改配置”,而是在 User.sublime-keymap 里加规则覆盖默认行为——写对就生效,写错就静默失效,不报错也不提醒。
怎么打开并编辑正确的 User.sublime-keymap 文件
点菜单 Preferences → Key Bindings,会并排打开两个文件:左侧是只读的 Default (Windows).sublime-keymap(或对应系统名),右侧才是你要编辑的 User.sublime-keymap。所有自定义必须写在这里,改其他地方无效,还可能被更新覆盖。
- 首次打开时右侧常为空,但必须是合法 JSON 数组格式——哪怕只加一条规则,也得用方括号
[]包裹 - 保存后立即生效,不用重启、不用 reload,改完就能试
- 右下角弹红字?90% 是 JSON 错误:逗号多写了、引号没闭合、混用了中文标点
command 名写错 = 快捷键完全不执行
别靠记忆或搜旧教程填 command,比如 js_format 已基本被 eslint_fix 或 black 替代;原生“删除整行”也不是 delete_line,而是 run_macro_file 配合 args.file 路径。
- 最稳方法:按
Ctrl+Shift+P打开命令面板,输入功能关键词(如 “delete line”),看到的完整条目名就是真实command值 - 辅助验证:按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动执行一次目标操作(比如菜单里点 “删除行”),控制台会打出类似command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - 插件命令名随版本变化,必须以当前控制台日志为准
覆盖 Ctrl+D、Ctrl+S 这类高频键前先想清楚后果
硬覆盖 Ctrl+D(默认选词)或 Ctrl+S(保存)会导致原有功能消失,不是“改了更好”,而是“改了更卡”。
- 优先换组合键,比如用
Ctrl+Alt+D代替Ctrl+D;注意某些 Windows 输入法会吞掉Ctrl+Alt - 真要复用键位,必须加
context限定触发条件,例如让Ctrl+D只在无选区时复制行:{"key": "selection_empty", "operator": "equal", "operand": true} -
context多条件是“且”关系;想实现“或”,得拆成两条独立规则 - 禁用默认键需显式写
"command": "unbound",不能留空或删掉整条
args 和 context 字段位置、格式必须严格正确
args 和 context 不是可有可无的装饰,它们必须作为同级字段,跟 keys 和 command 并列,且嵌套结构不能错。
-
args是字典,必须嵌套在命令对象里,例如格式化代码:{"keys": ["ctrl+alt+l"], "command": "format_code", "args": {"profile": "prettier"}} -
context是数组,每个元素是一个条件对象;正则判断要用"operator": "regex_contains"或"not_regex_contains",比如屏蔽注释行补全:{"key": "preceding_text", "operator": "not_regex_contains", "operand": "^\s*//|^\s*#"} - 规则按顺序匹配,左侧默认文件里的同
keys规则仍可能拦截你的新规则——若发现不生效,先检查是否被更高优先级规则覆盖
最容易被忽略的是:JSON 格式错误不会报具体位置,只弹红字;context 条件写得太严会导致快捷键在多数文件里压根不触发;还有人把鼠标快捷键也往 User.sublime-keymap 里塞,其实它必须另建 Default.sublime-mousemap 文件。

















