在启用Vim扩展的VSCode中配置快捷键全局查找光标单词
在VSCode Vim扩展中实现光标单词全局查找快捷键
需求
希望在启用Vim扩展的VSCode中,通过快捷键(比如Leader键+F或Ctrl+F10这类组合)一键完成以下操作:
- 复制光标所在单词(对应Vim操作
yiw) - 打开全局查找面板(对应快捷键
Ctrl+Shift+F) - 粘贴复制的单词并触发搜索
同时想确认:仅靠VSCode的Vim扩展能否实现?最优方案是什么?
尝试过的无效方案
方案1:直接在Vim键绑定中混合按键与命令
曾在settings.json中尝试以下配置:
"vim.normalModeKeyBindings": [{ "before": ["<leader>", "f"], "after": [ "y", "i", "w", "workbench.action.findInFiles", "<C-v>" ] }]
该配置无效,因为after字段仅接受纯按键输入,不支持调用VSCode的命令(如workbench.action.findInFiles)。
方案2:使用Multi-Command扩展
猜测需要通过Multi-Command扩展串联操作,在keybindings.json中配置:
{ "key": "ctrl+f10", "command": "extension.multiCommand.execute", "args": { "sequence": [ "editor.action.addSelectionToNextFindMatch", "workbench.action.findInFiles", "workbench.action.paste" ] } }
配置后无响应,推测是Vim模式拦截了快捷键触发。
最终可行方案
无需额外安装扩展,仅靠VSCode Vim扩展的配置即可实现需求。在settings.json的vim.normalModeKeyBindings中添加以下内容:
"vim.normalModeKeyBindings": [ { "before": ["<leader>", "f"], "commands": [ "editor.action.addSelectionToNextFindMatch", { "command": "workbench.action.findInFiles", "args": { "query": "${selectedText}", "triggerSearch": true // 可选配置:如需正则匹配可开启 "isRegex": true // 如需同时设置替换内容可添加 "replaceString": "目标文本" } } ] } ]
配置说明
editor.action.addSelectionToNextFindMatch:自动选中光标所在的完整单词,替代Vim的yiw复制操作workbench.action.findInFiles:调用全局查找命令,通过args直接将选中的文本作为查询内容,并设置triggerSearch: true自动触发搜索
内容的提问来源于stack exchange,提问作者JoePerkins
相关产品推荐
相关产品推荐

