【问题标题】:How to use Terminal API to listen to all terminal output in vscode?如何使用终端 API 监听 vscode 中的所有终端输出?
【发布时间】:2019-12-29 00:28:20
【问题描述】:

我想收听扩展程序的终端输出,例如tsc -w,并在输出包含类似文本时抓住时机:

发现 1 个错误。监视文件更改。

或者错误退出代码或类似的东西。是否可以使用旧 API 或 Proposed API?

试过了:

terminal.onDidWriteData(data => {
    console.log('onDidWriteData: ', data.trim());
});

它只是输出自动生成的垃圾,例如:

Windows PowerShell 版权所有 (C) 微软公司。保留所有权利。

【问题讨论】:

    标签: visual-studio-code command-line-interface vscode-extensions


    【解决方案1】:

    看起来它在 Insiders 版本中已被弃用。尝试使用window.onDidWriteTerminalData:

    window.onDidWriteTerminalData(event => console.log(event.data.trim()))
    

    参考

    【讨论】:

      【解决方案2】:

      不幸的是,没有办法。有一个事件 API - window.onDidWriteTerminalData,但它是一个“提议的”API,这意味着它仅在 VSCode 的 Insiders 版本中,您不能在已发布的扩展中使用它。基本上你不能用。

      根据this commentthis comment,尽管出于性能考虑,“建议”永远不会使其稳定。

      作为替代方案,也许您可​​以通过另一个程序传递tsc -w,该程序转发标准输出/标准错误并侦听触发字符串。当它看到它时,它可以通过其他方式通知您的分机,例如编写您观看的文件或某些 IPC 系统。

      不幸的是,这种方法的缺点是您不能再将终端与 VSCode 实例关联,因此如果您有多个 VSCode 实例正在运行,它可能无法工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-25
        • 2021-11-01
        • 2021-06-16
        • 2021-06-09
        • 2021-07-06
        • 2022-12-03
        • 1970-01-01
        相关资源
        最近更新 更多