Экран очистки команды 'less' при выходе - как его отключить?

79

Как заставить lessпрограмму не очищать экран при выходе?

Я бы хотел, чтобы он вел себя как git logкоманда:

  • он покидает недавно просмотренную страницу на экране при выходе
  • он не выходит, lessдаже если содержимое помещается на одном экране (попробуйте git log -1)

Есть идеи? Я не нашел подходящих lessопций или переменных env в руководстве, но я подозреваю, что они устанавливаются с помощью некоторой переменной env.

Войцех Качмарек
источник
Предположительно, вам нужен аспект прокрутки меньше, так moreчто не подойдет?
Свен

Ответы:

95

Чтобы предотвратить lessочистку экрана при выходе, используйте -X.

Из справочной страницы:

-X или --no-init

Отключает отправку строк инициализации и деинициализации termcap на терминал. Это иногда желательно, если строка деинициализации делает что-то ненужное, например, очистку экрана.

Что касается меньшего выхода, если содержимое помещается на одном экране, это вариант -F:

-F или --quit-if-one-screen

Вызывает автоматическое завершение меньше, если весь файл может быть отображен на первом экране.

-Fхотя это не значение по умолчанию, так что, скорее всего, оно где-то предустановлено для вас. Проверьте env var LESS.

sleske
источник
Отлично! -X это то, что я имел в виду.
Войцех Качмарек
7
Это особенно раздражает, если вы знаете об этом, -Fно не знаете -X, так как переход к системе, которая перезагружает экран при инициализации, заставит короткие файлы просто не появляться без видимой причины. Это меня поразило, ackкогда я попытался перенести ACK_PAGER='less -RF'настройки на Mac. Огромное спасибо!
markpasc 11.10.10
@markpasc: Спасибо за указание на это. Я бы не понял, что эта комбинация вызовет такой эффект, но теперь это очевидно.
слеске
7
Это особенно полезно для man-пейджера, так что man-страницы не исчезают, как только вы выходите с помощью клавиши «q». То есть, вы прокручиваете позицию на интересующей вас странице справочника только для того, чтобы она исчезла при выходе из меньшего количества пейджеров, чтобы использовать информацию. Итак, я добавил: export MANPAGER='less -s -X -F'к своему .bashrc, чтобы держать информацию о странице руководства на экране, когда я выходил меньше, чтобы я мог использовать ее вместо того, чтобы запоминать ее.
Михаил Гольдштейн
2
Это отстойно, что вы должны решить, когда вы начинаете, lessкак он должен вести себя, когда вы собираетесь выйти.
Майкл Берр
17

Если вы хотите, чтобы какой-либо из параметров командной строки всегда был по умолчанию, вы можете добавить в свой .profile или .bashrc переменную среды LESS. Например:

export LESS="-XF"

всегда будет применять -X -F всякий раз, когда из этого сеанса входа в систему запускается меньше.

Иногда команды являются псевдонимами (даже по умолчанию в определенных дистрибутивах). Чтобы проверить это, введите

alias

без аргументов, чтобы увидеть, не связались ли они с опциями, которые вам не нужны. Чтобы запустить настоящую команду в вашем $ PATH вместо псевдонима, просто поставьте перед ней обратную косую черту:

\less

Чтобы увидеть, установлена ​​ли переменная среды LESS в вашей среде и влияет ли она на поведение:

echo $LESS
Дерек Дувилль
источник
2
На самом деле, я добавляю, export LESS="-XFR"чтобы цвета просвечивали lessтакже.
dotancohen
2
Спасибо за это! -XFсам по себе ломал вывод git diffи -XFRполучал лучшее из обоих миров - не очистка экрана, а цветной git diffвывод.
Джайлс Томас,
1

Или просто установите его в вашей глобальной конфигурации git:

git config --global core.pager 'less -FX'

Таким образом, другие инструменты не затрагиваются (что мне нравится).

Лестер Чунг
источник