答案1
显然有一个针对此的设置。
在你的~/tmux.conf
:
set-option -g detach-on-destroy off
现在,当会话被销毁时,tmux 不会分离(关闭),而是转到任何其他活动会话。
旧答案:
我需要的正是这个,因为我的工作流程包括短暂的tmux
会话,以便在最后被终止的代码项目之间跳转。
由于我找不到任何东西,所以我编写了一个脚本,在终止当前会话之前切换到第一个其他活动会话,并将其绑定到Leader X以便快速访问。
~/.scripts/tmux-kill-session.sh
:
#!/usr/bin/env bash
tmux_running=$(pgrep tmux)
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
exit 0
fi
session_to_kill="$(tmux list-sessions | sed -n '/(attached)/s/:.*//p')"
session_to_switch="$(tmux list-sessions | sed -n '/(attached)/!s/:.*//p' | head -n 1)"
if [[ ! -z $session_to_switch ]]; then
tmux switch-client -t $session_to_switch
fi
tmux kill-session -t $session_to_kill
~/.tmux.conf
:
bind X run-shell "~/.scripts/tmux-kill-session.sh"
答案2
您可以直接在 tmux 中终止会话。假设您有两个会话:会话 1 和会话 2。您当前处于会话 1 中。
当仍在会话 1 中时,使用此功能可终止会话 2。
tmux kill-session -t session2
您应该仍处于 session1 中。并且您应该不再在会话列表中看到 session2。