11

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

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

我搜索了解决方案,但没有运气。

这甚至可能..?

4

2 回答 2

7

我有一个类似的设置工作。我正在运行 Windows 终端版本 1.8.1444.0

我的目标是设置在左窗格中运行的 dotnet 核心应用程序和在右窗格中运行的 react-app:

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这也很好用......

于 2021-06-03T15:51:08.240 回答
6

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

挑战

  1. wt.exe当前没有命令行选项来执行来自split-pane
  2. wsl.exe(运行您的默认 shell,例如 bash)目前不支持在命令运行后不立即退出 shell 的情况下使用命令打开 shell。

解决方法

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

为了解决第二个挑战,我们需要执行wsl.exe 'commands go here'via,powershell.exe因为 Powershell 有一个-NoExit选项可以在命令执行后保持 shell 打开。因此,例如,如果您想使用命令打开一个运行的 shell wsl.exe(您的 linux shell),watch ps那么自定义配置文件中的行将如下所示:

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

解决方案:

settings.json在 Windows 终端中为要运行的每个命令创建一个配置文件。每个配置文件都应该具有唯一guid性,您可以通过运行命令在 Powershell 中生成该配置文件[guid]::NewGuid()。所以运行命令的配置文件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"

于 2020-06-19T18:20:55.213 回答