Ekranı temizlemeden “daha ​​az” çıkmanın bir yolu var mı?


68

Nispeten sık sık, kendimi bırakmak istiyorum lessama ekranda baktıklarımdan geri dönüp bakmak istediğimi hissediyorum. Bunu yapmanın bir yolu var mı? Geçici Çözümler?

(Şu andaki geçici çözümüm, istifa etmek, sonra kullanmaktır more. Dolayısıyla , bundan daha iyi olan herhangi bir geçici çözüm memnuniyetle karşılandı. İdeal, zaten lessbir kabuk ayarı veya komut dosyası kullanarak içeri girdiğimde kullanabileceğim bir şey olabilir .)

Masaüstüm OSX, ancak RHEL ve Ubuntu sunucuları kullanıyorum.


1
Uzun bir çıktının (içinde git diffveya git logiçinde olduğu gibi ) okunması, less -Xterminalimdeki kaydırma tamponunu alır ve önceki çıktının çoğunu tahliye eder. Eğer çok isterdim lessçıkış anında çıktının son screenful ile sadece çıkış olabilir; yani kaydırma tamponunun birden fazla sayfası, bıraktıktan sonra alınmayacaktır less. Herhangi bir fikir?
musiphil

Bu arada, -Rgenellikle daha güvenli bir seçimdir -r.
musiphil

Teşekkürler. Merak edenler için:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett

@ musiphil Belki de -c?
Vanessa Phipps

@MatthewPhipps: Sanırım -ciçinde hareket ederken ekranı nasıl güncelleyeceğinizi düşünüyorum less.
musiphil

Yanıtlar:


68

Bu aslında kullandığınız terminal emülatörünün bir fonksiyonudur (xterm, gnome-terminal, konsole, screen). Gibi programlar lessveya vimçağrıldığında alternatif bir ekran veya altscreen başlatılır. Bu altscreen'de tarih önbelleği yok ve programdan çıktığınızda hemen önceki pencereden içeriğini ve yerleşimini geri yükleyen orijinal ekrana geri dönerek çıkıyor.

less"-X" argümanını ileterek bir altscreen'de fırlatılmasını engelleyebilirsiniz .

less -X /path/to/some/file

Ayrıca "-X" yi bir ortam değişkeni olarak iletebilirsiniz. Yani kullanıyorsanız bash, şunu içine yerleştirin ~/.bashrc:

export LESS="-X"

Bununla birlikte, bu, termcap (terminal özelliği) başlatma ve yeniden başlatma işlemini lessdevre dışı bırakır , bu nedenle kullandığınızda diğer görüşler görünebilir.

Başka bir seçenek kullanmak olacaktır screenve seçeneğini ayarlamak altscreen offGözlerinde farklı ~/.screenrc. lessekranı temizlemeyecek ve renk formatını korumalıdır. Muhtemelen tmuxaynı seçeneğe sahip olacak.

Bu blog girişi sorunu açıklar ve gnome-terminaldeğişen başarıya özgü farklı çözümler sunar .


2
Mükemmel. Bir dezavantaj var mı?
Steve Bennett,

2
Bekle, ben zaten bir tane buldum - ve git log(ve muhtemelen diğer renkli komutların) çıktısı berbattı.
Steve Bennett,

1
@ SteveBennett Bu kadar küçük bir takma ad alias les="/usr/bin/less -X"
yapardım

4
Hey, ben sadece bir panzehir keşfetti düşünüyorum git logyukarıdaki konuyla: export LESS="-r -X". (Yan etkileri hakkında hiçbir fikrim yok o vardır ...)
Steve Bennett

5
Aslında, çağrı cihazını çalıştırdığında değişmemişse değişkeni gitayarlar , böylece sadece ayarlanmamış bırakabilirsiniz ve otomatik olarak çalışacaktır . Arayın in daha fazla bilgi için. LESSFRSXLESSless-FRSXcore.pagergit-config(1)
musiphil

4

George'un çözümü benim için işe yaramadı, ama bu çözüm ( cevabına bağlı blog girişinden ).

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. Düzenle ~ / xterm-noclear.src

    • ikinci satırdaki adı 'xterm' den 'xterm-noclear' a ya da sana uygun olanı değiştir (eğer varsa 'xterm-debian' ı da değiştir)

    • 'smcup' ve 'rmcup' talimatlarını kaldırın (örneğin "smcup = \ E [? 1049h" ve "rmcup = \ E [? 1049l")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear, ~ / .terminfo dizininizde görünmelidir)

  5. $ export TERM=xterm-noclear (şimdi daha az davranışını kontrol edin ve eğer tatmin olursa, ~ / .profile dosyasına dışa aktarma yönergesini ekleyin)

(Bu talimatları doğrudan @ jah'ın George'un cevabını reddettiği düzenlemesinden kopyaladım.)


4

Bunu hatırlamamın yolu less -SEX, ekrana çıktı atmam gerektiğine, ancak çizgilerin sarılmasını istemediğim zamanlar içindir. Örneğin docker ps | less -SEX, bu ne yapar:

  • -S
    • Kaydırma yerine kaydırma
    • Eğer düşürürseniz, -Ekaydırma yapmak için ok tuşlarını kullanabilirsiniz.
  • -E
    • EOF'a ulaştığınızda çıkın
  • -X
    • Terim takas etme / boş bırakmayı önleme
    • "Bellek" kısmı, S ve E'nin ne yaptığını bildiğimden ötürü, bu diğer kısım olmalı. (Ve bu komutu hafızaya vermemizin nedeni, açılmamış çıktıları atmak istiyoruz (etkileşimli bir oturuma girmiyoruz).

Hatırlayamıyorsanız less -SEX, sizin için çok fazla umut yoktur. Her sanırım yeniden google.


Adamın bir sorunu var ve sen ona daha az seks mi teklif ediyorsun?
yossico
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.