已安装VSpaceCode扩展时如何添加VSCode-Avy快捷键绑定
VSpaceCode环境下VSCode-Avy快捷键绑定失效解决方案
你之前的配置不生效有两个核心原因:
when条件范围错误:配置的sideBarFocus && !inputFocus && !whichkeyActive仅在侧边栏聚焦时触发,正常代码编辑区聚焦(editorTextFocus状态)时完全不匹配规则,按快捷键无响应。- 快捷键被VSpaceCode拦截:VSpaceCode默认全局接管
space开头的按键序列唤起whichkey菜单,你直接绑定的space+j+j序列会被优先拦截,不会传递到avy的命令。
方案1:集成到VSpaceCode的Space菜单(符合VSpaceCode操作习惯,推荐)
不要直接绑定space开头的和弦快捷键,将avy跳转注册到whichkey菜单路径下即可,配置步骤:
- 打开命令面板,执行
Preferences: Open Keyboard Shortcuts (JSON)打开keybindings.json配置文件 - 删除之前添加的无效配置段
- 添加如下配置:
{ "key": "j", "command": "whichkey.register", "args": { "key": "j", "name": "+跳转", "type": "bindings", "bindings": [ { "key": "j", "name": "Avy字符跳转", "type": "command", "command": "findThenJump.initiate" } ] }, "when": "whichkeyVisible && whichkeyPreviousKey == 'space'" }
配置完成后按space唤起whichkey菜单,依次按j、j即可触发avy跳转,编辑区、侧边栏等非输入框聚焦场景下均可正常触发。
方案2:直接绑定快捷键(不经过whichkey菜单)
如果不需要弹出whichkey菜单,想按下space+j+j直接触发跳转,需要提高快捷键优先级覆盖VSpaceCode的默认拦截,配置如下:
{ "key": "space j j", "command": "findThenJump.initiate", "when": "(editorTextFocus || sideBarFocus) && !inputFocus && !whichkeyActive", "priority": 100 }
配置说明:
when条件覆盖了代码编辑区、侧边栏聚焦的常用场景,可根据自己的使用需求增减触发场景priority参数设置为100是为了让该快捷键优先级高于VSpaceCode默认的space唤起菜单绑定,避免按键被拦截- 如果配置后仍有冲突,可打开键盘快捷键管理页搜索
findThenJump.initiate,查看冲突项后适当调高priority数值即可。
内容的提问来源于stack exchange,提问作者arnle
相关产品推荐
相关产品推荐

