当我退出 tmux 会话中的最后一个终端时,它会自动关闭 tmux 并将我返回到父终端。是否可以让 tmux 切换到另一个已经在运行的会话而不是关闭?
我为我处理的每个任务创建一个新的命名会话,例如 TRxxx、电子邮件、scratch 等,当我完成其中一个任务时,我通过在每个任务中运行 exit 来关闭所有终端。当您在会话的最后一个终端中运行 exit 时,tmux 会将您返回到父终端,但是否有可能让它切换到其他打开的会话之一,这样我就不必重新连接?
这个问题类似于“终止一个 tmux 会话并选择另一个 tmux 会话”,但我想通过使用退出而不是终止窗口来关闭我的终端。
小智 38
我将此添加到我的~/.tmux.conf:
set-option -g detach-on-destroy off
Run Code Online (Sandbox Code Playgroud)
当我销毁会话中的最后一个 shell 时,它会切换到另一个活动会话。关闭所有会话后,tmux退出。
我得到的最接近的是我编写的 tmux 函数。Ctrl我通常通过点击+退出 shell 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; \
"
Run Code Online (Sandbox Code Playgroud)
当(且仅当)当前会话仅拥有一个未运行任何其他命令的 shell 时,按[PREFIX] Ctrl+即可退出当前会话。D如果可能的话,它将切换到另一个会话。我使用 bash shell,因此您可能需要将其更改为您正在使用的外壳。
ps:以防万一,我目前正在使用 tmux 1.9a。