我最近下载了新的Windows Terminal
. 我已经创建了打开多个窗格的快捷方式(工作正常)。但是,我正在尝试为相应的窗格执行命令。
wt -d <path> -c "cls && php artisan serve" ;
split-pane -p "Command Prompt" -H -d <path> -c "npm run watch"
我搜索了解决方案,但没有运气。
这甚至可能..?
我最近下载了新的Windows Terminal
. 我已经创建了打开多个窗格的快捷方式(工作正常)。但是,我正在尝试为相应的窗格执行命令。
wt -d <path> -c "cls && php artisan serve" ;
split-pane -p "Command Prompt" -H -d <path> -c "npm run watch"
我搜索了解决方案,但没有运气。
这甚至可能..?
我有一个类似的设置工作。我正在运行 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
这也很好用......
简短的回答是:是的,这是可能的,但这是一种解决方法。
挑战
wt.exe
当前没有命令行选项来执行来自split-pane
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"