0

我想createTerminalEditor如果还没有terminalEditor打开。

注意:我说的是terminalEditor而不是terminal.

所以,我正在寻找一个whenarg ,它说类似editorAlreadyExists != terminalEditor,就像有activeEditoraceepts 字符串一样terminalEditor

有没有办法做到这一点?

这是activeEditor供参考的示例,但我想检查terminalEditor所有已打开的编辑器中是否存在,而不仅仅是activeEditor.

  {
    "key": "ctrl+`",
    "command": "workbench.action.createTerminalEditor",
    "when": "activeEditor != terminalEditor"
  },
4

1 回答 1

1

我看到有一个when条款:

terminalEditorFocus: 真假

除了没有打开终端编辑器时它根本不在列表中(通过)之外,这看起来没有帮助。Developer: Inspect Context Keys所以我想也许有一个键绑定when子句可以利用这一点。但是我尝试了各种各样的东西,比如它是 null 还是 undefined 或者是空字符串,或者既不是 true 也不是 false 等等,但没有任何效果。我认为如果密钥terminalEditorFocus不存在,那么什么都不会传递给键绑定解析器并且它总是失败。

您可以提出问题,要求提供特定terminalEditorExists类型的when子句。


会有另一种方式。目前有一个实验性的 api 可以访问所有打开的选项卡。请参阅建议的 api。因此,您可以编写一个扩展程序来检查所有打开的选项卡并在workbench.action.createTerminalEditor没有终端编辑器时触发命令。它现在可以在 Insiders Build 中运行,但我不知道它什么时候会最终完成 - 现在看起来很可靠。问题:选项卡模型 API

const tabs = vscode.window.tabs;
const openTerminalEditor = tabs.some(tab => tab.viewId === 'terminalEditor');  // true/false

setContext然后,您可以使用或运行命令设置自己的上下文键。

于 2021-10-03T18:39:48.777 回答