Apakah ada cara untuk keluar dari "kurang" tanpa membersihkan layar?

68

Relatif sering, saya mendapati diri saya ingin berhenti lesstetapi meninggalkan apa yang saya lihat di layar, untuk merujuk kembali. Apakah ada cara untuk melakukan ini? Penanganan masalah?

(Solusi saya saat ini adalah berhenti, lalu gunakan more. Jadi solusi apa pun yang lebih baik daripada yang disambut. Idealnya akan menjadi sesuatu yang dapat saya gunakan setelah saya sudah di dalam less, mungkin dengan pengaturan shell atau beberapa skrip.)

Desktop saya adalah OSX, tetapi saya menggunakan server RHEL dan Ubuntu.

Steve Bennett
sumber
1
Membaca output yang panjang (seperti pada git diffatau git log) less -Xakan mengambil buffer gulir di terminal saya dan mengusir banyak output sebelumnya. Saya akan senang jika lesshanya bisa keluar dengan layar penuh keluaran pada saat keluar; yaitu tidak lebih dari satu halaman buffer gulir akan diambil setelah berhenti less. Ada ide?
musiphil
By the way, -Rbiasanya merupakan pilihan yang lebih aman daripada -r.
musiphil
Terima kasih. Bagi mereka yang bertanya-tanya:-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 Mungkin -c?
Vanessa Phipps
@ MatthewPhipps: Saya kira -cadalah tentang cara memperbarui layar ketika Anda bergerak di dalam less.
musiphil

Jawaban:

68

Ini sebenarnya adalah fungsi dari emulator terminal yang Anda gunakan (xterm, gnome-terminal, konsole, layar). Layar alternatif, atau layar alts, diluncurkan ketika program seperti lessatau vimdipanggil. Layar altscreen ini tidak memiliki buffer riwayat dan segera keluar saat Anda keluar dari program, beralih kembali ke layar asli yang mengembalikan riwayat dan penempatan konten jendela sebelumnya.

Anda dapat mencegah lesspeluncuran di layar altscreen dengan memberikan argumen "-X".

less -X /path/to/some/file

Anda juga dapat melewatkan "-X" sebagai variabel lingkungan. Jadi, jika Anda menggunakan bash, letakkan ini di ~/.bashrc:

export LESS="-X"

Namun, ini menghilangkan inisialisasi dan deinitialisasi termcap (kemampuan terminal), sehingga tampilan lain saat Anda menggunakan lessmungkin tampak tidak aktif.

Opsi lain adalah menggunakan screendan mengatur opsi altscreen offdi ~/.screenrc. lesstidak akan menghapus layar dan harus mempertahankan pemformatan warna. Agaknya tmuxakan memiliki opsi yang sama.

Entri blog ini menjelaskan masalah dan menawarkan beberapa solusi berbeda khusus untuk gnome-terminalkesuksesan yang berbeda-beda.

George M
sumber
2
Sempurna. Apakah ada sisi negatifnya?
Steve Bennett
2
Tunggu, saya sudah menemukan satu - output git log(dan mungkin perintah berwarna lainnya) kacau.
Steve Bennett
1
@SteveBennett Itu cukup kecil saya akan membuatnya alias:alias les="/usr/bin/less -X"
bonsaiviking
4
Hei, saya pikir saya baru saja menemukan penangkal git logmasalah di atas: export LESS="-r -X". (Tidak tahu apa efek samping dari yang adalah ...)
Steve Bennett
5
Sebenarnya, gitsetel LESSvariabel ke FRSXjika tidak disetel ketika menjalankan pager, jadi Anda bisa membiarkannya LESStidak disetel dan lesssecara otomatis akan dijalankan -FRSX. Carilah core.pagerdi git-config(1)untuk informasi lebih lanjut.
musiphil
4

Solusi George tidak berhasil untuk saya, tetapi solusi ini berhasil (dari entri blog yang ditautkan dalam jawabannya).

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

  2. Edit ~ / xterm-noclear.src

    • ganti nama pada baris kedua dari 'xterm' menjadi 'xterm-noclear', atau apa pun yang cocok untuk Anda (juga ubah 'xterm-debian' jika ada)

    • hapus instruksi 'smcup' dan 'rmcup' (mis. "smcup = \ E [? 1049h," dan "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear akan muncul di direktori ~ / .terminfo Anda)

  5. $ export TERM=xterm-noclear (sekarang periksa perilaku kurang dan, jika puas, tambahkan baris petunjuk ekspor ke profil ~ /.)

(Saya menyalin instruksi-instruksi ini langsung dari hasil edit jawaban George yang ditolak @ jah.)

PRL
sumber
4

Cara saya ingat ini adalah less -SEXketika saya harus membuang output ke layar tetapi tidak ingin garis untuk membungkus. Misalnya docker ps | less -SEXApa yang dilakukan adalah ini:

  • -S
    • Gulir alih-alih membungkus
    • Jika Anda menjatuhkan -E, Anda dapat menggunakan tombol panah untuk menggulir
  • -E
    • Keluar saat Anda mencapai EOF
  • -X
    • Cegah pertukaran / blank istilah
    • Bagian "memori" adalah bahwa saya tahu apa yang S dan E lakukan, jadi ini pasti bagian yang lain. (Dan alasan kami untuk melakukan perintah ini ke memori adalah bahwa kami ingin membuang (tidak memasuki sesi interaktif) keluaran yang terbuka.

Jika Anda tidak dapat mengingatnya less -SEX, tidak ada banyak harapan untuk Anda. Re-google saja setiap kali saya kira.

Bruno Bronosky
sumber
Pria itu punya masalah dan kamu menawarkan lebih sedikit seks?
Yossico