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

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

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

非常感谢您的帮助。

提前致谢
-西蒙

【问题讨论】:

  • 也想知道这个!

标签: visual-studio-code


【解决方案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}"
          }
        ]
      }
      
      

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

      【讨论】:

        猜你喜欢
        • 2018-09-09
        • 2021-11-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        • 2021-02-18
        • 1970-01-01
        • 2018-02-23
        • 1970-01-01
        相关资源
        最近更新 更多