Когда я запускаю git diff
для какого-либо файла, какой пейджер он использует? Я спрашиваю, потому что для любого другого инструмента командной строки, который я использую с пейджером в Linux, когда я завершаю работу (набирая 'q'), терминал возвращается к тому, что он отображал раньше, с единственным доказательством того, что я запускал st, являясь сама командная строка. Например:
> git help diff
>
То же самое с man
, less
, et c. Но когда я запускаю git diff
, вся разница остается на экране, даже если она была длиной в сотни строк. Поэтому, если я хочу посмотреть на вывод предыдущих команд, я должен прокрутить путь назад.
Похоже, это поведение less -X
, которое "Отключает отправку строк инициализации и деинициализации termcap на терминал".
Я прочитал документацию для git diff
, но я нигде не вижу, как это говорит о том, как восстановить терминал до того состояния, в котором он находился до запуска diff. Я могу export PAGER=/bin/less
, но это не имеет никакого эффекта (возможно, это пейджер по умолчанию для git diff
).
Возможно, git diff
каким-то образом передает параметр -X
в less
. Но если это так, я не вижу возможности отключить это поведение (в справочной странице для less
об этом ничего не говорится).
Related: https://unix.stackexchange.com/questions/167735/can-less-f-be-usefully-combined-with-termcap-initialization. Но это не говорит о том, почему git diff
ведет себя так, как будто передает параметр -X
. (FWIW, мой терминал сообщает, что это xterm-256color.)