在我的 中.zshrc
,我有一些逻辑会自动启动 tmux 会话,或者如果会话已经在运行,则提示附加到其中一个会话或创建一个新会话并附加到该会话。这一切都很好,但我有一个似乎无法正确实现的新要求:当新会话启动并且特定进程未运行时,启动该进程并创建一个新窗口;如果该进程正在某处运行,则只需正常启动一个新会话即可。
在这种情况下,我想irssi
自动启动一会议。以下内容($choice
根据上面概述的选择过程)是我最接近让它发挥作用的:
exec tmux -2 new-session -A -s $choice $(pgrep irssi || echo "irssi; new-window")
当我只有一个会话时(这是大多数时间),这非常有效,但如果我尝试创建一个新会话,那么它会立即分离。
如果我将以上分解为条件:
if pgrep irssi; then
exec tmux -2 new-session -A -s $choice
else
exec tmux -2 new-session -A -s $choice "irssi; new-window"
# splitting out `tmux new-window` also doesn't work
fi
...我有相反的问题,现在辅助(非 irssi)会话启动正常,不会立即分离,但 irssi 会话仅获得 irssi 窗口,并且不会出现新的 shell 窗口。 (这可以说比第一个版本更接近我想要的,但因为我几乎总是只有一个会话,所以获胜,因为这个版本迫使我Prefix-c
在新窗口中执行此操作。)