Tmux oturumundaki son terminalden çıkarken diğerine geçebilir mi?


12

Bir tmux oturumundaki son terminalden çıktığımda otomatik olarak tmux'u kapatır ve beni ana terminale döndürür. Bunun yerine tmux'u kapatmak yerine zaten çalışmakta olan başka bir oturuma geçirmek mümkün müdür?

Çalıştığım her görev için TRxxx, e-posta, çizik vb.Gibi yeni bir oturum oluşturuyorum ve bunlardan biriyle işim bittiğinde her birinde çıkış çalıştırarak tüm terminalleri kapatıyorum. Bir oturumun son terminalinde exit komutunu çalıştırdığınızda tmux sizi ana terminale geri döndürecektir, ancak bunun yerine diğer açık oturumlardan birine geçmek mümkün mü?

Bu soru benzer " tmux oturumu öldürmek ve başka bir tmux oturumu seçin " ama ben pencereleri öldürmek yerine çıkış kullanarak terminallerimi güzel bir şekilde kapatmak istiyorum.

Yanıtlar:


2

En yakın yazdığım bir tmux işleviydi. Normalde Ctrl+ tuşlarına basarak kabuktan çıkarım D, bu yüzden + tuşlarına tmuxbasarken oturumlardan çıkıp geçiş yapmayı programladım . Şunlara aşağıdakileri ekleyin :[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;                                                     \
    "

Hit [PREFIX] Ctrl+ Dve herhangi başka bir komutlar çalışmıyor tek kabuk tutan (ve ancak) eğer geçerli oturumu çıkar. Mümkünse başka bir oturuma geçecektir. Ben bash kabuğunu kullanıyorum, bu yüzden onu kullandığınız bir şeyle değiştirmeniz gerekebilir.

ps: önemli olması durumunda, şu anda tmux 1.9a kullanıyorum.


29

Bunu ekledim ~/.tmux.conf:

set-option -g detach-on-destroy off

Bir oturumdaki son kabuğu yok ettiğimde, başka bir etkin oturuma geçer. Tüm oturumlar kapatıldıktan sonra tmuxçıkar.


4
doğru cevap bu güncellenmelidir
cviejo

Lütfen sorunun posterini dilekçe verin.
RichN

Tmux'un mevcut oturumları silerken ve yeniden bağlarken bu ayarı güncellemediğini unutmamak önemlidir. Etkisinin olması için tmux sunucusunu yeniden başlatmanız gerekir.
nyi

2

Bu satırları adresinize ekleyin .bashrcve deneyin:

if which tmux 2>&1 >/dev/null 
then
    # start a new session if not exist
    test -z ${TMUX} && tmux

    # when quitting tmux, try to attach to other session
    while test -z ${TMUX}; do
        tmux attach || break
    done
fi

1
Neredeyse istediğim şey bu, ancak sadece tmux içinden çıktığımda çalışacak şekilde değiştirmek mümkün mü? Yeni bir terminal açtığımda bu komut dosyası varolan tmux oturumlarına eklenecek. Yerel şeyler için bir tmux oturumu yapmaya çalışın ve sonra ssh: ing yeni bir terminal açtığınızda başka bir makineye nerede iç içe geçmesini önlemek için ayrı bir tmux oturumu olacak.
David Holm

Hayır, bu komut dosyası, yeni bir terminal açtığınızda var olana eklemediğinizde yeni tmux oturumu başlatır. Daha fazla bilgi verebilir misiniz, "inside tmux" ne demek?
cuonglm

1
Diyelim ki Y ve sadece bir terminalin açık olduğu X ve Y oturumlarım var. Y'nin son terminalinde oturumun sonlanmasına neden olacak şekilde 'exit' komutunu çalıştırıyorum. Bu durumda, tmux'un sonlandırma yerine X oturumuna geçmesini istiyorum. Ancak yeni bir terminal başlattığımda bir tmux oturumunun eklenmesini / oluşturulmasını istemiyorum.
David Holm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.