Как & ldquo; меньше & rdquo; переключиться на текст, затем вернуться к подсказке?

Когда я запускаю less в каком-то файле, подсказка уходит, и я получаю содержимое файла на экране. Затем, когда я нажимаю q, он возвращается к подсказке. Я думаю, что less делает это, сохраняя текущий буфер терминала, открывая новый буфер, выводя файл в новый, затем закрывая, отбрасывая новый буфер и восстанавливая старый, но я не знаю, что этот процесс вызывается или как это делается.

Я смотрел в man less, но ничего не нашел. Я попытался найти его, но не смог найти ничего полезного, кроме того, что команда screen может делать то же самое с сеансами оболочки.

В конечном счете, я спрашиваю, потому что хочу git diff использовать новый буфер вместо печати inline. Я уже установил GIT_PAGER=less и git --paginate diff, но ничего не изменил. И у меня есть обходной путь, но он немного длинный: git diff --color=always | less -R

Обновление: после некоторых исследований, похоже, что tput smcup и tput rmcup - команды высокого уровня, чтобы сделать то же самое, возможно используя пакет termcap.

6
задан 8 December 2017 в 01:20

3 ответа

Все функции управления экраном less находятся в модуле screen.c. При запуске, если он не находится в режиме «нет init» (-X или --no-init), он выводит свою строку sc_init, которая является строкой termcap ti («инициализация терминала», которая получает терминал готовый для полноэкранного управления курсором). [Exit] [@ d0]

Поведение, которое вы видите, является поведением по умолчанию с git, если less isn 't настроен (т. е. переменная LESS не установлена); в этом случае git запускает less с параметрами FRX, что приводит к тому, что less будет закрываться, если содержимое подходит на одном экране, отображает цвета и пропускает инициализацию терминала.

Для получения вашего поведения установите LESS на -R или установите для параметра core.pager git значение, подобное less -+X (подробнее см. man git-config).

4
ответ дан 22 May 2018 в 15:34
  • 1
    Установка LESS=-R работала, но установка core.pager как less -R не выполнялась. Однако установка core.pager как less -+X. – wjandrea 8 December 2017 в 02:52
  • 2
    И спасибо, кстати! – wjandrea 8 December 2017 в 03:02
  • 3
    Пожалуйста! less -+X является рекомендуемым параметром в man git-config, поэтому я упомянул последний, но я добавил его явно в ответ. – Stephen Kitt 8 December 2017 в 12:17

Все функции управления экраном less находятся в модуле screen.c. При запуске, если он не находится в режиме «нет init» (-X или --no-init), он выводит свою строку sc_init, которая является строкой termcap ti («инициализация терминала», которая получает терминал готовый для полноэкранного управления курсором). [Exit] [@ d0]

Поведение, которое вы видите, является поведением по умолчанию с git, если less isn 't настроен (т. е. переменная LESS не установлена); в этом случае git запускает less с параметрами FRX, что приводит к тому, что less будет закрываться, если содержимое подходит на одном экране, отображает цвета и пропускает инициализацию терминала.

Для получения вашего поведения установите LESS на -R или установите для параметра core.pager git значение, подобное less -+X (подробнее см. man git-config).

4
ответ дан 18 July 2018 в 01:38

Все функции управления экраном less находятся в модуле screen.c. При запуске, если он не находится в режиме «нет init» (-X или --no-init), он выводит свою строку sc_init, которая является строкой termcap ti («инициализация терминала», которая получает терминал готовый для полноэкранного управления курсором). [Exit] [@ d0]

Поведение, которое вы видите, является поведением по умолчанию с git, если less isn 't настроен (т. е. переменная LESS не установлена); в этом случае git запускает less с параметрами FRX, что приводит к тому, что less будет закрываться, если содержимое подходит на одном экране, отображает цвета и пропускает инициализацию терминала.

Для получения вашего поведения установите LESS на -R или установите для параметра core.pager git значение, подобное less -+X (подробнее см. man git-config).

4
ответ дан 24 July 2018 в 17:25

Другие вопросы по тегам:

Похожие вопросы: