VS Code多光标导航时如何保留已添加的选区?
VS Code多光标导航问题解答
场景说明
- 打开一个文本文件,选中出现10次的字符串
SO; - 使用命令
editor.action.moveSelectionToNextFindMatch导航至下一个匹配项,再通过editor.action.addSelectionToNextFindMatch将第2至第5个SO的匹配项添加到选区; - 使用命令
editor.action.moveSelectionToPreviousFindMatch导航至上一个匹配项。
问题
- 执行步骤3时,步骤2添加的选区会被逐个删除,这是否属于正常现象?
- 若为正常现象,如何在多光标模式下导航匹配项且不删除已添加的选区?是否可通过settings.json设置或其他命令实现?
问题1:这是正常现象
VS Code原生的editor.action.moveSelectionToPreviousFindMatch和editor.action.moveSelectionToNextFindMatch命令是为单光标导航设计的,执行时会自动清除所有额外选区,仅保留当前导航的单个光标/选区,你遇到的情况符合命令的预期行为。
问题2:多光标导航且保留选区的实现方案
方案1:使用第三方扩展(最便捷)
安装Multi Cursor Utils扩展,它提供了multiCursorUtils.moveSelectionsToNextFindMatch和multiCursorUtils.moveSelectionsToPreviousFindMatch命令,这两个命令可以同步移动所有已存在的选区,不会清除多光标。安装后可在快捷键设置中给这两个命令绑定顺手的按键。
方案2:自定义宏(无需额外扩展,需配置)
通过VS Code的宏功能(需先安装macros扩展),组合原生命令实现:
- 在
settings.json中添加宏配置:
"macros": { "syncMoveSelectionsNext": [ "editor.action.addSelectionToNextFindMatch", "editor.action.removeSelection" ], "syncMoveSelectionsPrevious": [ "editor.action.addSelectionToPreviousFindMatch", "editor.action.removeSelection" ] }
- 在
keybindings.json中绑定快捷键(示例):
{ "key": "ctrl+shift+right", "command": "macros.syncMoveSelectionsNext" }, { "key": "ctrl+shift+left", "command": "macros.syncMoveSelectionsPrevious" }
这个逻辑是先添加下一个/上一个匹配项到选区,再移除原选区,从而实现所有选区同步导航的效果。
内容的提问来源于stack exchange,提问作者vimchun
相关产品推荐
相关产品推荐

