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

Sim*_*tes 16 visual-studio-code

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

我还没有找到让 VSCode 清除终端的方法——可以使用属性清除 tasks.json 中的面板clear: true,但这仅适用于构建任务等任务,但对调试面板没有影响。

非常感谢帮助。

提前
致谢 - 西蒙

Mar*_*ark 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


sou*_*ned 5

然而,这仅适用于诸如构建任务之类的任务,但对调试面板没有影响。

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

如果您想将终端输出重定向到调试控制台,您可以对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
    }
]
Run Code Online (Sandbox Code Playgroud)

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

调试控制台


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

"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "internalConsole",
    }
]
Run Code Online (Sandbox Code Playgroud)

这意味着,它根本不会发送到(或使用)您的集成终端,而只会打开调试控制台,该控制台不会显示任何cd类似的语句或可执行开销,也没有以前的历史记录


快捷方式(绝对不那么用户友好):

终端:重新启动活动终端
CommandId:workbench.action.terminal.relaunch

终端:清除
CommandId:workbench.action.terminal.clear


这些选项并不能回答“调试开始时如何清除终端”的问题,而是为 vscode 新手考虑作为替代方案的选项。我不太确定他们认为终端是否适合调试,因为我们有一个调试控制台和调试/运行面板。这可能很复杂的原因是扩展使用自己的输出通道进行调试。例如,Python 使用与 Code Runner 完全不同的终端。javascript 也是如此,然后还有本机支持。