只备份 Packages/User 目录即可完整保留自定义快捷键,前提是快捷键已写入对应系统的 User.sublime-keymap 文件(如 Default (Windows).sublime-keymap),且 command 名准确、未被 ignored_packages 屏蔽,并同步备份相关 .sublime-settings 文件。

只备份 Packages/User 目录,就能完整保留所有已安装插件的自定义快捷键设置——前提是这些快捷键确实被你写进了用户键位文件里。
为什么 User.sublime-keymap 是唯一有效的载体
Sublime Text 不会把插件快捷键“自动注册”进你的配置。哪怕你装了 SideBarEnhancements 或 GitGutter,它们自带的快捷键默认只存在于 Packages/SideBarEnhancements/Default (Windows).sublime-keymap 这类插件自带文件中,而这类文件属于“只读默认”,你改了也不会生效,重启就还原。
真正起效、且能被备份迁移的,只有你手动添加到 Packages/User/Default (Windows).sublime-keymap(或对应系统名)里的规则。例如:
[{
"keys": ["ctrl+alt+e"],
"command": "side_bar_open_in_terminal"
}]
这个绑定才是你自己的、可迁移的快捷键。它必须满足两个条件:出现在 User/ 下;command 字段值与插件实际暴露的命令名完全一致(大小写、下划线都不能错)。
- 插件命令名不等于菜单名,比如 “Open in Terminal” 对应的 command 很可能是
side_bar_open_in_terminal,不是open_in_terminal - Windows/macOS/Linux 的用户键位文件名不同:
Default (Windows).sublime-keymap、Default (OSX).sublime-keymap、Default (Linux).sublime-keymap,必须按当前系统备份对应文件 - 如果用了多套键位(比如为不同语言单独设键),还要一并备份
Python.sublime-keymap、JavaScript.sublime-keymap等同级文件
备份前必须关掉 Sublime Text
只要 Sublime 进程还在运行,User.sublime-keymap 就可能被热重载机制覆盖或写入临时内容。常见现象是:你刚保存的快捷键,一重启就消失;或者文件末尾莫名多出空行、逗号错位导致 JSON 解析失败。
务必确认进程已退出:
- Windows:任务管理器中查
sublime_text.exe或subl.exe,不能只关窗口,托盘图标还在就代表没退干净 - macOS:活动监视器搜
Sublime Text,或终端执行pgrep -f "Sublime Text",返回空才安全 - Linux:运行
pgrep -f sublime,无输出再操作
别漏掉依赖插件本身的配置文件
有些插件的快捷键行为受其自身设置控制。比如 EmmyLua 的代码跳转快捷键是否启用,取决于 Packages/User/EmmyLua.sublime-settings 里有没有 "enable_goto_definition": true。只备份 User.sublime-keymap,但忘了拷 EmmyLua.sublime-settings,新环境里快捷键可能根本触发不了命令。
所以完整备份清单是:
-
Packages/User/Default (xxx).sublime-keymap(必选) -
Packages/User/*.sublime-settings(所有插件相关的用户设置文件,如Package Control.sublime-settings、SideBarEnhancements.sublime-settings) -
Packages/User/Preferences.sublime-settings(影响全局快捷键是否被拦截,比如"ignored_packages"列表)
注意:不需要备份插件源码目录(如 Packages/SideBarEnhancements/),除非你改过它的源码——正常用户只需确保新环境重新安装同名插件即可。
导入后快捷键不生效?先查这三件事
把 User 文件夹复制过去、重启 Sublime,结果快捷键按了没反应——大概率不是备份错了,而是环境没对齐:
- 检查
Preferences → Settings – User里是否启用了该插件:"ignored_packages": [],如果插件名在列表里,它根本不会加载,快捷键自然无效 - 打开控制台(
Ctrl+`),输入sublime.log_commands(True),然后手动点一次菜单里的对应功能,看控制台输出的 command 名,和你User.sublime-keymap里写的是否一字不差 - 确认快捷键没被系统或其他软件劫持,比如
Ctrl+Shift+T在 Chrome 里是重开关闭标签页,在 Sublime 里就冲突失效
最常被忽略的是:快捷键绑定本身带 context 条件(比如只在侧边栏聚焦时生效),而你复制的规则没包含这部分,导致看似一样的 JSON 却不触发。这种细节必须从原环境导出,不能靠猜。


















