在 VS Code 扩展中使用集成终端

Using integrated terminal in a VS Code extension

有多个命令与 VS Code 提供的 Integrated Terminal 有关。在我的扩展中,我可以使用 workbench.action.terminal.focus 打开它并聚焦它,但是 运行ning 命令似乎很难通过 runSelectedText 来完成。理想情况下,我希望能够直接 运行 命令,而无需中间文档来模拟选择并能够读取它们的结果。

我找到了 MainThreadTerminalService,它似乎提供了我想要的东西,但我不知道如何以及是否可以从扩展中使用它。扫描 node_modules/vscode/vscode.d.ts 寻找 终端 没有产生任何结果,所以我认为这还不可能。

使用 TerminalPasteAction 到 运行 命令似乎是一个选项,但我首先必须将命令放入剪贴板,而且似乎没有一个好的听法无论如何结果。

我知道我可以 运行 一个子进程并监听它的标准输出和错误,但是由于 VS Code 提供了集成终端 window,如果用户可以看到命令,因为它们 运行 在我的扩展程序独有的单独集成终端选项卡中。这可能吗?会吗?

检查此线程 https://github.com/Microsoft/vscode/issues/9957

显然 API 是有限的,但你有

CreateTerminal(name?: string): Terminal
interface Terminal {
   name:string;
   runCommand(cmd:string)
   show(preserveFocus: boolean): void
   hide(): void;
   dispose(): void;
}