preferences → key bindings 是唯一正路,打开后左侧为只读默认键位,右侧为可编辑的 user.sublime-keymap;首次编辑需手动补全合法 json 数组格式,所有自定义快捷键必须写于此处。

Preferences → Key Bindings 是唯一正路
别去文件管理器里翻 Packages/User/,也别点菜单里“Browse Packages”瞎找。直接按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入 Preferences: Key Bindings,回车——这是 Sublime 唯一可靠、版本兼容、升级不丢的入口。
你会看到左右两个面板:左侧是只读的默认键位(比如 Default (Windows).sublime-keymap),改了也没用;右侧才是你要编辑的 User.sublime-keymap,所有自定义都写这里。
首次打开时右侧常为空,但必须手动补上 [ ],让它成为合法 JSON 数组,否则任何规则都不生效。例如:
[{"keys": ["ctrl+alt+s"], "command": "save"}]
为什么命令面板里搜不到 Key Bindings
常见原因是拼写或大小写错误:Preferences: Key Bindings 不能简写成 Key Bindings 或 Preferences → Key Bindings ——命令面板只认完整、带冒号的条目名。
如果搜不到,先确认是否误装了干扰插件(比如 Vintage 模式开启后会劫持部分命令面板行为),可临时运行 subl --safe-mode 验证。
另一个可能是快捷键被系统级占用:比如某些 Windows 输入法或 macOS 的「输入源切换」会吞掉 Ctrl+Shift+P。此时可先在控制台运行 sublime.log_input(True),再按组合键,看控制台是否有 key evt: ctrl+shift+p 输出。
打开后右侧空白或全是乱码怎么办
右侧空白是正常现象,代表你还没写任何规则,直接开始编辑即可。
如果显示乱码或报错(比如右下角闪红字),大概率是编码问题或粘贴时混入了中文标点。Sublime 要求 User.sublime-keymap 必须是 UTF-8 编码、无 BOM、全英文双引号、无注释、数组格式严格。
检查要点:
-
"keys"和"command"必须小写,且带英文双引号 - 数组结尾不能多逗号:
["ctrl+alt+f"],❌,["ctrl+alt+f"]✅ - 别用
//或/* */写注释——JSON 不支持 - 复制示例时小心全角空格、中文引号、换行符残留
改完保存没反应?先盯这三个地方
Sublime 不校验规则有效性,写错就静默失效。最常卡住的地方就三个:
一是 command 名不对:网上搜到的 delete_line、js_format 多已过期。真实可用名必须实测获取——要么在命令面板里搜功能关键词(如“delete line”),看到的条目名就是它;要么在控制台开 sublime.log_commands(True),再手动点一次菜单操作,看输出的 command: 后面是什么。
二是 context 条件太严:比如写了 {"key":"selector","operand":"source.python"},但在 Markdown 文件里按快捷键,自然不触发。查当前作用域可按 Ctrl+Shift+P → Show Scope Name 看实际值。
三是加载顺序被覆盖:Sublime 按 Default → 插件 keymap → User 顺序加载,后加载者覆盖前一个。如果你装了 Emmet 或 Origami 这类高频插件,它们可能在你之后又绑了一次相同 keys,你的规则就被盖掉了。排查方法是在所有插件目录里全局搜索该快捷键组合。











