
Windows Terminalで作業していると、1つのプロジェクトに対して複数のターミナルを並べて使いたくなることがあります。
私の場合は、Ubuntu環境では tmux を使って「左上にNeovim、左下に通常ターミナル、右側にGemini CLI」という3ペイン構成を使っています。
同じような構成をWindows TerminalとPowerShellでも実現したくなりました。
この記事では、Windows Terminalのショートカットキーから、次の3ペイン構成を一発で起動する方法をまとめます。
- 左上:
edit . - 左下:通常のPowerShell
- 右側:
gemini
ポイントは、単にペインを分割するだけでなく、「ショートカットキーを押した時点のカレントディレクトリ」を3つのペインすべてに引き継ぐことです。
この記事で行うこと
Windows Terminalの settings.json にアクションを追加し、Ctrl + Shift + L を押すだけで開発用レイアウトを作成できるようにします。
完成形は次のような構成です。

左上: edit .
左下: PowerShell
右側: gemini
たとえば、PowerShellで次のディレクトリにいる状態でショートカットキーを押した場合、
PS C:\share>
3つのペインすべてが C:\share> を初期ディレクトリとして起動します。
前提
この記事では、次の環境を前提にしています。
この記事では、gemini や edit のインストール手順そのものは扱いません。
edit コマンドについては、以下の記事にまとめています。

gemini コマンドを含む開発環境の初期設定については、以下の記事も参考にしてください。

なぜ普通のsplitPaneだけではうまくいかないのか
Windows Terminalには、ペインを分割するための splitPane アクションがあります。
単純にペインを分割するだけなら、Windows Terminalの設定画面からでも簡単にできます。
しかし、今回やりたいことは少し複雑です。
最初は splitPane の splitMode: "duplicate" を使えばよさそうに見えます。
ただ、実際に試すと、新しく作成されたペインが期待したディレクトリではなく、ユーザーのホームディレクトリで起動することがありました。
つまり、次のような状態です。
そこで、Windows Terminalにカレントディレクトリの複製を任せるのではなく、PowerShell側で現在のディレクトリを取得し、その値を wt コマンドの -d オプションに明示的に渡す方法にしました。
解決策
今回のポイントは、次の1行です。
$d=(Get-Location).ProviderPath
Get-Location は、現在のPowerShellのカレントディレクトリを取得するコマンドです。
.ProviderPath を使うことで、C:\share> のようなWindowsの通常パスとして取得できます。
このパスを $d に入れておき、Windows Terminalの wt コマンドで新しいペインを作るときに、次のように渡します。
wt -w 0 sp -V -d "$d"
-d "$d" を付けることで、新しいペインの開始ディレクトリを明示できます。
settings.jsonに追加する内容
Windows Terminalの設定画面を開き、「JSONファイルを開く」から settings.json を編集します。
まずは、次のアクションを追加します。
{
"name": "Create development panes",
"keys": "ctrl+shift+l",
"command": {
"action": "sendInput",
"input": "$d=(Get-Location).ProviderPath; wt -w 0 sp -V -d \"$d\" pwsh.exe -NoExit -Command gemini `; mf left `; sp -H -d \"$d\" pwsh.exe `; mf up; edit .\r"
}
}
Windows Terminalのバージョンによっては、保存後に keys の設定が actions から keybindings 側へ自動的に分離されます。
私の環境では、最終的に次のような形になりました。
{
"actions": [
{
"command": {
"action": "sendInput",
"input": "$d=(Get-Location).ProviderPath; wt -w 0 sp -V -d \"$d\" pwsh.exe -NoExit -Command gemini `; mf left `; sp -H -d \"$d\" pwsh.exe `; mf up; edit .\r"
},
"id": "User.sendInput.81E74E00",
"name": "Create development panes"
}
],
"keybindings": [
{
"id": "User.sendInput.81E74E00",
"keys": "ctrl+shift+l"
}
]
}
id の値は環境によって変わることがあります。
既存の settings.json に追加する場合は、すでにある actions や keybindings の配列の中に追加してください。
コマンドの中身を分解する
設定している input は長いですが、やっていることは順番に見るとシンプルです。
$d=(Get-Location).ProviderPath;
wt -w 0 sp -V -d "$d" pwsh.exe -NoExit -Command gemini `;
mf left `;
sp -H -d "$d" pwsh.exe `;
mf up;
edit .
1. 現在のディレクトリを変数に入れる
$d=(Get-Location).ProviderPath
ショートカットキーを押した時点のカレントディレクトリを $d に保存します。
この値を後続のペイン作成時に使います。
2. 右側にGemini用ペインを作る
wt -w 0 sp -V -d "$d" pwsh.exe -NoExit -Command gemini
wt -w 0 は、現在のWindows Terminalウィンドウを対象にする指定です。
sp は split-pane の省略形です。
-V は左右方向の分割です。これで右側に新しいペインを作ります。
-d "$d" によって、右側のペインも現在のディレクトリで起動します。
最後に pwsh.exe -NoExit -Command gemini を指定しているため、右側のPowerShellで gemini が起動します。
3. フォーカスを左に戻す
mf left
mf は move-focus の省略形です。
右側のペインを作った直後は、フォーカスが右側に移ります。
次に左側を上下に分割したいため、いったんフォーカスを左に戻します。
4. 左側を上下に分割する
sp -H -d "$d" pwsh.exe
-H で上下方向に分割します。
これで左側が上下2つに分かれます。
このときも -d "$d" を付けているため、左下のPowerShellも現在のディレクトリで起動します。
ここでは特にコマンドを指定していないため、左下は通常のPowerShellとして残ります。
5. 左上に戻ってeditを起動する
mf up
edit .
左側を上下分割した直後は、フォーカスが左下にあります。
そこで mf up で左上に戻り、最後に edit . を実行します。
これで左上に edit、左下に通常のPowerShell、右側にGemini CLIという構成になります。
設定後の使い方
設定を保存したら、Windows Terminalを開き直します。
任意の作業ディレクトリに移動します。
cd C:\share>
その状態で、次のショートカットキーを押します。
Ctrl + Shift + L
すると、現在のディレクトリを引き継いだ状態で、3つのペインが作成されます。
うまく動かない場合
geminiが起動しない
まず、通常のPowerShellで gemini コマンドが実行できるか確認してください。
gemini
コマンドが見つからない場合は、Gemini CLIのインストールやPATH設定を確認します。
editが起動しない
同じく、通常のPowerShellで次のコマンドが実行できるか確認します。
edit .
edit が起動しない場合は、使用しているエディタの起動コマンドに合わせて、記事内の edit . の部分を変更してください。
たとえばVisual Studio Codeを使う場合は、次のように変更できます。
code .
新しいペインがホームディレクトリで開いてしまう
この場合は、-d "$d" が正しく入っているか確認してください。
今回の設定では、splitMode: "duplicate" ではなく、PowerShellで取得した現在のディレクトリを wt コマンドに明示的に渡しています。
そのため、重要なのは次の2点です。
Ctrl + Shift + Lが反応しない
Windows Terminalの設定画面で、ショートカットキーが別のアクションと競合していないか確認してください。
また、settings.json を保存したあとに、Windows Terminalを再起動すると反映されやすくなります。
注意点
この設定は、現在開いているPowerShellペインにコマンドを入力する sendInput アクションを使っています。
そのため、未入力のコマンドがある状態でショートカットキーを押すと、その行に続けて文字列が入力される可能性があります。
実行する前に、PowerShellのプロンプトが空の状態であることを確認してください。
また、既にペインを分割している状態で実行すると、さらにペインが追加されます。
基本的には、新しいタブ、またはまだ分割していないPowerShellペインで実行するのがおすすめです。
まとめ
Windows Terminalでも、tmuxのように開発用の3ペイン構成をショートカットキー一発で作成できます。
今回のポイントは、Windows Terminalの splitPane だけに任せるのではなく、PowerShellで現在のディレクトリを取得して wt -d に渡すことです。
$d=(Get-Location).ProviderPath
この一手間を入れることで、左上の edit、左下のPowerShell、右側のGemini CLIを、すべて同じカレントディレクトリで起動できます。
Windows環境でもAIコーディング用の作業スペースを素早く作りたい場合に、かなり便利な設定です。

