GNU/Linux >> Belajar Linux >  >> Linux

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

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

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

Emulator terminal mendukung apa yang disebut layar alternatif. Ini adalah tempat sebagian besar aplikasi layar penuh beralih ke durasinya (dan beralih kembali ke layar normal saat ditutup, menyebabkan konten sebelumnya "dipulihkan"), dan tidak memiliki buffer scrollback. Less juga beralih ke layar alternatif ini, kecuali -X diberikan dalam hal ini tidak.

Banyak emulator terminal mengetahui bahwa saat dalam mode layar alternatif dan aplikasi yang berjalan di dalamnya tidak tertarik dengan peristiwa mouse, masuk akal untuk mengubah pengguliran menjadi peristiwa penekanan tombol Atas atau Bawah. Ini adalah retasan, dan itu akan berbahaya baik di layar normal (bayangkan apa yang akan terjadi misalnya di prompt shell Anda), atau ketika aplikasi ingin menangani mouse (tentu, mereka harus melihat peristiwa mouse yang sebenarnya). Tetapi karena secara default tidak satu pun dari keduanya yang ditahan saat Anda menjalankan less , peretasan ini dimulai (tunduk pada emulator terminal yang mendukungnya, dan diaktifkan melalui \e[?1007h vs. \e[?1007l ). Peristiwa gulir Anda diubah oleh emulator terminal menjadi penekanan tombol Atas dan Bawah, dan less tidak dapat membedakannya dari penekanan tombol yang sebenarnya. Itu tidak menerima acara gulir mouse:itu melihat penekanan tombol Atas dan Bawah.

Jadi begitulah:Entah Anda beralih ke layar alternatif dan peretasan terminal mengubah acara gulir menjadi penekanan tombol lebih sedikit, dan layar normal dipulihkan saat Anda keluar; atau Anda tidak melakukannya, maka tidak akan ada keajaiban yang mengubah acara gulir menjadi penekanan tombol dan less tidak memahami acara gulir tersebut.

Jadi apa yang bisa dilakukan? Ya, terapkan dukungan mouse dalam waktu yang lebih sedikit dan biarkan ia menangani acara gulir itu sendiri (dan hidup dengan klik non-default atau perilaku salin-tempel), atau terapkan peretasan aneh lainnya:saat berhenti, setelah kembali ke layar normal, less bisa untuk terakhir kalinya mencetak selayar penuh konten, mengulangi apa pun yang ditampilkan sebelum Anda keluar.

Dalam praktiknya, intinya adalah:maaf, lupakan saja.


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

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

Inilah perbedaan antara versi 487 dan versi 530:

Jangan tampilkan urutan init terminal jika menggunakan -F dan file pas di 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:Bagaimana cara menggunakan "less -F" tanpa "-X", tetapi tetap menampilkan output jika hanya satu halaman?


Linux
  1. Bagaimana cara menonaktifkan screensaver SuSE?

  2. Bagaimana saya bisa membuat 'diff -X' mengabaikan jalur tertentu dan bukan nama file?

  3. Bagaimana cara membuat file TIDAK dapat dimodifikasi?

  1. Apakah Paket Yang Baru Saya Instal Sah, Dan Jika Tidak Bagaimana Cara Menghapusnya?

  2. Bagaimana Cara Mengubah Kecepatan Gulir Roda Mouse?

  3. Bagaimana cara membuat dan menerapkan tambalan SVN?

  1. Cara memutar layar pada Raspberry Pi 3

  2. Cara menggunakan perintah "layar" di Linux

  3. Bagaimana cara menghapus scrollback di perintah layar?