Cmd+Shift+P无响应是因macOS或搜狗、百度输入法将其设为中英文切换键而劫持,非Sublime故障;验证用sublime.log_input(True),解决需禁用系统输入源快捷键或改用Ctrl+Shift+P等新绑定。

Cmd+Shift+P没反应?先看按键进没进Sublime
不是ChineseLocalization插件的问题,也不是Sublime坏了——macOS系统或搜狗、百度输入法默认把Cmd+Shift+P当成了中英文切换键,直接截走,Sublime根本收不到。验证方法很简单:Ctrl+`打开控制台,输sublime.log_input(True)回车,再按Cmd+Shift+P。如果控制台完全没输出,就坐实是外部拦截。
解决路径很直接:
- 进入「系统设置 → 键盘 → 快捷键 → 输入源」,禁用或重设「选择上一个输入法」绑定的组合
- 临时切到系统自带的「简体中文-拼音」输入法测试,若恢复即锁定是第三方输入法问题
- 检查是否装了
Karabiner、BetterTouchTool这类全局键映射工具,它们也可能劫持该组合
想改命令面板快捷键?别删原绑定,直接覆盖
macOS的Cmd+Shift+P和Spotlight冲突,但没必要关掉Spotlight。更稳妥的做法是在User Key Bindings里加一条新绑定,比如用Ctrl+Shift+P或Cmd+Alt+P:
[{"keys": ["ctrl+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"}}]
注意三点:
- 别删掉原有的
Cmd+Shift+P绑定,某些插件(如Package Control)内部可能依赖它触发 -
keys必须是数组格式,哪怕只有一个组合也要写成["ctrl+shift+p"] - 所有字符串值必须用英文双引号,JSON末尾不能多逗号,否则整个文件静默失效
Cmd+D、Cmd+Shift+L失灵?重点查Vintage和输入法
Cmd+D默认是find_under_expand,Cmd+Shift+L是split_selection_into_lines,但这两个键在macOS上极易被干扰:
-
Vintage插件会接管Cmd+D,把它变成vi模式下的操作;运行subl --safe-mode测试,若恢复就说明是插件问题 - 搜狗、百度输入法常把
Cmd+Shift+L设为中英文切换键,同样会导致无响应 - 别在
Key Bindings – User里硬写{"keys": ["cmd+d"], "command": "find_under_expand"}——Vintage的Default绑定加载顺序靠后,会直接盖掉你的配置
真正有效的做法是:进Preferences → Package Settings → Vintage → Settings,设"exit_insert_mode_on_escape": false,并确认"vi_cmd_mode_key_press_timeout": 0。
Esc、Cmd+B这类键改不了?它们压根不走Key Bindings流程
Esc关闭命令面板、搜索框、替换栏,是Sublime内核硬编码行为,Default.sublime-keymap和User.sublime-keymap里搜不到任何escape绑定。你在User里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还可能破坏原生逻辑。
Cmd+B同理,macOS Ventura及更新版本中,它常被Finder或Dock注册为“应用无关快捷键”,和Sublime配置无关。排查路径是:
- 进「系统设置 → 键盘 → 快捷键 → 应用快捷键」,搜索
Cmd+B,删掉Finder或Dock的条目 - 用
sublime.log_input(True)验证Esc是否进得来:没输出=系统/键盘固件层拦截;有输出但UI不响应=插件劫持(盯Vintage、Origami)
真正容易被忽略的是:这些键的失效,从来不是JSON写错了,而是你一开始就试图用改Key Bindings的方式去动它们——方向错了,越调越乱。


















