必须在User.sublime-keymap中配置:Preferences → Key Bindings打开后,右侧文件即为此处,需保持合法JSON数组格式;command名须通过Ctrl+Shift+P或控制台实测获取;覆盖高频键如Ctrl+D应加context限定或显式unbound。

不能直接修改默认快捷键文件,所有自定义都必须写在 User.sublime-keymap 里,否则下次升级就丢,且改了也不生效。
怎么打开并编辑正确的配置文件
Preferences → Key Bindings 打开后,左侧是只读的 Default (Windows).sublime-keymap(或对应系统名),右侧才是你要编辑的 User.sublime-keymap。这个文件首次打开时通常为空,但必须保持合法 JSON 数组格式——哪怕只加一条规则,也得用方括号 [ ] 包裹。
保存后立即生效,不用重启、不用 reload。如果右下角弹红字,八成是逗号多写了、引号没闭合,或者混用了中文标点。
- 别去改
Default (Windows).sublime-keymap:它是只读内置文件,改了白改 - 别手动创建或重命名文件:路径和文件名必须严格为
User.sublime-keymap - Windows 用户注意:
super指 Win 键,不是ctrl或alt;macOS 才是 Cmd 键
怎么找对 command 名,而不是靠猜
命令名写错,快捷键就静默失效。网上搜到的旧教程常写 js_format 或 beautify,但这些早被插件更新淘汰了。最稳的方式是实测:
- 按
Ctrl+Shift+P打开命令面板,输入功能关键词(比如 “delete line”),看到的完整条目就是真实command值 - 或按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动点一次菜单里的目标操作(比如 Edit → Line → Delete Line),控制台会打出类似command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - 像 “删除整行” 这种功能,原生不叫
delete_line,而是run_macro_file加args,直接写错名就完全不触发
怎么安全覆盖已有快捷键,比如 Ctrl+D
Ctrl+D 默认是“选择相同词”,如果直接写 {"keys": ["ctrl+d"], "command": "duplicate_line"},原有功能就彻底没了。真要复用,得加 context 限定条件:
- 让
Ctrl+D只在无选区时复制行:{"key": "selection_empty", "operator": "equal", "operand": true} - 多个
context条件是“且”关系;想实现“或”,得拆成两条独立规则 - 禁用某个默认键,不要留空,要显式写
"command": "unbound"(不是null) - 修饰键顺序有影响:
["ctrl+shift+f"]和["shift+ctrl+f"]多数情况一样,但 Sublime 内部按顺序匹配,建议按惯例写ctrl+alt+shift+super
鼠标快捷键和高级参数怎么配
键盘和鼠标绑定不在同一个文件里。鼠标快捷键(比如中键粘贴、双击跳转)必须另建 Default.sublime-mousemap 文件,路径与 User.sublime-keymap 相同,但内容结构不同。
带参数的命令要用 args 字段嵌套,比如让 Ctrl+P 默认搜函数:
[ {
"keys": ["ctrl+p"],
"command": "show_overlay",
"args": { "overlay": "goto", "text": "@" }
} ]
正则判断光标前文本是否为注释行,得用 not_regex_contains:
{ "key": "preceding_text", "operator": "not_regex_contains", "operand": "^\s*//|^\s*#" }
最容易被忽略的是 context 的作用域和优先级——规则按顺序从上到下匹配,一旦命中就停止,后面同 keys 的规则不会执行。











