应编辑Preferences → Key Bindings打开的右侧User.sublime-keymap文件,用JSON格式添加含"keys"和"command"字段的对象,保存即生效;command名须通过Ctrl+Shift+P或sublime.log_commands(True)实测获取,避免写错失效。

怎么打开并编辑正确的快捷键文件
Sublime 的快捷键配置不是在设置界面里点点点改的,而是直接编辑 JSON 文件。别去翻 Default (Windows).sublime-keymap 这类文件——它只读,改了下次更新就丢。真正该动的是用户层配置:User.sublime-keymap。
操作路径只有这一条:菜单栏 Preferences → Key Bindings。这会并排打开两个文件,左侧是只读默认配置,右侧就是你要编辑的 User.sublime-keymap。
- 首次打开时右侧常为空,但必须写成合法 JSON 数组格式,哪怕只加一条规则,也得用方括号
[ ]包裹 - 保存后立即生效,不用重启、不用 reload,改完就能试
- 右下角弹红字?八成是逗号多写了、引号没闭合,或者混用了中文标点
怎么写出不静默失效的 command 名
命令名写错,快捷键就完全不反应,而且 Sublime 不报错——这是最常踩的坑。别信旧教程里写的 js_format 或 beautify,插件一升级,命令名可能全换。
最稳的方法是实测获取:
- 按
Ctrl+Shift+P打开命令面板,输入功能关键词(比如“delete line”),看到的完整条目右上角显示的就是真实command值 - 或按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动点一次菜单里的目标操作(比如“删除行”),控制台会打出类似command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - 注意:像“删除整行”这种功能,原生不叫
delete_line,而是run_macro_file加args.file路径;直接写错名,保存了也没反应
怎么安全覆盖 Ctrl+D、Tab 这类高频键
硬覆盖 Ctrl+D(多选)、Tab(缩进/补全)这类键,大概率会让你第二天抓狂——原有功能直接消失,而且你可能过两天才意识到是快捷键搞的鬼。
优先方案不是覆盖,而是绕开:
- 换组合键,比如用
Ctrl+Alt+D代替Ctrl+D,避开系统级劫持(某些 Windows 输入法或显卡驱动会吃掉Ctrl+Alt) - 真要复用,就加
context限定触发条件。例如让Ctrl+D只在无选区时复制行:{"key": "selection_empty", "operator": "equal", "operand": true} -
context多个条件是“且”关系;想实现“或”,得拆成两条独立规则
鼠标快捷键和带 args 的高级绑定怎么配
键盘键位写在 User.sublime-keymap,但鼠标快捷键(比如中键粘贴、双击跳转)必须另建文件:Default.sublime-mousemap,不在同一个地方管。
带参数的命令,比如让 F9 重新缩进整个文件而不是当前行:
[ { "keys": ["f9"], "command": "reindent", "args": { "single_line": false } } ]
-
args不是所有命令都支持,得查文档或试错 -
context可限制生效范围(比如只在 Python 文件里触发),否则默认全局生效 - macOS 上 Cmd 键必须写成
super,不能写cmd;Windows/Linux 不识别super以外的修饰符别名
真正容易被忽略的不是语法,而是上下文限制和平台标识——比如在 Windows 上写了 Default (OSX).sublime-keymap,文件名不对,Sublime 直接忽略;又比如漏掉 context,结果在命令面板里按 Ctrl+Shift+P 时意外触发了本该只在编辑器中生效的快捷键。

















