VSCode的keybindings.json中when参数如何检测已存在的terminalEditor?
实现方案
方案1:VSCode 1.80+ 原生实现(推荐)
VSCode 1.80及以上版本内置了terminalEditorCount上下文变量,专门用于统计当前所有已打开的terminalEditor的总数量,刚好覆盖你检测全量编辑器的需求,无需额外安装插件。
你可以直接修改keybindings.json的配置如下:
{ "key": "ctrl+`", "command": "workbench.action.createTerminalEditor", "when": "terminalEditorCount == 0" }
配置逻辑:当terminalEditorCount等于0时,代表当前没有任何已打开的终端编辑器,此时按下快捷键才会触发新建操作,完全匹配你的需求。
方案2:低版本VSCode兼容方案
如果你使用的VSCode版本低于1.80,没有内置上述变量,可以通过扩展实现:
- 安装
Multi Command扩展,支持自定义组合命令 - 在
settings.json中添加自定义命令,逻辑为遍历所有已打开的编辑器判断是否存在terminalEditor,再决定是否执行创建操作:
"multiCommand.commands": [ { "command": "multiCommand.createTerminalEditorIfNoneExists", "sequence": [ "workbench.action.createTerminalEditor" ], "when": "workspace.editors.all(e => e.type != 'terminalEditor')" } ]
- 在
keybindings.json中把快捷键绑定到自定义命令即可:
{ "key": "ctrl+`", "command": "multiCommand.createTerminalEditorIfNoneExists" }
内容的提问来源于stack exchange,提问作者user13172816
相关产品推荐
相关产品推荐

