OS X Terminal hatları aşağı doğru ilerlemiyor


12

Mac OS X Terminali (TERM = xterm) kullanırken kırpılan bir sorun var: bazen üst kaydırma satırları scrollback arabellek eklenmedi bir duruma kendini alır. Ben kullanmıyorum screenya da benzeri; bu bir Terminal sekmesi içinde düz bir bash kabuğu.

Yeni bir sekme açıldıktan hemen sonra bunu yapmaz. Sorun sekmesinde çalıştırdığım bir şeyin yan etkisi olduğuna inanıyorum. Benim tahminim xterm öykünmesi, muhtemelen kaydırma bölgesi ile ilgili bir şey var.

Ne işe yaramadı:

  • Kabuk menüsü üzerinden yumuşak ve sert sıfırlama
  • resetSekmede çalıştırma

Terminali ve / veya xterm durumunu sıfırlamanın güvenilir bir yolu var mı?

Tek düzeltme sekmeyi kapatmak ve yeni bir tane açmak olsa bile, herkes neler olduğuna dair bir açıklama yapabilir mi?


Hangi Mac OS X sürümünü kullanıyorsunuz? "Sınırsız" değerinden daha az bir arabellek var mı ve eksik satırlar sadece arabellek arka ucuna düşen en eski satırlar mı?
Spiff

Mac OS X 10.6.2 ve arabellek 10.000 satırdır, ancak kaybedilen satırlar ekranın hemen dışına kayan satırlardır. Bir ekran yukarı kaydırırsam, bu satırlar orada olmaz ve aslında satırlar yukarı doğru kaydırıldıkça, en son geri kaydırma sayfası asla değişmez.
Steve Madsen

Yanıtlar:


19

Bu, terminalin alternatif ekran arabelleğini kullandığı anlamına gelir. Kaydırma günlüğüne kaydırılan bir ana ekran ve değişmeyen bir ekran var. Üst, daha az, emacs, vim ve ekran gibi "tam ekran" veya "ekran odaklı" programlar varsayılan olarak terminali alternatif ekrana geçirir.

Her ekranın kendi içeriği ve durumu vardır. Alternatif bir ekrana sahip olmak, programların tüm ekranı devralmasını ve ardından çıktıklarında ana ekrana geri dönerek önceki içerikleri geri yüklemelerini sağlar.

Mac OS X Lion 10.7'den itibaren Terminal'in ekranları manuel olarak değiştirmek için kullanabileceğiniz bir menü öğesi vardır:

Görünüm> Alternatif Ekranı Göster / Gizle

Bu, öncelikle bir "tam ekran" programı çıktıktan sonra alternatif ekrandan metin görüntüleyebileceğiniz veya kopyalayabileceğiniz şekilde sağlanır. Xterm de benzer bir komuta sahip.

Ayrıca, örneğin bir programı belirli bir ekranı kullanmaya zorlamak, örneğin çıktının geri kaydırma günlüğüne gidip gitmediğini kontrol etmek için de kullanabilirsiniz. Ancak, şu anda açık bir şekilde alternatif ekrana geçiş yapan bir program kullanıyorsanız, program çalışırken ana ekrana zorlarsanız, kafasını karıştırabilir veya beklenmedik sonuçlar alabilirsiniz, bu yüzden bunu dikkatli kullanın.

Programa bağlı olarak, komut satırı argümanı veya bunun yerine ana ekranı kullanacak şekilde yapılandırmak için başka yolları olabilir. ör less -X.

Bazı terminfo girişleri, alternatif ekranı (ör xterm1. TERM=xterm1 emacsana ekranda Emacs çalıştıracaktır. xterm1Kalıcı olarak kullanılmasını önermiyorum , çünkü Lion'daki varsayılanla karşılaştırıldığında bir dizi diğer kullanışlı özelliği devre dışı bırakır xterm-256color.

tputKabuk veya komut dosyasının içinden kaçış dizileri vermek için bu komutu kullanarak ekranlar arasında geçiş yapabilirsiniz . tput smcupdiğer ekrana tput rmcupgeçer ve ana ekrana geri döner.

Şu anda hangi programın çalıştığını görmek için Terminal penceresinde veya sekme başlığında görüntülenen program adına veya Denetçi penceresine ( Kabuk> Denetçiyi Göster ) bakın. Müfettiş listesindeki son işlem (genellikle) ekranı kullanan geçerli programdır. Bunun yerine ana ekranı kullanmak için yapılandırmanız gereken budur.


1
Bu kulağa çok ümit verici bir cevap gibi geliyor. Bir programın alternatif ekranı etkin bırakarak anormal olarak çıkabileceğine dair makul bir açıklama var mı?
Steve Madsen

Bir "tam ekran" programı çalıştırdıktan sonra tekrar kabuğa giriyorsanız, evet, bu bir olasılıktır, ancak listelediklerim gibi çoğu popüler program kendilerinden sonra temizlik konusunda güvenilirdir. Bir "tam ekran" programı çökerse, terminali alternatif ekranda bırakabilir. Ancak, ana ekrana geri dönmeyi içeren Kabuk> Sert Sıfırlama Gönder'i denediğinizi söylediniz . Tekrar olursa, geri dönmek için bu komutu kullanmayı deneyebilirsiniz:tput rmcup
Chris 2

Başka bir olasılık, bir programın terminali "kaydırma bölgesi" ile terk etmesidir. Terminale, kaydırma sırasında yalnızca bir alt çizgi aralığını kaydırmasını söyleyen kodlar vardır. Programlar bunu, örneğin ekrandan kaymayan durum satırlarını görüntülemek için kullanır. Kaydırma bölgesi üst çizgiyi içermiyorsa, metin kaydırma günlüğüne kaydırılmaz. Yine de, bunu da temizlemesi gereken bir Sert Sıfırlama denediğinizi söylediniz.
Chris Page

2
Benim durumumda, ne oldu gibi görünüyor benim olmasıdır sshbaşarısız bir uzak makineye oturum (zaman aşımına uğradı?) Ben iken vigörünüşte (çünkü Alternatif Ekranında terminal çıkışında, vitemizlemek için bir şans verilmiş asla). Daha sonra, Görünüm> Alternatif Ekranı Gizle menü öğesini sshseçerek sorunu çözene kadar aynı terminaldeki herhangi bir yeni oturum OP tarafından açıklanan sorunu sergileyecektir .
Hephaestus

Teşekkür ederim, Görünüm> Alternatif Ekranı Göster / Gizle yardımcı oldu. Bilmeden
vurmalıyım
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.