tmuxで固まったペインを配置とディレクトリを維持しつつ再起動

tmuxで固まったペインを再起動するためのコマンドと設定を紹介します。
2022.08.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも。CX事業本部Delivery部のえーたん(@eetann092)です。

筆者は今まで、tmuxでたまにペインが固まってしまう時、一度ペインを削除し手動で同じ配置とディレクトリのペインを作成していました。 respawn-paneで同じ操作ができることを最近知ったため、紹介します。

respawn-paneを使ってみる

ペインを配置とディレクトリを維持しつつ再起動するtmuxのコマンドはrespawn-paneです。 man tmuxで調べると以下のようなオプションが分かります。

respawn-pane [-k] [-c start-directory] [-e environment] [-t target-pane] [shell-command]

コマンド実行中にrespawn-paneを使いたい場合は-kオプションを指定する必要があるようです。 今回はディレクトリを維持したいので-cオプションで変数#{pane_current_path}も指定します(変数はman tmuxによるFORMATSの欄でたくさん見ることができます)。

ペインを配置とディレクトリを維持しつつ再起動する手順は以下です。

  1. prefixに割り当てているキー(C-bなど)を入力
  2. :を入力
  3. respawn-pane -k -c '#{pane_current_path}'と入力
  4. Enter

これだと長いので、筆者は.tmux.confに以下のようにキーバインドを設定しました。 prefix + Qで実行できます。

.tmux.conf

bind Q respawn-pane -k -c '#{pane_current_path}'

実行前に確認を入れる

さらに、confirm-beforeを使えばプロンプトで確認メッセージを表示させることができます。筆者の設定は以下です。

.tmux.conf

bind q confirm-before -p "respawn-pane? (y/others)" "respawn-pane -k -c '#{pane_current_path}'"

prefix + qを入力すると、以下のようなtmuxのプロンプトが表示されます。

yを入力したら最後に書いてあるコマンド(今回はrespawn-pane 〜)が実行されます。