VSCode按键绑定是否存在判断组内聚焦编辑器索引/是否为末位的when子句?
VSCode 编辑器组标签非循环切换问题解答
核心结论
- 目前VSCode原生未提供单个编辑器在所属组内的索引、是否为组内首尾标签对应的when上下文变量,你设想的
activeEditorLast、activeEditorIndex这类变量暂不存在,无法直接通过修改快捷键的when子句实现非循环切换需求。 - 另外你示例配置中写的
!activeEditorIndex == 0不符合VSCode when子句的语法规范,when子句的相等判断需使用==/!=运算符,正确写法应为activeEditorIndex != 0,不过由于对应的上下文变量不存在,该条件目前无法生效。 - 截至当前稳定版,VSCode没有内置设置项可以禁用
workbench.action.nextEditorInGroup/workbench.action.previousEditorInGroup的默认循环跳转逻辑。
可行实现方案
你可以通过安装VSCode社区扩展实现需求,目前已有专门针对该场景的扩展,扩展会提供非循环的前后切换标签命令,你只需要把原来绑定在默认命令上的ctrl+.、ctrl+,快捷键,改成绑定扩展提供的对应命令即可,不需要额外编写when条件判断。
如果不想依赖第三方扩展,也可以通过VSCode的可扩展性API自行编写极简插件,通过API获取当前激活编辑器在组内的索引,判断首尾后再执行切换逻辑,实现成本很低。
内容的提问来源于stack exchange,提问作者Ella
相关产品推荐
相关产品推荐

