tmux durum çubuğu bir ikili dosya seçildikten sonra bozuk, nasıl sıfırlanır?


94

Yanlışlıkla catbir ikili dosya yaptıktan sonra tmux terminalimi bozdum . Şimdi benim tmuxberbat. Ayırma ve yeniden takma işleminin bir faydası yoktur, ne de yeniden çizim yapmaz (Cb r). Koşu reset, kalanları değil yalnızca aktif bölmeyi yeniden çizer. ssty saneİçeride veya dışarıda koşmak da tmuxyardımcı olmuyor.

tmux berbat

Her bölmede, yazdıklarımdan normal bir geri bildirim aldım ( resetterminal bozulduktan hemen sonra yapılan ilk çağrı bunu çözdü), ancak durum çubuğunu düzeltemiyorum.

In gnome-terminal, durum-bara her güncelleme (yukarıdaki resme bakınız) büyümeye durum çubuğunda yol açar. Örneğin, bu, yeni bir uygulama çalıştırdığımda, panel değiştirdiğimde veya bir bölmeyi yeniden boyutlandırdığımda oluyor. (By bir yeniden düzenleme zorlamak C-b rçalıştırarak, resetgnome-terminal menü veya ile) geri tek hattına durum çubuğu küçülür, ancak bozuk kalır.

İçinde xterm, durum çubuğu bir satırda kalır, ancak resimde gösterildiği gibi bozuk kalır.

Tmux 1.5 kullanıyorum.

  • tmux-Terminalimi nasıl düzeltirim ?

2008’deki bu hata raporunda aynı sorunu açıklıyor gibi görünüyor, ancak sabit olarak işaretlendi. Hangi sürümde düzeltildiğini bilmiyorum ama tmux 1.5, 2008’den bir düzeltme içermeli.


Sadece bu problemi yaşadım ve “net” benim için çalıştı.
user149818

1
Birinin aynı problemle karşılaşması durumunda, yukarıdakilerin hepsini yaptıktan sonra, smokin durum çubuğum hala karışıktı. Pencere seçeneği durum-sağ ayarlama onu tamir etti.

2
Yukarıdaki öneri de benim için düzeltti. Bunu yapmak için komut: Control+ b+ :ve sonra set -g status-right "#H"ana bilgisayar adına durum hakkı ayarlamak için.
Mayank,

Yanıtlar:


85

Pencere 4'ü yeniden adlandırmayı deneyin

  • Pencere 4'e geç: Control+b 4
  • Pencereyi yeniden adlandır: Control+ b , Control+ umyNewname

(Bu ortada virgül)

Veya: Control+b :rename-window myNewname


1
Pencereyi yeniden adlandırmak cazibeye benziyor
exhuma

4
Yenisini yazmadan önce adı silmeniz gerekir. En kolay yol ctrl+u, yani tam dizilimdirctrl+b , ctrl+u newname
z0r

1
Sweet - bu da işe yarıyor byobu( f8, <newname>)
ali_m

Neden Control-ugerekli? Control-,zaten doğru adı mı değiştiriyor? Benim durumumda gerekli olduğunu doğrulayabilsem de, bir tür sıfırlama karakteri var mı?
hbogert

1
Control-u çizgiyi temizler. Her bir faturanızı bir terminalde şifreleyip bildiğiniz takdirde, girişi 20 kez geri almak yerine control-u kullanarak silebilirsiniz
Rqomey

55

Ortalığı temizlemek için iki komut dizisine ihtiyacınız var:

İlk önce, bunu bozuk pencerede çalıştırın (bu, bulunduğunuz zaman bile çalışır ssh):

stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh

Sonra çalışan bilgisayarda tmux(içinde ve dışında çalışır tmux) çalıştırın:

Aşağıdaki komut tmux, geçerli pencereden daha solunun durumunu değiştirebilecek tüm örnekleri etkiler . Bu özelliğe ihtiyacınız yoksa, uzak bırakın.

tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done

Ayrıntılı olarak açıklanmıştır

Bu, diğer cevaplarda ve yorumlarda bulunan tüm parçaları ele almak için toplandı. Şu anda ikinci komutla yalnızca küçük bir bit kaldı. (Aşağıdaki "eksik bit" konusuna bakın).

Bunun nasıl çalıştığını anlamak için, önce durum çizgisini tmuxve onun sonunu keselim tty. Daha sonra, daima mevcut olması gereken bir yöntem kullanarak (komutun aksine reset) tekrar düzeltiyoruz .

Bir tmuxterminal nasıl UTF-8kullanılmaz hale getirilir (varsayılır )

stty -echo; printf '\016\033k%2000s\\\033\033]2;\355\007' $'\302\217'

Uyarı: Yukarıdaki komutu çalıştırdıktan sonra, kabuk kör ve sağır görünüyor ve sadece bilinmeyen yabancı bir dilde saçma konuşuyor gibi görünüyor. Bunun nasıl onarılacağı hakkında aşağıya bakın.

Açıklaması:

  • stty -echo terminal tipi cevabını öldürür

  • printf '\016'a SOise, alternatif karakter setindesiniz

  • printf '\033]2;%s\007' 'right status text'bu durumda doğru durumu belirler $'\355', bu bir sunum hatasını ortaya çıkarır

  • printf '\033k%2000s\033\\' $'\302\217' pencere başlığını belirler

Bu, bazı etkileşimli komutların çöktükten ve kabuğun içine geri düştükten sonra terminalde görebileceğiniz kombinasyon olabilir. ( IMHO'yu /bin/catprovoke edemezsiniz stty -echo, ancak vimgenellikle bunu ayarlamak gibi etkileşimli komutlar .)

Şimdi bu pisliği temizle

stty sane; printf '\033k%s\033\\\033]2;%s\007' "$(basename "$SHELL")" "$(uname -n)"; tput reset; tmux refresh

Not: Kopyala ve yapıştır özelliğini kullanırsanız (yapıştırırken büyük olasılıkla basılı tutmanız gerekir Shift), yukarıdaki komutu kullandıysanız, mesajınızı karıştırmak için muhtemelen yapıştırınızı göremezsiniz tty. Bu nedenle, sadece yapıştırdıktan sonra Enter tuşuna kör bir şekilde basın.

Açıklaması:

  • stty sane "aklı başında" terminal parametrelerini ayarlar, böylece yazarken yankınızı geri alırsınız

  • printf '\033k%s\033\\' "$(basename "$SHELL")"pencere başlığını normale döndürür. tmux rename-window "$(basename "$SHELL")"Alternatif olarak kullanabilirsiniz , ancak kaçış dizisinin her zaman çalıştığı yerle tmux rename-windowsınırlıdır tmux.

  • printf '\033]2;%s\007' "$(uname -n)"varsayılan olarak gösterilmek üzere statü hakkını sıfırlar. (Kullanmamanız gerektiğine dikkat edin tmux set status-right "something", çünkü pane titlebozuk olanı status-rightçıkarır , bu nedenle bazı sunum hatalarını gösterir. Ayrıca tmux, bölme başlığını doğrudan ayarlamak için bir komut bulamadığımı da unutmayın .)

  • tput reset Sadece bu karışıklık durumunda terminali sıfırlar

  • tmux refresh ortaya çıkmış olabilecek diğer döküntülerden kurtulmak için ekranı yeniler.

Eksik bit

printf '\033k%s\033\\' "$(basename "$SHELL")"Standart yeteneğini kaybeder tmuxsol durum alanında geçerli komutu sunmak. Yürütüldükten sonra printf '\033k%s\033\\' "something"bu yetenek kayboldu ve daha önce olduğu gibi nasıl geri getirileceğini henüz iyi bir yol bulmadım.

Ancak, aşağıdaki açıklamalarda belirtildiği tmuxgibi, aşağıdaki tmuxayarlarla değiştirme gibi benzer bir özelliği etkinleştirebilirsiniz :

set-window-option automatic-rename on
  • Bunu tmux, geçerli pencerede "Escape" :("Kaçış" tmuxkomut anahtarınızdır) ile ulaşılabilen komut satırında yapın ve sonra komutu girin.

  • Veya tmux set-window-option automatic-rename onmevcut terminalinizde mazeret var , ancak doğrudan doğru kabuk seviyesinde değilseniz, örneğin sudoveya içerisinde çalışmazsa bu başarısız olur ssh.

  • Veya geçerli tmuxoturumda başka bir pencere açın ve aşağıdaki komutu uygulayın:

    for a in `tmux list-windows | sed 's/:.*//'; do tmux set-window-option -t "$a" automatic-rename on; done`
  • Veya çalışan tmuxve aşağıdaki komutu çalıştıran bilgisayara başka bir kabuk açın (bu tmux'un dışındadır):

    tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done

Not: Bu çözümü bir araya getirmeye yardımcı olan herkese teşekkürler.


2
Lütfen uname -nbunun yerine dikkat edin hostname -s. hostnameBu rootbağlamda tehlikelidir , çünkü ana sunucunuz -s, eski Linux / Unix'te yeniden adlandırılmış hostnameseçeneklerin bulunmadığı şekilde yeniden adlandırılabilir .
Tino

Bölme başlığının sıfırlanmaması da beni üzüyor; Bu yüzden ilk başta buradayım. Sayfadaki en az bu eksikliği kabul eden tek kişi olduğunuz için teşekkür ederiz!
EvanED

2
Ayrıca, pencere başlığını düzelttikten sonra "tmux setw otomatik olarak yeniden adlandır" seçeneğini de düşünün
EB.

stty saneBenim terminali berbat ve bir şey göstermedi zaman parçası bana yardımcı oldu. Teşekkür ederim!
johnny

"Kayıp bit" i, yani sol durum alanında o anda çalışmakta olan komutu görüntülemeyi istiyorsanız, tmux komutunu kullanabilirsiniz set-window-option automatic-rename.
David Foerster

26

Gördüğünüz özel sorunun, pencere 4'ün adı / başlığı ile ilgisi var. Çok uzun (açık bir şekilde) olmanın ve tmux'un daha kısa olduğunu ölçmesine neden olan garip karakterler içeren bir kombinasyon (durum çubuğunu gerektiği gibi sınırlayamıyorsa) Ekranın genişliğine) Nasıl sıfırlayacağımı bilmiyorum (benimki ön planın ismini izliyor), pencereyi kapatmanız gerekebilir.


4
bir pencereyi yeniden adlandırmak için varsayılan ayardır^b - ,
Rob

8
@ Rob'ın yorumundaki klavye kısayolunun kafasını karıştırması durumunda, o zaman Ctrl- bo zaman ,.
Doug Paul

Bir pencereyi yeniden adlandırdığınızda, alanın geçerli pencere adıyla önceden doldurulduğunu unutmayın (ve imleciniz bu adın sonundadır). Pencere ismim uzun bir çöp dizisi olduğundan Backspace, mevcut ismi silmek için bir dakika beklemem gerekiyordu. Benim için görsel geribildirim sonunda tüm eski adın silindiğini açıkça ortaya koydu.
Doug Paul

Ctrl-b :yeniden adlandırma penceresini de kullanabilirsiniz <name here here>; bu, o komut için klavye kısayolu yerine tmux komut sistemini kullanır.
Abbafei,


5
tmux set-option -g status off && tmux set-option -g status on 

pencere adı dışında bir şey bozulduğunda ve bunun ne olduğunu bulmak için canımı sıkamadığımda bunu benim için düzeltti.


2

tmuxsorunun sadece bir kısmını oluşturabilir. stty saneKomut satırında çağırmanız gerekebilir . Bu, çekirdek içi TTY sürücülerini, genellikle ilerlemenizi sağlayan bazı varsayılan değerlere sıfırlar. TTY sürücüleri yeterince karışıksa, stty saneekranda "geri bildirim" yazmadan "kör" yazmanız gerekebilir .


stty sanesorunu da çözmez. Ekrandaki geri bildirimlerim var, her tmuxbölmenin içinde normal olarak yazabiliyorum ve geri bildirime sahibim, ancak tmux'un bir şeyler çizmesi gerektiğinde (örneğin yeni bir uygulama çalıştırma, bölmeleri değiştirme veya yeniden boyutlandırma) durum çubuğu bölmelere taşınır ...
gerrit

2

Config dosyanızı yeniden yüklemeyi deneyin?

Ctrlb, sonra: :source-file ~/.tmux.conf


Şimdiye kadar en iyi çözüm.
dave

-3

sorunu benim için düzeltmek için:

Sorun bölmesini ve penceresini yeni öldürdüm ve yeni bir pencere ve bölme oluşturdum.

Sayı bölmesinde, CTRL+ AXve CTRL+ AC.


yine benim için bu şekilde. başka hiçbir şekilde yardımcı olabilir
itech
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.