bagaimana membuat pager lebih sedikit merespons roda gulir dan tidak menghapus layar

13

Saya tahu tentang jawaban seperti cara membuat-mouse-wheel-scroll-the-less-pager-using-bash-and-gnome-terminal , yaitu menghapus -Xflag dari variabel lingkungan $ KURANG. Tetapi saya ingin melakukan keduanya :

  1. gunakan roda mouse untuk menggulir pager (berlawanan dengan menggulir scrollbar jendela terminal) (yang Anda dapatkan dengan menghapus -X dari $LESS)
  2. memiliki konten dari pager tetap pada layar setelah berhenti (yang biasanya dilakukan dengan menambahkan -X ke $LESS).

Apakah ada cara saya bisa mendapatkan kue dan memakannya juga?

Kevin G.
sumber

Jawaban:

20

Bukan tanpa meretas kode sumber less's. Sedikit cerita latar belakang:

Kurang tidak bisa menangani mouse (termasuk acara gulir) sama sekali.

Terminal emulator mendukung layar alternatif yang disebut. Inilah yang sebagian besar aplikasi layar penuh beralih ke durasinya (dan beralih kembali ke layar normal ketika mereka berhenti, menyebabkan konten sebelumnya "pulih"), dan tidak memiliki buffer scrollback. Kurang juga beralih ke layar alternatif ini, kecuali -Xdiberikan dalam kasus yang tidak.

Banyak emulator terminal mengetahui bahwa ketika berada dalam mode layar alternatif dan aplikasi yang berjalan di dalamnya tidak tertarik pada acara mouse, masuk akal untuk mengubah pengguliran menjadi acara penekanan tombol Atas atau Bawah. Ini adalah retasan, dan itu akan berbahaya baik di layar normal (bayangkan apa yang akan terjadi misalnya pada prompt shell Anda), atau ketika aplikasi ingin menangani mouse (tentu, mereka harus melihat kejadian sebenarnya mouse itu). Tetapi karena secara default tidak satu pun dari keduanya ini bertahan ketika Anda menjalankan less, peretasan ini menendang (tergantung pada emulator terminal yang mendukungnya, dan diaktifkan melalui \e[?1007hvs.\e[?1007l). Acara gulir Anda dikonversi oleh emulator terminal ke penekanan tombol Atas dan Bawah, dan lebih sedikit yang tidak dapat membedakannya dari penekanan tombol yang sebenarnya. Itu tidak menerima acara gulir mouse: ia melihat tombol Atas dan Bawah.

Jadi begitulah Anda: Entah Anda beralih ke layar alternatif dan hack terminal mengubah acara gulir menjadi penekanan tombol menjadi lebih sedikit, dan layar normal dipulihkan saat Anda keluar; atau Anda tidak, dan kemudian tidak ada keajaiban yang mengubah acara gulir ke penekanan tombol dan kurang tidak memahami acara gulir.

Jadi apa yang bisa dilakukan? Baik, implementasikan dukungan mouse dalam waktu kurang dan biarkan ia menangani acara gulir itu sendiri (dan hidup dengan klik tidak cacat atau perilaku salin-tempel), atau laksanakan peretasan aneh lainnya: setelah berhenti, setelah kembali ke layar normal, lessdapat untuk terakhir kalinya cetak satu layar penuh konten, ulangi apa pun yang ditampilkan sebelum Anda berhenti.

Dalam praktiknya, itu pada dasarnya bermuara pada: maaf, lupakan saja.

egmont
sumber
0

Rupanya upgrade ke kurang dari 530 atau lebih baru akan membuat Anda mendapatkan fitur yang diinginkan,

http://www.greenwoodsoftware.com/less/news.530.html

Ini adalah perbedaan antara versi 487 dan versi 530:

Jangan tampilkan urutan terminal init jika menggunakan -F dan file cocok pada satu layar.

Tidak menemukan PPA 'kurang' yang memiliki versi yang lebih baru, jadi cukup unduh paket sumber dan buat secara lokal dan instal.

dan konfigurasikan git seperti ini:

git config --global core.pager 'less -F -S -R -i -+X'

info lebih lanjut: Cara menggunakan "less -F" tanpa "-X", tetapi masih menampilkan output jika hanya satu halaman?

Ted Feng
sumber
0

Sebenarnya tidak mungkin menggunakan roda mouse untuk menggulir dalam pager yang lebih sedikit, tetapi dimungkinkan untuk menggunakan roda mouse untuk menggulir konten dengan pager w3m! w3m adalah " pager WWW yang dapat dijelajahi dengan dukungan tabel / bingkai yang sangat baik ", jadi bahkan mungkin untuk menggunakannya sebagai browser web konsol. Selain itu, dimungkinkan untuk menggunakan w3m sebagai penampil gambar konsol (tidak bekerja dengan semua emulator terminal, tetapi berfungsi cukup baik dengan xterm). w3m " memiliki dukungan untuk tabel, bingkai, koneksi SSL, warna dan gambar sebaris ". Aplikasi yang sangat berguna! tangkapan layar

ILUXA
sumber