経緯
Windows上のターミナルエミュレータで作業をしていると、やはり画面を分割したくなることがあります。
ただそのときに画面を分割する程度でマウスに手を伸ばしたくはないし、Ctrl と何かの同時押しというショートカットはエディタでほぼ使用済み、AltやWinキーは押しづらいので嫌だ…
ということで tmux のように prefix キーを押してから何か押すタイプの設定ができないか色々探していました。
色々探した結果、WezTermなら実現できたのでメモを残しておきます。
設定方法
設定ファイルに以下ように Leader キーと Leader キーを使用するショートカットを書けばできます。
local wezterm = require('wezterm')
return {
-- 省略
leader = { key = 'b', mods = 'CTRL', timeout_milliseconds = 1000 },
keys = {
{
key = '%',
mods = 'LEADER|SHIFT',
action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' },
},
{
key = '"',
mods = 'LEADER|SHIFT',
action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' },
},
}
上の例は、ほぼそのままWezTerm公式のドキュメントにも記載されています。
tmux における prefix キーは、WezTerm では Leader キーと呼ぶようで、その用語の違いのせいもあってかこのページにたどり着くのに結構かかってしまいました。
余談
ちなみに、試したり調べてみてダメだったのは下記の通りです。
- Windows Terminal: 画面分割はできるが
<prefix>→〇
というショートカットは設定できない。さらに最近 IME 関連でよくクラッシュして辛い。 - WSL + tmux: 他諸般の事情により WSL は却下。
- Alacritty: 画面分割する機能がない。
- zellij: Windowsをサポートしていない。Issueは存在していてるものの難度が高いようであまり進んでいない。(自分でもちょっと試してみたけど辛そうだった)