答案:通过preferences → key bindings打开,右侧文件即user.sublime-keymap,必须编辑为合法json数组格式,command名须经ctrl+shift+p或控制台实测获取,保存后立即生效;改左侧或手动建文件均无效。

怎么打开并编辑正确的 User.sublime-keymap 文件
必须通过 Preferences → Key Bindings 打开,左侧是只读的 Default (Windows).sublime-keymap(或对应系统名),右侧才是你要编辑的 User.sublime-keymap。改错地方完全无效——比如粘贴到左侧、或手动去 Packages/User/ 目录下新建文件再改,下次升级大概率被覆盖。
首次打开时右侧常为空,但必须写成合法 JSON 数组格式:[{"keys":["ctrl+alt+d"],"command":"duplicate_line"}]。少一个方括号、多一个逗号、单引号代替双引号,都会静默失效。
怎么拿到真正能用的 command 名
网上搜到的 js_format、delete_line 这类名字基本过时或不准确。真实命令名得实测:
- 按
Ctrl+Shift+P打开命令面板,输入功能关键词(如“duplicate”),看到的完整条目名就是你要的command值(例如duplicate_line) - 更准的方法:按
Ctrl+`打开控制台,输入sublime.log_commands(True),然后手动执行一次目标操作(比如菜单里点“删除行”),控制台会输出类似:command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - 注意:
delete_line不是原生命令,它是run_macro_file加上特定args;漏掉args或路径写错,快捷键照样不响应
覆盖 Ctrl+D、Ctrl+S 这类高频键为什么总出问题
不是 Sublime 拒绝你,而是你直接切断了底层操作链:
-
Ctrl+D被绑给duplicate_line后,多光标选择功能就彻底消失,连带影响所有基于它的插件行为 -
Ctrl+S改成别的命令,保存动作就卡住——它不报错,只是“点了没反应” - 真要复用这些键,优先考虑:
["ctrl+alt+d"]或["ctrl+shift+delete"],避开系统级劫持(某些 Windows 输入法或 NVIDIA 控制面板会吃掉Ctrl+Alt) - 或者加
context限定:让Ctrl+D在无选区时复制整行,有选区时仍执行原逻辑(需查当前语法 scope 和 selection 状态)
为什么改完保存了却没反应
常见静默失效原因不是 Sublime 坏了,而是绑定根本没加载进来:
- 按键在进 Sublime 前就被拦截:按
Ctrl+`输入sublime.log_input(True),再按你的组合键,控制台没输出说明被系统/输入法/显卡驱动截胡了 - 插件覆盖了你的设置:Vintage、Emmet、GitGutter 这些插件自带的
Default.sublime-keymap会后加载并覆盖 User 设置,得全局搜索"keys": ["your-combo"]找出最后定义它的文件 -
Esc键不能靠 key bindings 修改——它是内核硬编码,加了也白加,还可能破坏关闭搜索框、命令面板等基础行为
JSON 格式错一个字符,整条规则就蒸发;命令名错一个字母,Sublime 就当它不存在。没有错误提示,只有沉默。











