如何通过VSCode终端API以字符串形式获取输出?

时间:2019-07-19 11:43:02

标签: typescript visual-studio-code vscode-extensions

VSCode具有Windows API,可以与终端进行交互。

例如,您可以发送Linux命令pwd,并且命令输出可能是/usr/home/userName

我尝试将输出写入磁盘,然后使用类似pwd > directory.txt的方式读取它;

terminal.sendText(`pwd > directory.txt`);

这似乎可行,但是我想知道是否还有更优雅的东西。

//Create a new terminal
let terminal = vscode.window.createTerminal(`Name of terminal`, 'C:\path\to\terminal\shell\shell.exe');

// send command to newly created terminal
terminal.sendText(`pwd`);

我确定上面的代码可以正常工作,因为我可以使用以下命令将输出写入文件:

terminal.sendText(`pwd > directory.txt`);

问题是,如何将terminal.sendText()的输出作为字符串,而不必先将它们写入磁盘?

1 个答案:

答案 0 :(得分:1)

vscode还提供了一个事件,以监听正在写入终端的任何数据,使用以下代码来监听终端的写入:

vscode.window.onDidWriteTerminalData((e) => {console.log(e.data)})

但是它将监听所有写操作,因此您必须放置一些条件以防止读取终端上的每个按键,也许您只能在e.data == \ n或其他条件下才能读取。 / p>