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

17

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

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

我在谷歌搜索解决方案,但没有运气。

这个有可能吗..?


这里有一些有趣的想法:https://github.com/microsoft/terminal/issues/5528。 - tkit
2个回答

12

我成功设置了类似的环境。 我正在运行Windows Terminal 1.8.1444.0版本。

我的目的是在左侧窗格中运行dotnet core应用程序,在右侧窗格中运行React应用程序:

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

还尝试启动交互式Elixir会话:wt -d "C:\dev\elixir" cmd /k IEx,也顺利运行...


8
简短回答是:是的,但这是一个解决方法。 挑战:
  1. wt.exe目前没有命令行选项可以从split-pane执行命令。
  2. wsl.exe(运行默认shell如bash)目前不支持打开带有命令且在命令运行后不退出shell的shell。
解决方法: 为了解决第一个挑战,我们可以启动一个自定义配置文件,通过wsl.exe在设置json中的键值对("commandline": "wsl.exe 'commands go here")来执行命令。
为了解决第二个挑战,我们需要通过powershell.exe执行wsl.exe 'commands go here',因为Powershell具有-NoExit选项,可以在命令执行后保持shell打开。例如,如果您想要打开一个运行wsl.exe(Linux shell)并运行watch ps命令的shell,则自定义配置文件中的一行将如下所示: "commandline": "powershell.exe -NoExit -Command wsl.exe watch ps" 解决方案: 为每个要运行的命令在Windows Terminal 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"


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