在launch.json中使用"console": "integratedTerminal"
时,程序输出将重定向到集成终端。但是,在终止调试会话并启动另一个会话之后,将重新使用该终端,这可能会很烦人。
我还没有找到一种使VSCode清除终端的方法-可以使用clear: true
属性来clear the panel in tasks.json,但这仅适用于诸如构建任务之类的任务,但无效在调试面板上。
非常感谢您的帮助。
预先感谢
-西蒙(Simon)
答案 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
}
]
这两个串联使用将打开“调试控制台”而不是终端,仅提供必要的输出;尽管它仍然会发送到终端,但您仍然需要它:
另一种选择是完全不使用终端:
"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
。
答案 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}"
}
]
}
不过有一个警告:它会清除活动终端。因此,如果您在完成任务后切换到其他终端,这将清除该终端...我还没有找到定位特定终端窗口的方法,我认为这是不可能的。