git diff:什么寻呼机?
git diff: what pager?
当我 运行 git diff
在某些文件上时,它使用的是什么寻呼机?我问是因为对于我在 Linux 中与寻呼机一起使用的所有其他命令行工具,当我退出时(通过键入 'q'),终端会恢复到之前显示的状态,这是我唯一的证据运行 s.t。作为命令行本身。例如:
> git help diff
>
与 man
、less
本身等相同。但是当我 运行 git diff
时,整个差异都保留在屏幕上,即使它是数百个线长。所以如果我想查看以前命令的输出,我必须向后滚动。
这似乎是 less -X
的行为,"Disables sending the termcap initialization and deinitialization strings to the terminal"。
我已经阅读了 git diff
的文档,但是我在任何地方都没有看到它说明如何将终端恢复到 运行 差异之前的状态。我可以 export PAGER=/bin/less
,但这没有效果(它可能是 git diff
的默认寻呼机)。
可能 git diff
以某种方式将 -X
参数传递给 less
。但如果是这样,我无论如何也看不到关闭该行为(less
的手册页对此保持沉默)。
相关:https://unix.stackexchange.com/questions/167735/can-less-f-be-usefully-combined-with-termcap-initialization。但这并没有告诉我为什么 git diff
的行为就好像它正在传递 -X
参数一样。 (FWIW,我的终端报告它是 xterm-256color。)
要查看 Git 正在使用哪个寻呼机,您可以使用 git var GIT_PAGER
。要找出 Git 参考的选项顺序,可以使用 运行 git var --help
;手册页列出了选项的顺序。
请注意,默认情况下 Git 通过设置一些环境变量来调用寻呼机时设置一些选项。默认的编译时行为是设置 LESS=FRX
和 LV=-c
。如果您不需要这些选项,您可以通过自己设置环境变量来覆盖它们,在这种情况下,您的设置将覆盖 Git 的默认值。
当我 运行 git diff
在某些文件上时,它使用的是什么寻呼机?我问是因为对于我在 Linux 中与寻呼机一起使用的所有其他命令行工具,当我退出时(通过键入 'q'),终端会恢复到之前显示的状态,这是我唯一的证据运行 s.t。作为命令行本身。例如:
> git help diff
>
与 man
、less
本身等相同。但是当我 运行 git diff
时,整个差异都保留在屏幕上,即使它是数百个线长。所以如果我想查看以前命令的输出,我必须向后滚动。
这似乎是 less -X
的行为,"Disables sending the termcap initialization and deinitialization strings to the terminal"。
我已经阅读了 git diff
的文档,但是我在任何地方都没有看到它说明如何将终端恢复到 运行 差异之前的状态。我可以 export PAGER=/bin/less
,但这没有效果(它可能是 git diff
的默认寻呼机)。
可能 git diff
以某种方式将 -X
参数传递给 less
。但如果是这样,我无论如何也看不到关闭该行为(less
的手册页对此保持沉默)。
相关:https://unix.stackexchange.com/questions/167735/can-less-f-be-usefully-combined-with-termcap-initialization。但这并没有告诉我为什么 git diff
的行为就好像它正在传递 -X
参数一样。 (FWIW,我的终端报告它是 xterm-256color。)
要查看 Git 正在使用哪个寻呼机,您可以使用 git var GIT_PAGER
。要找出 Git 参考的选项顺序,可以使用 运行 git var --help
;手册页列出了选项的顺序。
请注意,默认情况下 Git 通过设置一些环境变量来调用寻呼机时设置一些选项。默认的编译时行为是设置 LESS=FRX
和 LV=-c
。如果您不需要这些选项,您可以通过自己设置环境变量来覆盖它们,在这种情况下,您的设置将覆盖 Git 的默认值。