git log/show 等替换终端屏幕

Posted

技术标签:

【中文标题】git log/show 等替换终端屏幕【英文标题】:git log/show etc. replaces the terminal screen 【发布时间】:2016-02-09 02:07:29 【问题描述】:

我最近开始在 iTerm2 上使用zsh(oh-my-zsh,没有自定义)。但是,我在git loggit show 遇到了麻烦。

以前,例如,git log 结果只是终端的一部分,就像ls -l 结果一样。按q 键退出git log 后,结果仍保留在终端屏幕中。我能够轻松选择一些哈希 id。

但是,当前的问题是git log(或git show)结果替换了屏幕。所以,在退出git log后,终端会彻底删除所有git的结果,回到原来的画面。这种行为类似于vim

即使使用bash 或 Mac 的默认终端应用程序,此行为也是相同的。这不是--no-pager的问题。

任何帮助将不胜感激。

【问题讨论】:

您是否将PAGER 设置为任何内容? PAGER=/bin/catPAGER=/usr/bin/less 似乎是明智的选择。我的环境中的默认值是像/usr/bin/less 这样的运算符,当该值未设置时。 谢谢。 which $PAGER/usr/bin/less.. /bin/cat 有你想要的行为吗? 听起来像这里讨论的less 问题:***.com/questions/6977781/… 【参考方案1】:

你可以试试:

git config --global --replace-all core.pager "less -F -X"

来自“如何防止 git diff 使用寻呼机?”:

-F 选项传递给less 会导致它在内容少于一屏时退出,但是这样做之后屏幕会重置并且您最终看不到内容-X 选项消除了这种行为。

【讨论】:

非常感谢。它解决了问题!哇,这么多隐藏的选项和奇怪的行为。【参考方案2】:

oh-my-zsh 使用-R 标志执行less,您可以运行unset LESS 以回退到默认行为。

如果你想让这个改变持久化,把这个命令放到.zshrc

【讨论】:

谢谢,它有效。我也认为它与 oh-my-szh 有所不同,因为 git log 在普通 bash shell 中仍然可以正常工作 您可以深入研究 .zshrc 和其他 zsh 设置来为 less 设置正确的标志。 我认为这是更好的答案,因为它可以缓解根本原因。更改 git 配置对我没有帮助,例如aws 别名。 我更喜欢这种方法。刚刚终于升级到 Catalina,这整个“新页面”都让我烦恼! :D 结合这两个答案,也可以设置LESS=-RFX

以上是关于git log/show 等替换终端屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 bash 删除和替换终端中的最后一行?

安卓4.2用adb 获取屏幕分辨率等信息

如何用android studio替换所有屏幕尺寸图像的可绘制图像?

如何在终端中退出“git status”列表?

如何使 git-log 向上滚动而不是向下滚动

移动适配请使用比rem等更好的布局方案