因此,当我打开一个新终端(我在 Arch Linux 上使用 terminator)时,我将其配置为tmux
如果不存在会话则打开一个新会话,或者附加到现有会话。当我exit
在提示符下键入时,它会退出 tmux 会话。我必须exit
再次键入才能退出终端。我想要的是,键入exit
一次将退出终端,但保持tmux
运行,因此下次我打开终端时它将重新连接到上一个tmux
会话。本质上,这相当于单击窗口管理器的退出按钮,但我希望在键入时使用此功能exit
。
编辑:
这就像我想要的:
alias exit='if [[ $TMUX = "" ]]; then exit; else tmux detach; exit; fi'
但问题是,应该在包含 tmux 会话的终端中exit
调用tmux detach
,而不是 tmux 会话本身。
答案1
我们必须声明两个函数,一个用于启动 tmux,另一个用于退出 tmux:
function ttmux {
if (pgrep tmux); then
tmux attach
else
tmux
fi
builtin exit
}
如果 tmux 进程存在或不存在,这将执行(tmux attachment 或 tmux),在您使用完 tmux 后,将执行内置 exit 以关闭终端(如果没有嵌套的 shell)。
function exit {
if [ ${TMUX} ]; then
tmux detach
else
builtin exit
fi
}
如果你在 tmux 中,它将分离它,如果没有,它将执行内置退出
将它们放入您的 .bashrc 或 .zshrc 中,并根据需要更改函数名称,然后调用它们。
>> ttmux # to start tmux
>> exit # to detach tmux
答案2
terminator -e tmux
这将启动终止程序并运行 tmux 而不是 shell。如果 tmux 进程退出,终止程序将立即关闭。