如何在VSCode中运行任务时分割终端?

22
在 Visual Studio Code 中,您现在可以将集成终端分成两个窗口。我也在使用 VSCode 的任务功能同时运行两个任务。当我运行一个任务时,如何使它自动分割当前终端,使用新的终端窗口运行该任务?
基本上,我希望打开 VSCode,它应该像往常一样自动打开集成终端,然后我可以运行我的两个任务,最终得到一个分成三个窗口的终端。
------------------------------------------------------
| default terminal   | Task 1       | Task 2         |
------------------------------------------------------

编辑(已解决): VSCode已更新,现在可以允许这样做:D https://code.visualstudio.com/updates/v1_31#_task-output-support-split-terminals

您现在可以配置任务以在分割终端面板中显示输出,而不是创建新的终端。任务配置可以使用presentation部分中的group属性来定义任务的输出应显示在哪里。

5个回答

8
创建任务时,请确保将 presentation.reveal 选项设置为 always,并将 presentation.panel 选项设置为 new。这样,输出始终可见,并且每次运行任务都会创建一个 新的 终端。
示例:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run tests",
            "type": "shell",
            "command": "./scripts/test.sh",
            "windows": {
                "command": ".\\scripts\\test.cmd"
            },
            "group": "test",
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}

更多信息请访问:Visual Studio Code中的任务 编辑:由于您想要将新任务放入拆分终端,也许这些信息会有所帮助。我不认为这是可能的:直接启动任务到拆分终端

我不明白这如何帮助我在分割终端视图中运行新任务。这只是让它们显示在新的终端中,但它们不会分割以同时显示两个。 - BlueCaret
我认为这是不可能的。请查看我在答案中添加的功能请求,在他们的GitHub上找到它。 - Luan Moraes
我一开始就有这个担忧。不过感谢您提供的功能请求链接!因为您的编辑,我会给予悬赏奖励。 - BlueCaret

7

直接支持此功能是在2019年1月更新中添加的。

为每个任务的presentation.group属性设置相同的名称将导致这些任务出现在拆分终端中。根据VS Code文档

group:控制任务是否在特定终端组中使用拆分窗格执行。在相同组中的任务(由字符串值指定)将使用拆分终端而不是新的终端面板进行呈现。


7
以下内容应该可以工作:
{
    "type": "process",
    "label": "terminal",
    "command": "/bin/bash",  // <-- your shell here
    "args": [
        "-l"  // login shell for bash
    ],
    "problemMatcher": [],
    "presentation": {
        "echo": false,  // silence "Executing task ..."
        "focus": true,
        "group": "sxs",  // some arbitrary name for the group
        "panel": "dedicated"
    },
    "runOptions": {
        "runOn": "folderOpen"
    }
}

这里,在vscode中打开文件夹时,我正在自动启动(并设置焦点在)终端——并且当运行共享相同presentation.group的任务时,它们被放置在拆分终端中(根据其presentation.panel是新的还是重用已有的拆分终端)。

注意:对于此示例,您可能需要或不需要-l选项,具体取决于您对terminal.integrated.shell*terminal.integrated.automationShell*terminal.integrated.inheritEnv的设置——问题讨论了如何设置shell环境。


1
这让我走上了正确的道路。我使用了 presentation.panel = "shared"。对我来说,那起作用了。 - Gennon

0

你可以使用tmux来分割你的终端,不仅限于在vscode中,还适用于所有终端。

MacOS安装

在Mac上开始使用tmux的最简单方法是使用Homebrew包管理器。

  1. 如果您尚未安装Homebrew,请在终端或iTerm中粘贴以下命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  1. 安装Homebrew后,您可以使用brew安装tmux:

brew install tmux

  1. 通过检查版本(注意大写V)确认已安装:

tmux -V

Ubuntu / Debian Linux安装

Ubuntu的安装与Mac类似,只是我们将使用预安装的apt-get包管理器。请注意,我们必须以sudo身份运行apt-get。这是因为用户帐户没有足够的特权来安装tmux,所以sudo将允许我们将其安装为超级用户。

  1. 更新apt-get以确保我们使用的是最新版本:

sudo apt-get update

  1. 安装tmux:

sudo apt-get install tmux

  1. 通过检查版本确认已安装:

tmux -V

安装后

使用tmux命令启动新会话,然后按下ctrl/cmd + b和%进行垂直分割或"进行水平分割。

参考资料

如何安装tmux

Tmux速查表


谢谢,我知道tmux,但我更喜欢利用内置的vscode功能来保持简单。 - BlueCaret

-1

您可以通过快捷键简单地分割终端:

Ctrl + Shift + 5

注意:已在版本1.36.1或更高版本上进行测试


1
当我运行一个任务时,如何使它自动分割当前终端? - Michael Mrozek

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