我在终端使用Git。当我必须进行一些更改时,我使用git diff
来查看我更改了什么。我希望输出结果留在终端中,这样我可以在按Q后查看它,因为当我按Q时,结果都消失了。
这是因为Git通过分页器输出它。相反,使用:
git --no-pager diff
默认配置设置为使用寻呼机,您可以将此默认设置更改为使用cat
,以防止必须使用git config --global core.pager cat
输入--no-pager
。你可以在这里的文档中阅读更多。
通过分页器输出到STDOUT
要复杂得多,并且需要超出常规Unix重定向和管道范围的工具。您可以使用tee
将输出重定向到STDERR
,并通过管道将输出重定向到less
,这给人一种您想要的错觉。注意,这是一个hack,滥用了STDERR
git diff | tee /dev/stderr | less
您所经历的是由于git
通过分页器(通常是less
)管道输出。默认情况下,less
会发送终端初始化和去初始化序列,去初始化序列会导致屏幕清屏。
要停止这种行为,你可以通过git config core设置一些不同的东西。或者,更有可能的是,您设置了LESS
环境变量,而git
只是在使用它。在本例中,您希望在LESS
环境变量中包含X
选项。-X
与--no-init
相同,会导致less
停止向屏幕输出去初始化序列,从而阻止其被清除。默认情况下,当git
看到LESS
未设置时,它默认为FRX
,其中包括保持屏幕不清除的选项。
总的来说,我也不喜欢less
和内容一起消失。我通常将LESS
环境变量设置为eFRX
:
export LESS=eFRX
e
是一种退出的方式,当我击中文件的结尾,并试图页过去。F
说,如果只有一个屏幕的内容,就退出。R
有助于解释ANSI颜色代码(您将需要git diff
), X
使其在退出前停止清除屏幕。
less
的程序会让你更开心。