VSCode API:在终端中运行命令并使用输出

3

我目前正在构建一个VSCode扩展程序,它可以在终端中启动一个shell命令。我想要的是将输出作为字符串获取,但如果无法实现,我希望能够显示输出(或保持终端打开)。

我可以使用以下代码打开终端并运行:


let terminal = vscode.window.createTerminal({
    name: "My Command",
    cwd: cwd,
    hideFromUser: false,
    shellPath: script,
    shellArgs: args,
});
terminal.show()

这很好用,命令运行并且我可以在底部的终端看到输出结果,但是当命令完成后终端立即关闭了。有没有办法让终端保持打开状态,或者以某种方式获取命令输出?我一直在查阅文档,但似乎并没有找到解决方法。


目前这是不可能的。请参阅 https://dev59.com/r1gQ5IYBdhLWcg3wSh91。 - Jay Wick
1个回答

1
在Windows上,使用上面的注释中的链接,并假设您基本上希望运行powershell命令或脚本并接收输出(而不是特别使用终端),这是一种有效的方法:
  import * as cp from "child_process";

  const execShell = (cmd: string) =>
    new Promise<string>((resolve, reject) => {
      cp.exec(cmd, (err, out) => {
        if (err) {
          return resolve(cmd+' error!');
          //or,  reject(err);
        }
        return resolve(out);
      });
    });

  //... show powershell output from 'pwd'...
  context.subscriptions.push(
    vscode.commands.registerCommand('test', async () => {
      const output = await execShell('powershell pwd');
      vscode.window.showInformationMessage(output);
    })
  );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接