tmux セッションの最後の端末を終了すると、自動的に tmux が閉じ、親端末に戻ります。閉じるのではなく、tmuxをすでに実行している他のセッションに切り替えることはできますか?
TRxxx、Eメール、スクラッチなど、私が作業しているすべてのタスクに対して新しい名前付きセッションを作成してタスクの1つを完了したら、各端末でシャットダウンを実行してすべての端末を閉じます。セッションの最後の端末でシャットダウンを実行すると、tmuxが親端末に戻りますが、再接続する必要がないように、開いている他のセッションの1つに切り替えることができますか?
この質問は「と似ています。ある tmux セッションを終了し、別の tmux セッションを選択します。「しかし、ウィンドウを閉じるのではなく、シャットダウンを使ってターミナルを素敵に閉じたいのです。
答え1
私はこれを私のものに追加しました~/.tmux.conf
:
set-option -g detach-on-destroy off
セッションの最後のシェルを削除すると、別のアクティブセッションに切り替えられます。すべてのセッションが終了したらtmux
終了します。
答え2
私が得た最も近いのは、私が書いたtmux関数でした。私は通常Ctrl+をクリックしてシェルを終了するので、+をクリックするとセッションを終了して切り替えるようにDプログラムしました。tmux
以下を入力してください。[PREFIX]
CtrlD.tmux.conf
bind C-d run-shell " \
if [ #{session_windows} -eq 1 ] && \
[ #{window_panes} -eq 1 ] && \
[ #{pane_current_command} = 'bash' ]; then \
if [ \$(tmux list-sessions | wc -l) -ge 2 ]; then \
tmux switch-client -ln; \
fi; tmux kill-session -t \"#S\"; \
else \
tmux display-message \"Ignoring kill session...\"; \
fi; \
"
現在のセッションに他のコマンドを実行しないシェルのみがある場合は、[PREFIX]
Ctrl+を押して現在のセッションを終了します。D可能であれば、別のセッションに切り替えます。私はbashシェルを使用しているので、それを使用しているシェルに変更する必要があるかもしれません。
ps:もし備えて、私は現在tmux 1.9aを使っています。
答え3
次の行を追加して.bashrc
みてください。
if which tmux 2>&1 >/dev/null
then
# start a new session if not exist
test -z ${TMUX} && tmux
# when quitting tmux, try to attach to other session
while test -z ${TMUX}; do
tmux attach || break
done
fi