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

时间:2019-06-16 14:39:42

标签: visual-studio-code

在launch.json中使用"console": "integratedTerminal"时,程序输出将重定向到集成终端。但是,在终止调试会话并启动另一个会话之后,将重新使用该终端,这可能会很烦人。

我还没有找到一种使VSCode清除终端的方法-可以使用clear: true属性来clear the panel in tasks.json,但这仅适用于诸如构建任务之类的任务,但无效在调试面板上。

非常感谢您的帮助。

预先感谢
-西蒙(Simon)

3 个答案:

答案 0 :(得分:2)

但这仅适用于诸如构建任务之类的任务,但对调试面板无效。

“调试控制台”应该是每个会话的新文本。

如果要将终端输出重定向到调试控制台,可以为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


这些选项不能回答“调试开始时如何清除终端”的问题,但是可以将vscode的新选项视为替代选项。我不确定他们是否认为该终端适合调试,因为我们有一个调试控制台和调试/运行面板。之所以会变得复杂,是因为扩展使用自己的输出通道进行调试。例如,python使用与Code Runner完全不同的终端。 javascript也一样,然后有本机支持。

答案 1 :(得分:2)

v1.55 中有一项新设置:

debug.terminal.clearBeforeReusing

<块引用>

一些调试扩展允许在 VS Code 的集成中启动调试器 终端。为了保持集成终端的数量较少,VS 如果终端没有被仍在运行的程序阻塞,代码会尝试重用它 命令。这种方法的结果是以前的命令和 程序输出将在终端中保持可见,有时 令人困惑。

在此版本中,我们引入了一项新功能来自动清除 开始新的调试会话之前的集成终端。这 功能由新设置控制 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

答案 2 :(得分: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}"
    }
  ]
}

不过有一个警告:它会清除活动终端。因此,如果您在完成任务后切换到其他终端,这将清除该终端...我还没有找到定位特定终端窗口的方法,我认为这是不可能的。