当我使用Git Bash(Git For Windows)时,如果一个命令(比如git diff)有一个短输出(我猜测小于终端的高度)它只会打印为输出,现在在Babun(Cygwin)每个Git命令似乎即使它是一条线或完全空的,也要少看."每一个"都可能过于大胆,git status不是.看起来其中一个中有一些预捆绑设置,另一个没有,我不知道它是什么.
我怎样才能使Git表现得如此,当输出短时它不会少用,而只是输出它.
编辑:在git bash中我的git寻呼机是' less -x4'(4个宽度标签),没有-F.此外,环境变量LESS,PAGER以及GIT_PAGER是空的.所以我不知道为什么git bash表现得像这样,但幸运的是我已经得到了一些关于如何让Babun(Cygwin)开始的帮助.
事后更新:(这可能是错误的,请参阅2017-01-12注释.)我认为Git For Windows和/或默认终端在关闭时不会擦除屏幕 - 我在其他地方看到这种行为无关(关闭较少,屏幕没有被擦除)所以我认为这是正在发生的事情.为什么Cygwin和mintty终端在Windows终端上擦除和MINGW(或者Msys2?Whatever For Windows使用)并不是我的知识领域.
后见之明更新帖子谷歌搜索:结果显示上述启示足以让谷歌获得解决方案!我现在就发布.
2017-01-12:看起来并没有正确地擦拭它,因为 LESS没有设置.根据man git config......
Run Code Online (Sandbox Code Playgroud)core.pager [...] When the LESS environment variable is unset, Git sets it to FRX (if LESS environment variable is set, Git does not change it at all). If you want to selectively override Git’s default setting for LESS, you can set core.pager to e.g. less -S. This will be passed to the shell by Git, which will translate the final command to LESS=FRX less -S. [...]
Cap*_*Man 17
Schwern的回答是正确的.对于我的要求它可能仍然是正确的答案,我只是使用不正确的单词.我想要的不是这个:
Run Code Online (Sandbox Code Playgroud)-F or --quit-if-one-screen Causes less to automatically exit if the entire file can be dis? played on the first screen.
这对于短输出没有任何意义!如果core.pager是,less -F并且您的日志少于一个屏幕,则什么也看不见.
你可能想要的是less -FX或者也许less -X.
Run Code Online (Sandbox Code Playgroud)-X or --no-init Disables sending the termcap initialization and deinitialization strings to the terminal. This is sometimes desirable if the deinitialization string does something unnecessary, like clear? ing the screen.
超级用户的这个问题让我想到了这一点.
使用-FX如果日志小于一个屏幕那么它只是将其输出(仿佛cat).
如果输出小于一个屏幕,则仅使用-X仍将打开less,但q如果您不q使用,则将其保留在终端上,如果您不立即使用,则实际上可以less正常使用.一旦你尝试搜索虽然它使它变得"真实"少,并且仍然不会在完成时擦除,这很烦人,因为窗口现在充满了~.
lesscat使用一样less -XFless -X,但你必须仍然按下q.快速回答:将以下行保存到您的 .bashrc
export LESS=eFRX
Run Code Online (Sandbox Code Playgroud)
How do I Prevent git diff from using a pager?的答案涵盖了原因和原因。OP实际上希望完全删除分页。