VSCode:调试开始时清除集成终端

18
在launch.json中使用“console”: “integratedTerminal”时,程序输出会重定向到集成终端。但是,在终止调试会话并启动另一个会话后,终端将被重新使用,这可能非常烦人。
我没有找到让VSCode清除终端的方法--可以使用tasks.json中的“clear: true”属性清除面板, 但这仅适用于诸如构建任务之类的任务,对调试面板没有影响。
非常感谢您的帮助。
提前致谢 -Simon

3
也想知道这个! - phatmann
3个回答

6

在v1.55中将推出一个新的设置:

debug.terminal.clearBeforeReusing

某些调试扩展允许在VS Code的集成终端中启动调试程序。为了保持集成终端数量的稳定,如果无法占用当前正在运行的命令,则VS Code会尝试重复使用终端。这种方法的一个副作用是,前面的命令和程序输出将保留在终端中,有时会令人困惑。

在此版本中,我们引入了一个新功能,在启动新的调试会话之前自动清除集成终端。该功能由新的设置debug.terminal.clearBeforeReusing控制。

来自https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_55.md#new-setting-for-clearing-a-terminal-before-launching-a-debuggee


5

这只对构建任务等任务有效,但不会影响调试面板。

每次会话中,“调试控制台(Debug Console)”应该是新的文本。

如果要将终端输出重定向到“调试控制台”,请在您的launch.json文件中使用以下属性:

internalConsoleOptions

控制内部调试控制台何时打开。

redirectOutput

"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "integratedTerminal",
        "internalConsoleOptions": "openOnSessionStart",
        "redirectOutput": true
    }
]

将这两者结合使用将会打开“调试控制台”,而不是终端,并提供必要的输出;尽管如果您仍然需要,它仍然会发送到终端:

debug console


另一种选择是根本不使用终端:

"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "internalConsole",
    }
]

意思是,它不会发送到(或使用)您的集成终端,并且只打开调试控制台,其中不显示任何类似于cd语句或可执行开销以及没有先前的历史记录。
快捷方式(肯定不太友好):
终端:重新启动活动终端 CommandId:workbench.action.terminal.relaunch 终端:清除 CommandId:workbench.action.terminal.clear
这些选项并不能回答“如何在调试开始时清除终端”的问题,但对于那些新手来说,可以考虑作为替代方案。我不确定他们是否认为终端适合调试,因为我们有一个调试控制台和调试/运行面板。原因可能很复杂,因为扩展程序使用自己的输出通道进行调试。例如,Python使用完全不同的终端,而Code Runner则不同。JavaScript也是如此,然后有本地支持。

2
你可以使用 preLaunchTask 来清除终端: launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch via NPM",
      "preLaunchTask": "Clear terminal",
      "runtimeVersion": "15.14.0",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "start"],
      "skipFiles": ["<node_internals>/**"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
    }
  ]
}

tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Clear terminal",
      "command": "echo ${command:workbench.action.terminal.clear}"
    }
  ]
}

然而,需要注意的是:它将清除活动终端。因此,如果在完成任务后切换到另一个终端,则会清除该终端...我还没有找到一种方法来针对特定的终端窗口,我认为这是不可能的。


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