Windows终端:打开多个窗格并执行指定的命令

Windows terminal: open multiple panes and execute specified command

我最近下载了新的 Windows Terminal。我已经创建了打开多个窗格的快捷方式(工作正常)。但是,我正在尝试为相应的窗格执行命令。

wt -d <path> -c "cls && php artisan serve" ; 
   split-pane -p "Command Prompt" -H -d <path> -c "npm run watch"

我在谷歌上搜索了解决方案,但一无所获。

这可能吗..?

简短的回答是:是的,这是可能的,但这是一种解决方法。

挑战

  1. wt.exe 目前没有命令行选项来执行 来自 split-pane
  2. 的命令
  3. wsl.exe(运行是你默认的shell比如bash)目前不支持用命令打开shell而不退出shell 命令紧跟在 运行.
  4. 之后

解决方法

为了解决第一个挑战,我们可以启动一个自定义配置文件,该配置文件通过键值对中的 wsl.exe 执行命令(在设置 json 中)"commandline": "wsl.exe 'commands go here"

为了绕过第二个挑战,我们需要通过 powershell.exe 执行 wsl.exe 'commands go here',因为 Powershell 有一个 -NoExit 选项,它将保留 shell 命令执行后打开。因此,例如,如果您想使用命令 watch ps 打开 shell that 运行s wsl.exe(您的 linux shell),则该行在自定义配置文件中将如下所示:

"commandline": "powershell.exe -NoExit -Command wsl.exe watch ps"

解决方法:

在 Windows 终端 settings.json 中为您要 运行 的每个命令创建配置文件。每个配置文件都应该有一个唯一的 guid,您可以通过 运行 命令 [guid]::NewGuid() 在 Powershell 中生成它。因此 运行 命令 watch ps 的配置文件看起来像这样:

            {
                "guid": "{b7041a85-5613-43c0-be35-92d19002404f}",
                "name": "watch_ps",
                "commandline": "powershell.exe -NoExit -Command wsl.exe watch ps",
                "hidden": false,
                "colorScheme": "One Half Dark"
            },

现在您可以在 windows 终端中打开带有两个窗格的选项卡,右侧的窗格将 运行 命令 watch ps 而 shell 将保持打开状态.在您的快捷方式(或从命令行)中放置类似下面的代码行,其中选项 -p 的值等于您创建的配置文件的值。您打开的每个附加窗格都需要一个配置文件,其中包含您想要 运行 的命令。

wt split-pane -p "watch_ps"

我有一个类似的设置。 Im 运行 Windows 终端版本 1.8.1444.0

我的目标是在左窗格中设置一个 dotnet 核心应用程序 运行 并在右窗格中设置一个反应应用程序 运行:

wt -d "C:\path\to\dotnetcoreapp" -p "Command Promt" cmd /k dotnet watch run ; split-pane -d "C:\path\to\reactapp" cmd /k yarn start

还尝试启动交互式长生不老药会话:wt -d "C:\dev\elixir" cmd /k IEx 也运行良好...