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

Posted

技术标签:

【中文标题】VSCode:调试开始时清除集成终端【英文标题】:VSCode: clear integrated terminal when debug starts 【发布时间】:2019-10-30 08:52:51 【问题描述】:

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

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

非常感谢您的帮助。

提前致谢 -西蒙

【问题讨论】:

也想知道这个! 【参考方案1】:

但这仅适用于构建任务等任务,但对调试面板没有影响。

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

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

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


另一种选择是完全不使用终端:

"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 也一样,然后有原生支持。

【讨论】:

【参考方案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

【讨论】:

【参考方案3】:

您可以使用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"
    
  ]


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

【讨论】:

以上是关于VSCode:调试开始时清除集成终端的主要内容,如果未能解决你的问题,请参考以下文章

VSCode - 使用集成终端而不是调试控制台进行调试/启动

用vscode调试时,怎样配置才能使用集成的terminal而不是win的

VSCode修改Java运行及输出于集成终端而非调试控制台

开始调试会话时,MacOS 上的 VSCode LLDB 错误

使用VS Code从零开始开发调试.NET Core 1.0

NET Core 1.0