如何摆脱“终端将任务可以重复使用,按任意键关闭它。” 行为?

A.B*_*.B. 13 visual-studio-code vscode-tasks

当(在这种情况下货物构建)执行任务,在VSCode终端画面显示如下:

> Executing task: cargo build <

(output of the task here)

Terminal will be reused by tasks, press any key to close it.
Run Code Online (Sandbox Code Playgroud)

烦人的是,这将我带离了普通终端,然后我必须获取终端窗口的焦点并按一个键才能返回。而当我这样做时,货运量的输出就消失了。

我如何停止这种行为?

如何摆脱文本的第一行和最后一行?

Von*_*onC 8

检查 VSCode 1.57(2021 年 5 月,OP 后 2.5 年)的新功能是否有帮助:

自动关闭任务终端

任务presentation属性有一个新close属性。
设置closetrue将导致终端在任务退出时关闭。

{
  "type": "shell",
  "command": "node build/lib/preLaunch.js",
  "label": "Ensure Prelaunch Dependencies",
  "presentation": {
      "reveal": "silent",
      "revealProblems": "onProblem",
      "close": true
  }
}
Run Code Online (Sandbox Code Playgroud)

[编辑:18-08-2018] 使用关闭选项时切换到问题选项卡会更好,因为这样可以确保任务终端关闭,但问题会正确突出显示。这是来自 VSCode 1.59.0。

  • 基于 VS Code 的发展及其在执行命令后自动关闭终端的能力,现在这应该是公认的解决方案。 (7认同)
  • “presentation”键将作为文件中“task”字典的键添加到文件tasks.json中。 (2认同)
  • 这对我有用,谢谢。当出现问题时,他们会进入“问题”选项卡 (2认同)

Gre*_*aun 7

有一个名为 的新演示选项showReuseMessage。将以下内容添加到您的任务定义中。

"presentation": {
     "showReuseMessage": false
}
Run Code Online (Sandbox Code Playgroud)

  • 这实际上只是隐藏了消息“按任意键关闭终端。”。您仍然需要按任意键才能看到您的终端。 (7认同)

kim*_*udi 5

明确地说,执行任务将始终以VS Code创建一个新的集成终端。没有办法解决。最重要的是要显示原始终端,而不是新创建的集成终端。(我们希望显示原始终端。)

@Gregory Cosmo Haun的解决方案将禁止显示消息“终端将被任务重用,请按任意键将其关闭”。但是,它仍然显示了新的集成终端,而不是普通终端。(因此您仍然必须按“任意键”以关闭该终端并显示原始终端)

一个更好的解决方案是set "reveal": "silent",它将仍然创建一个新的集成终端,但是除非执行任务时出错,否则不会显示它。我还进行了设置"clear": true(这是可选的),以便在执行任务之前清除终端。我故意省略了"showReuseMessage": false(这是可选的),但是您可以添加它。谁在乎提示是否被抑制?最重要的是,不会显示新创建的终端,因此我不必“按任何键”将其关闭。

"presentation": {
  "reveal": "silent",
  "clear": true
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您也可以设置"reveal": "never",但是如果执行任务有问题,通常您会希望看到错误消息。

我认为,这是最好的解决方案。是的,在执行任务时总会创建一个新的集成终端,但是至少不会显示出来(除非有错误),您可以安全地忽略它,而无需按任何键将其关闭。

  • @Omar - “.vscode”文件夹中的“task.json”文件。请参阅 https://code.visualstudio.com/docs/editor/tasks (2认同)

cer*_*rou 2

一种可能性是将以下命令添加到“任务”中:

"presentation": {
            "panel": "new"
        },
Run Code Online (Sandbox Code Playgroud)

作为

"tasks": [
    {
        "label": "python",
        "type": "shell",
        "command": "python",
        "presentation": {
            "panel": "new"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

这并不能完全解决问题,但至少不会将所有结果一个接一个地堆放在面板中。

灵感来自https://github.com/Microsoft/vscode/issues/35642