旧答案:

旧答案:

我在 tmux 中有几个会话

在此处输入图片描述

如何在不退出 tmux 的情况下关闭/杀死其中一些?

如果我输入,exit我不仅会关闭会话,而且还会退出 tmux,这是不适用的。

答案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。

相关内容