как заставить пейджер меньше реагировать на колесо прокрутки и не очищать экран


13

Я знаю ответы на такие вопросы, как how-to-make-mouse-wheel-scroll-the-less-pager-using-bash-and-gnome-Terminal , который должен удалить -Xфлаг из переменной окружения $ LESS. Но я хотел бы сделать оба из этих:

  1. используйте колесико мыши для прокрутки пейджера (в отличие от прокрутки полосы прокрутки окна терминала) (которую вы получаете, удалив -X из нее$LESS )
  2. оставьте содержимое пейджера на экране после выхода (что обычно достигается добавлением -X в $LESS).

Можно ли как-нибудь съесть свой пирог и съесть его?

Ответы:


20

Не без взлома исходного кода. Немного предыстории:

Less не может обрабатывать мышь (включая события прокрутки) вообще.

Эмуляторы терминала поддерживают так называемый альтернативный экран. Это то, к чему большинство полноэкранных приложений переключаются на время (и возвращаются к обычному экрану при выходе, вызывая «восстановление» предыдущего содержимого), и у него нет буфера обратной прокрутки. Less также переключается на этот альтернативный экран, если только -Xне указано, в каком случае это не так.

Многие эмуляторы терминала понимали, что когда он находится в режиме альтернативного экрана и приложение, работающее внутри, не заинтересовано в событиях мыши, имеет смысл преобразовать прокрутку в события нажатия клавиши «Вверх» или «Вниз». Это взлом, и он будет вреден либо на обычном экране (представьте, что произойдет, например, по приглашению вашей оболочки), либо когда приложение захочет обработать мышь (конечно, тогда они должны увидеть реальные события мыши). Но поскольку по умолчанию ни один из этих двух вариантов не работает во время работы less, этот хак срабатывает (при условии, что эмулятор терминала поддерживает его и включается через \e[?1007hvs.\e[?1007l). Ваши события прокрутки преобразуются эмулятором терминала в нажатия клавиш «Вверх» и «Вниз», и ничто не может отличить их от фактических нажатий клавиш. Он не получает события прокрутки мыши: он видит нажатия клавиш вверх и вниз.

Итак, вы: Либо вы переключаетесь на альтернативный экран, и хак терминала преобразует события прокрутки в нажатия клавиш за меньшие деньги, и нормальный экран восстанавливается при выходе; или нет, и тогда не может быть никакого волшебства, преобразующего события прокрутки в нажатия клавиш, и меньше не понимает события прокрутки.

Так что же можно сделать? Ну, либо реализуйте поддержку мыши в меньшем количестве, и пусть она сама обрабатывает события прокрутки (и работает с поведением щелчка по умолчанию или копированием-вставкой), либо реализует другой странный хак: при выходе, после возврата к нормальному экрану, lessможет в последний раз распечатайте весь контент, повторяя все, что было показано перед выходом.

На практике все сводится к следующему: извините, забудьте об этом.


0

По-видимому, обновление до менее 530 или более поздней версии даст вам желаемую функцию,

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

Это различия между версией 487 и версией 530:

Не выводить последовательность инициализации терминала, если используется -F и файл помещается на одном экране.

Не удалось найти «менее» PPA с более новой версией, поэтому просто скачайте исходный пакет, соберите его и установите локально.

и настройте git так:

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

больше информации: Как использовать «less -F» без «-X», но при этом отображать вывод только на одной странице?


0

На самом деле невозможно использовать колесо мыши для прокрутки в меньшем количестве пейджеров, но можно использовать колесо мыши для прокрутки контента с помощью пейджера w3m! w3m - это « WWW просматриваемый пейджер с отличной поддержкой таблиц / фреймов », поэтому его даже можно использовать в качестве консольного веб-браузера. Более того, можно использовать w3m в качестве консоли для просмотра изображений (работает не со всеми эмуляторами терминала, но довольно хорошо работает с xterm). w3m " поддерживает таблицы, фреймы, SSL-соединения, цветные и встроенные изображения ". Очень полезное приложение! снимок экрана

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.