ctrl+shift+h没反应,先确认是否卡在“当前文件”模式:右上角显示灰色“文档”图标即为状态残留,按一次ctrl+shift+h或点击⋯→勾选“在文件中查找”即可恢复;同时需排查输入法劫持、插件冲突(如gitlens)及系统快捷键覆盖。

Ctrl+Shift+H 按下没反应,先看是不是卡在「当前文件」模式
VSCode 的 Ctrl+Shift+H 默认触发全局替换,但实际按下后如果只在当前文件里搜/替,说明它被状态残留锁住了——不是崩溃,是搜索面板误判上下文。右上角若显示灰色「文档」图标,就坐实了。这时候别改配置,直接再按一次 Ctrl+Shift+H,或点面板右上角 ⋯ → 勾选「在文件中查找」。这个动作比重启、重载窗口快得多。
用 Developer: Toggle Keybinding Troubleshooter 看谁真正在抢键
按 Ctrl+Shift+P → 输入并执行 Developer: Toggle Keybinding Troubleshooter,然后立刻按 Ctrl+Shift+H。面板里只有带 ▶ 的绿色条目才是当前生效的命令。常见劫持者包括:
-
GitLens可能绑了相同组合到gitlens.showQuickFileHistory -
Prettier或ESLint扩展有时会覆盖editor.action.replaceAll -
Remote - SSH连接后动态注入的绑定,本地禁用无效,得在远程窗口里重查
灰色条目不用管,它只是 when 条件不满足,比如你当前焦点在终端,而某条规则写了 "when": "editorTextFocus"。
禁用插件快捷键但不卸载插件,必须写对 command ID 和减号
想留着 GitLens,但不让它抢 Ctrl+Shift+H?不能只删掉它的快捷键条目,得在 keybindings.json 里加负向规则:
[{"key":"ctrl+shift+h","command":"-gitlens.showQuickFileHistory"}]
关键点:
-
command必须是完整命令 ID,右键快捷键列表 → “复制命令 ID” 最稳妥,手敲易错(gitlens.showQuickFileHistory少个点或大小写错都无效) - 不能写
"command": ""或null,VSCode 会整条忽略 - 这条只取消绑定,
Ctrl+Shift+H不会变灰也不会报错,但也不会触发任何操作——你得手动补一条新绑定,否则等于废掉
系统和输入法劫持比配置错误更常见
Windows 上 Ctrl+Shift+H 失效,大概率是中文输入法在后台偷偷占用了。搜狗、QQ 拼音默认把 Ctrl+Shift+H 设为「中英文切换」或「隐藏/显示输入法」。验证方法很简单:临时切到系统自带微软拼音英文模式,再试一次。如果恢复,就去输入法设置里关掉对应快捷键。
Mac 用户要注意:Cmd+Shift+H 是系统级「隐藏其他应用」快捷键,VSCode 根本收不到。这不是配置问题,是 macOS 先截胡了。解决路径是系统设置 → 键盘 → 快捷键 →「程序快捷键」→ 找到「隐藏其他应用程序」,把它关掉。
真正麻烦的是这些劫持不报错、不提示、也不 fallback——你改十次 keybindings.json 都没用,直到关掉那个躲在后台的输入法进程。











