Küçük monitörü daha büyük monitöre geçirirken tmux penceresini yeniden çizmenin bir yolu var mı?


399

Diyelim ki Terminal.app ile uzak bir sunucuya ssh üzerinden bağlanıyorsunuz. Daha önce tmux'u başlattığınız daha küçük monitörden daha büyük çözünürlüklü monitörle "tmux eklediğinizde", konsolun etrafına noktalar çizer. Yeni pencere boyutuna uymuyor. Pencereyi yeniden çizmenin ve temizlemenin bir yolu var mı? CTRL+ Lveya CTRL- B+ Ryardımcı olmuyor. İnsana uygun bir emir bulamadım.

% tmux -V
tmux 1.5

7
Hiçbirini ayırmadan tüm oturumları nasıl yeniden çizeceğinizi bilmek istiyorum.
PJ Brunet

3
herkes sadece ayrılıyor ... bir yolunu buldun mu?
Patoshi シ ト シ


evet, hala şu sorunun cevabını bilmek isterim: "Pencereyi yeniden çizmenin ve temizlemenin bir yolu var mı?"
jaydel

Yanıtlar:


579

tmux , bir pencerenin boyutlarını, pencerenin bağlı olduğu tüm oturumlarda her bir boyuttan en küçüğü ile sınırlar. Bunu yapmazsa, tüm bağlı istemciler için tüm pencere alanını görüntülemenin mantıklı bir yolu olmazdı.

Yapılacak en kolay şey, eklediğinizde diğer istemcileri oturumlardan ayırmaktır:

tmux attach -d

Alternatif olarak, oturuma bağlamadan önce diğer istemcileri farklı bir oturuma taşıyabilirsiniz:

takeover() {
    # create a temporary session that displays the "how to go back" message
    tmp='takeover temp session'
    if ! tmux has-session -t "$tmp"; then
        tmux new-session -d -s "$tmp"
        tmux set-option -t "$tmp" set-remain-on-exit on
        tmux new-window -kt "$tmp":0 \
            'echo "Use Prefix + L (i.e. ^B L) to return to session."'
    fi

    # switch any clients attached to the target session to the temp session
    session="$1"
    for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
        tmux switch-client -c "$client" -t "$tmp"
    done

    # attach to the target session
    tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions

Daha küçük bir istemci oturuma geçerse ekran tekrar küçülür.

Ayrıca, pencereyi yalnızca "devraldığınız" bir varyasyon vardır (pencereyi yeni bir oturuma bağlayın, aggressive-resizebu pencerenin etkin olduğu diğer oturumları ayarlayın ve diğer pencereye geçirin ), ancak genel olarak komut dosyası oluşturmak daha zordur case (ve pencereden bağlantısını kaldırmak veya oturumu kapatmak yerine oturumu öldürmek istediğinizden "çıkmak" için farklıdır).


Geçerli oturumu şu şekilde alabileceğinizi unutmayın $(tmux display-message -p '#S'): bkz . Superuser.com/questions/410017/… .
GManNickG

3
Bu cevap, ayrıntı ve bilgi tabanı için sahne alır. Ancak Shi B.'nin Ctrl-b + Dkullanım kolaylığı (ve hatırlama) cevabına bakın.
fbicknel

"tmux detach -a" benim için çalıştı; "tmux attach -d" olmadı.
mahemoff

(1) yeni tmux hataları set-option... set-remain-on-exit on. Bkz. Tmux # 787 . Şimdi, kullanın: tmux set-hook -t "$tmp" window-linked 'set remain-on-exit on.
user1902689

1
(2) daha yeni tmux'da, new-windowbenzer bir şeyin son argümanını kullanmak zorundasınız 'echo "Use Prefix + L (i.e. ^B L) to return to session.'; while(true); do read; done"yoksa mesajı görmeyeceksiniz. (Bazı durumlarda, yukarı kaydırırsanız veya terminal daha uzunsa görürsünüz.) Bunu kullanırsanız, yorumum "(1)" veya herhangi bir ayar yapmadan muhtemelen daha iyi durumda olursunuz remain-on-exit.
user1902689

462

Oturumdan ayırmak istediğiniz istemciyi seçmek için her zaman CTRL- B+ SHIFT- tuşuna basabilirsiniz D.

tmux tüm oturumları geçerli boyutlarıyla listeler. Sonra sadece daha küçük boyutlu oturumlardan ayırın.


6
Açıklama. Başkent D'dir. Küçük 'd' müşteriyi ayırır.
Raghuram Murthy P

2
CTRL-Bön ekiniz buysa. CTRL-AEkrandan geçiş yaptığımdan beri benimki oldu .
Blaskovicz

1
Aslında, aynı oturum grubundaki daha küçük boyutlu oturumlardan ayırmanız gerekir. Ancak CTRL-B + ÜST KARAKTER-D, her oturumun hangi gruba ait olduğunu göstermez. tmux list-sessionsOturum adını, boyutunu ve grup bilgilerini gösteren çalışmayı, ardından tmux kill-session -t <session_name>aynı grubun oturumlarını öldürmeyi tercih ederim .
Zhichang Yu

180

Artık tmux'un (1.9'da test edilmiş) son sürümlerinde daha basit bir çözüm yapabilirsiniz:

tmux detach -a

-a geçerli oturum dışında bu oturumdaki diğer tüm istemciler içindir

[Bash | zsh] rc cihazınızda diğer adınızı kullanabilirsiniz.

alias takeover="tmux detach -a"

İş akışı: Oturumunuza normal olarak bağlanabilirsiniz ve tmux pencere boyutunuzu zorlayan başka bir oturumdan rahatsız olursanız, kolayca arayabilirsiniz takeover.


13
Çok teşekkürler! çalıştı. Etkin bir tmux oturumunda yapıyorsanız, CTRL + B'ye (veya özel tmux komutunuzdan hangisine olursa olsun) basın:detach -a
47'de Iacchus

Ya da sadece tmux detach -aTmux içindeki kabuk komut satırında yürütün.
jdhao

4

Diğer cevaplar bana sadece müşteri bağlı olduğu için yardımcı olmadı (oturumu başlatan önceki yanıt zaten ayrılmıştı).

Düzeltmek için burada cevabı takip ettim (xterm kullanmıyordum).

Hangi basitçe dedi:

  1. Tmux oturumundan ayır
  2. resizeLinux komutunu çalıştır
  3. Tmux oturumuna yeniden bağla

3

Sadece bu problemle karşılaştım ve farklı bir durumla karşılaştım. Muhtemelen sadece bir tek boynuzlu at olmasına rağmen, ben hallederim diye düşündüm.

Daha küçük bir oturumum vardı ve yazı tipi boyutlarının farklı olduğunu fark ettim: küçük oturum daha küçük yazı tiplerine sahipti. Görünüşe göre, bir sebepten dolayı pencere yazı tipi boyutlarını değiştirmiştim.

OS X'te, Cmd-+daha küçük boyutlu oturumda yaptım ve yerine oturdu.


MacOS terminalinde tmux durum çubuğunun bu garip yerleşimi düzeltildi. Terminal sekmeleri açık olduğunda, tmux durum çubuğu konumunu bozar. Zoom ile oynatmak cmd-+veya -düzeltir.
Paul

0
ps ax | grep tmux
17685 pts/22   S+     0:00 tmux a -t 13g2
17920 pts/11   S+     0:00 tmux a -t 13g2
18065 pts/19   S+     0:00 grep tmux

diğerini öldür.


8
Daha iyi cevaplar olmasına rağmen, başlık sorusuna geçerli bir cevap gibi görünüyor. Neden unutulmaya indirgendiğini anlamıyorum.
JoL

yessss, bu benim için çalışan tek cevap
Yasir Hantoush


0

Ben her bölme için flaş numarası yapar Ctrl- b+ qyolda kullanın, onları yolda yeniden çizerek.

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.