preferences.sublime-keymap文件必须是合法json格式,禁止注释、尾逗号和单引号,须含"keys"与"command"字段,context需匹配当前视图,跨平台需替换super为ctrl(windows/linux)或cmd(macos),加载顺序为default→插件→user。

Preferences.sublime-keymap 文件必须是合法 JSON
直接把别人导出的 Preferences.sublime-keymap 丢进你自己的 Packages/User/ 目录,大概率不生效——最常见原因是格式非法。Sublime 不支持注释、不允许尾逗号、所有字符串必须用双引号。
- 删掉所有
//或/* */注释(Sublime 解析器会直接跳过整段) - 检查每条键绑定是否同时含
"keys"和"command"字段,缺一不可 - 确认末尾没有多余逗号,比如
"command": "foo",后面跟了}就会静默失败 - 数组或对象内嵌层级过深时,建议用 VS Code 或 Sublime 自带的 JSON 验证(Ctrl+Shift+P → “JSON: Validate”)
快捷键 context 冲突导致按了没反应
同一个 "keys" 绑定,在不同编辑场景下可能被忽略。Sublime 的 "context" 字段控制生效范围,别人备份里写的条件,未必匹配你的当前视图状态。
- 常见失效场景:
"context": [{"key": "setting.is_widget", "operator": "equal", "operand": false}]—— 如果你在命令面板或查找框里按快捷键,它就不触发 - 想让快捷键全局生效(类似 Sublime 原生行为),可删掉整个
"context"数组,或改成宽松条件如[{"key": "active_view"}] - 若绑定的是插件命令(如
"command": "git_stage"),先确认对应插件已安装且启用,否则命令根本不存在
Windows/macOS/Linux 键名不能混用
别人在 macOS 上导出的 Preferences.sublime-keymap 里写的是 "keys": ["super+d"],你 Windows 上直接用会无效——super 在 Windows 对应 ctrl,macOS 才是 cmd。
- 统一替换规则:
super→ Windows/Linux 用ctrl,macOS 用cmd -
alt在 Windows 是alt,macOS 是alt(但常被系统拦截,建议避开) - 查当前系统键名:打开 Sublime → Ctrl+Shift+P → 输入 “Key Map Default”,看对应平台的默认文件里怎么写的
- 如果想一份配置跨平台,得拆成两个文件:
Default (Windows).sublime-keymap、Default (OSX).sublime-keymap等
导入后快捷键仍冲突?优先级比你想的更复杂
Sublime 按加载顺序覆盖快捷键:默认键位 .sublime-keymap(放在 Packages/插件名/ 下)会和你的 Packages/User/Preferences.sublime-keymap 并存,且插件键位可能更高优先级。
- 用 Ctrl+Shift+P → 输入 “Key Map User” 查看当前生效的用户键位文件路径,确认你改的是对的那个
- 如果某个快捷键始终被插件劫持(比如
Ctrl+Shift+P被某个插件重绑),去Packages/插件名/找对应.sublime-keymap文件,临时重命名禁用它 - 别指望靠删插件解决——有些插件(如 Package Control)的键位硬编码在 Python 里,必须靠用户键位显式覆盖
真正麻烦的不是复制粘贴,而是 context 条件、平台键名、插件干扰这三者叠加后的隐性冲突;手动导入前,先关掉 Sublime,再逐行核对 JSON 和键名,比事后调试快得多。











