git diff: какой пейджер? - PullRequest
0 голосов
/ 13 марта 2020

Когда я запускаю 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.)

1 Ответ

1 голос
/ 13 марта 2020

Чтобы увидеть, какой пейджер Git используется, вы можете использовать git var GIT_PAGER. Чтобы выяснить порядок параметров, к которым обращается Git, вы можете использовать run git var --help; На странице руководства указан порядок параметров.

Обратите внимание, что по умолчанию Git устанавливает некоторые параметры при вызове пейджера путем установки некоторых переменных среды. Поведение во время компиляции по умолчанию - LESS=FRX и LV=-c. Если вам не нужны эти параметры, вы можете переопределить их, установив переменную среды самостоятельно, и в этом случае ваши настройки будут переопределять значения по умолчанию Git.

...