Когда я запускаю 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.
Все функции управления экраном 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).
Все функции управления экраном 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).
Все функции управления экраном 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).