sublime text 热键不生效的主因是文件路径错误、命名不规范、json 格式错误、绑定冲突及 macos 中误用 cmd 而非 super。需确保 keymap 放在对应平台 user 目录,文件名匹配系统,json 语法正确,且无插件冲突。

热键文件放错位置导致 Sublime Text 不生效
Sublime Text 只认特定路径下的 Default.sublime-keymap 或 Default (Windows).sublime-keymap 等命名规范的文件,且必须放在对应平台的用户配置目录里。直接把别人给的 .sublime-keymap 文件拖进任意文件夹,它不会自动加载。
正确路径(以 Windows 为例):%APPDATA%\Sublime Text\Packages\User\
macOS:~/Library/Application Support/Sublime Text/Packages/User/
Linux:~/.config/sublime-text/Packages/User/
- 文件名必须匹配平台,比如 Windows 下用
Default (Windows).sublime-keymap,macOS 下用Default (OSX).sublime-keymap,否则 Sublime 会忽略 - 如果已有同名文件(如
Default.sublime-keymap),新文件会覆盖——建议先备份原文件 - Sublime 不支持子目录嵌套加载;
User/keys/xxx.sublime-keymap这种路径无效
JSON 格式错误导致整个 keymap 加载失败
Sublime 的热键文件本质是 JSON 数组,但允许末尾逗号、注释(虽然官方不推荐)。一旦语法出错(比如多一个逗号、少一个方括号、用了单引号),Sublime 就静默跳过该文件,控制台里也不会报错——你只会发现按键没反应。
典型问题:
- 用中文引号
“”或全角符号代替英文双引号" - 键名写成
command但实际应为command(没错,拼写要完全一致,大小写敏感) -
keys字段值不是数组,例如写成"keys": "ctrl+shift+p"(缺方括号) - 混用制表符和空格导致缩进混乱(虽不影响解析,但排查困难)
验证方式:用 VS Code 或 Sublime 自身打开该文件,启用 JSON 语法高亮;或粘贴到 jsonlint.com 检查。
冲突绑定让新热键“看起来没生效”
Sublime 按加载顺序合并所有 .sublime-keymap 文件,后加载的同快捷键会覆盖前面的。但更常见的是:你导入的热键和已安装插件(如 Package Control、Emmet、SideBarEnhancements)的默认绑定冲突,结果是插件的命令赢了。
- 打开 Preferences → Key Bindings,左右对比:左边是默认绑定,右边是用户自定义——注意右窗格是否真包含了你的条目
- 在命令面板(
Ctrl+Shift+P)输入key,运行View Package File查看插件自带的 keymap,确认是否有相同keys - 临时禁用插件测试:用
Package Control: Disable Package关掉可疑插件,再试热键
Mac 上 Cmd 键映射需区分 Command 和 Super
macOS 用户容易忽略:Sublime 中 super 表示 ⌘(Command)键,不是 Ctrl;而 cmd 并不是一个合法修饰符——所有 macOS 热键必须用 super。
错误写法:{"keys": ["cmd+enter"], "command": "build"}
正确写法:{"keys": ["super+enter"], "command": "build"}
- Windows/Linux 用
ctrl,macOS 统一用super,不要试图跨平台写一份通用 keymap - 某些旧版 keymap 里残留
cmd是因为老版本兼容逻辑,新版 Sublime Text 4 已彻底移除该别名 - 如果想让同一份配置在多平台生效,得拆成多个文件并按平台命名,靠 Sublime 自动加载机制选中
真正卡住人的往往不是怎么写,而是 Sublime 不报错也不提示——它只是默默跳过错误文件或被覆盖的绑定。改完记得重启 Sublime 或用 Preferences → Browse Packages… 打开 User 目录,手动核对文件名、路径、JSON 结构这三处。











