如何在启动构建时自动清除VS Code终端?

56

我按下 Ctrl+Shift+BVisual Studio Code 中开始构建(配置为运行 GNU Make),构建工具输出到终端窗口。

但是,它会追加到上一次构建的输出中,这很令人困惑。

如何配置 VS Code 在开始新的构建之前清空终端窗口?


Visual Studio 默认会构建项目文件而不是您的普通文件。因此,请创建一个新项目,按照这里的步骤进行操作。https://dev59.com/B3jZa4cB1Zd3GeqPfpJD - babygame0ver
2
Visual Studio _Code_,而不是 Visual Studio。 - Roger Lipscombe
对不起,我以为是Visual Studio,但你可以使用命令行。 - babygame0ver
@Mark 你是如何将类似的 VSCode 命令添加到任务中的? - Denis Howe
1
请参考 https://dev59.com/1lMH5IYBdhLWcg3w8l-b#57470981 的示例,@Denis。 - Mark
显示剩余3条评论
9个回答

63

2018年11月更新

这个提交开始(以及随后的一些跟进),您现在可以添加一个clear演示选项到您的任务中,以使它在运行每个任务之前清除终端。

工作示例(在新克隆+构建上):

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "[gcc] Build",
            "type": "shell",
            "command": "g++",
            "args": [
                "source.h",
                "-Wall",
                "-o",
                "a.out"
            ],
            "presentation": {
                "clear": true                        // <-- this line
            }
        }
    ]
}

注意:链接的提交差异中,键名被命名为clearBeforeExecuting,但显然已经更改为clear

在此之前,我在我的路径上创建了一个clear_g++脚本,其中只包含:

#!/bin/bash
clear
exec g++ $*

然后我将我的commandg++改为clear_g++

因为我喜欢这种方法的想法,但最终它并没有奏效。


1
从v1.30版本说明中:https://code.visualstudio.com/updates/v1_30#_clear-task-terminal - Mark
这也被纳入了官方文档 - IInspectable
我在文档中找不到的是,您可以添加任务属性(如“presentation”)_在任何任务之外_以设置所有任务的默认值。 - Denis Howe

20

你可以从设置菜单中更改(至少在1.30.2及以上版本中)...

在Mac上,只需点击Code > Preferences > Settings。

然后搜索"clear"并勾选"Clear Previous Output"。

从菜单设置中清除先前的输出


21
在我的VS Code中没有出现这个;看起来你安装了一个名为"Code-runner"的扩展。 - Roger Lipscombe
必须安装Code-runner扩展程序才能使用此设置。 - SAYE

9
新的Visual Studio code 1.56版本。这适用于Windows操作系统。
您只需前往"Preferences:Open Settings(UI)",搜索"Clear"并勾选以下选项:

enter image description here

这将确保在每次运行时终端保持清晰,从而确保一次只能看到一个文件运行。

嗯,我在运行版本为1.57的Mac上,你展示的内容我已经按照操作了,但似乎没有生效。你是在运行单独的扩展吗? - Michael1775
我正在使用Windows笔记本电脑进行此操作。在您的Mac上的vs-code中没有“清除”选项吗? - Avneet
1
我已经清除并勾选了该框。当运行代码时,它只运行一次,如果再次运行,则不会清除先前的输出。我找到了以下内容。//在集成或外部终端中开始新的调试会话之前,请清除终端。 "debug.terminal.clearBeforeReusing": false, - Michael1775
在我看来,每次都是手动执行这个步骤。所以你的方法更好。我会测试一下。 - Avneet
如果您添加以下内容,它基本上会清理或呈现人们提问的方式。 导入 os os.system("clear") - Michael1775

7

在点击运行(▶)时,添加此用户设置以清除“输出”选项卡。

"code-runner.clearPreviousOutput": true,

这并不是清除终端的同义词,但可能是某些人想要的。

[编辑] 这需要Runner扩展,我建议在VS Code中直接测试/运行脚本时使用。


"code-runner.clearPreviousOutput" - 未知的配置设置。 - Mikhail
1
我正在使用VS Code 1.26.1。那一行绝对在我的用户设置中。它也有效运行。 - jim birch
1
你是否安装了 Code Runner 扩展?Code Runner 可以在终端窗口中运行你的代码,它会运行一个不在输出标签处的进程。一旦你安装了 Code Runner,你应该能够添加 clearPreviousOutput 设置。 - jim birch
我安装了它,并添加了 "code-runner.clearPreviousOutput": true 选项,VS 识别了它。然后我按了几次 Ctrl+Shift+B,但输出并没有被清除。 - Mikhail
我已经在我的settings.json文件中添加了该命令,对我来说这完美地起作用。 - Saurabh Rana
显示剩余3条评论

7

我试图找到解决方案,但是无法找到。我尝试的简单方法是在新标签页中打开新构建。在tasks.json中,在您的任务中添加presentation键。

 "presentation": {
                "echo": true,
                "reveal": "never",
                "focus": false,
                "panel": "new"
            }

面板:新的将在新的终端中打开。


不是完美的,但比默认的好。 - clankill3r
@clankill3r为什么它不完美?从实际角度来看,在构建之前打开新终端和清除终端有什么区别? - Fabio says Reinstate Monica
@FabioTurati 我猜每次新构建都会创建一个新任务,而不是清空现有任务的输出,这可能有点令人沮丧。虽然这比附加到现有输出底部要好,但不会滚动到新生成的输出。 - SDJMcHattie
1
@FabioTurati 现在我的终端面板中有越来越多的任务,我猜这至少会消耗内存并分散注意力。 - Mikhail
8
给未来的读者: 现在已经接受并合并了在每次运行任务之前清除终端的选项(参见 此链接),但该选项可能需要一些时间才能出现在稳定版本中。 - jedwards

4

更新 Visual Code 1.54 +

点击运行时清空终端。

  1. 安装 Code-runner 扩展。
  2. 设置 > 搜索 "clear" -> 勾选 "Clear Previous Output" enter image description here enter image description here

2
在 Visual Studio Code 版本 1.52.1 中,默认情况下使用 clear: true 属性来清除终端(=控制是否在执行任务前清除终端)。不幸的是,它并没有达到效果,我仍然可以看到带有旧消息的终端。我必须手动在终端中输入 "clear" 才能完全清除它。
"presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            }

这是在OSX下tasks.json中添加的内容,它看起来像这样:
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: clang++ build active file",
            "command": "/usr/bin/clang++",
            "args": [
                "-std=c++11",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: /usr/bin/clang++",
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            }
        }
    ]
}

1
如果您自己控制构建任务,那么在前面添加一个 clear 命令很容易:
"tasks": [
    {
        "label": "build",
        "type": "shell",
        "command": "clear && make",
....

请注意,这在Linux上运行得非常好,这对我很有帮助。 - moodboom
我不确定它是否仍然适用于Linux:/bin/bash: clear && g++: command not found // 终端进程以退出代码127终止 - jedwards
这假设 PATH 包含 clearmake 命令。我认为当从存在这些命令的 shell 启动时,它会起作用。 - xtofl

0
这也可以通过键绑定来完成。转到命令面板,选择“首选项:打开键盘快捷方式(JSON)”。在我的情况下,我希望VSCode清除输出,刷新测试,然后通过CMake运行CTest(如果需要的话会触发构建)。
[
    {
        "key": "f5",
        "command": "runCommands",
        "args": {
            "commands": [
                "workbench.output.action.clearOutput",
                "testing.refreshTests",
                "cmake.ctest"
            ]
        }
    }
]

可用命令的列表将根据您安装的插件而有所不同。可以在此处找到内置命令的列表:https://code.visualstudio.com/api/references/commands

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接