git log/show等取代终端屏幕

44

我最近开始在iTerm2上使用zsh(未定制版的oh-my-zsh)。但是,在git loggit show中遇到了问题。

以前,例如git log结果只是终端的一部分,就像ls -l结果一样。在按下q键退出git log后,结果仍然留在终端屏幕上。我可以轻松地选择一些哈希值。

然而,当前的问题是git log(或git show)结果替换了屏幕。因此,在退出git log后,终端完全删除所有git结果并返回到原始屏幕。这个行为就像vim

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

任何帮助都将不胜感激。


2
你有设置PAGER吗?PAGER=/bin/cat或者PAGER=/usr/bin/less看起来是合理的选项。在我的环境中,当该值未设置时,默认操作符为/usr/bin/less - Jameson
谢谢。which $PAGER 给出 /usr/bin/less - Nullptr
/bin/cat 是否具有你想要的行为? - Jameson
3
听起来像是这里讨论的一个“less”问题:https://dev59.com/L1rUa4cB1Zd3GeqPfwfd。 - max630
2个回答

59

你可以尝试以下方法:

git config --global --replace-all core.pager "less -F -X"
从“如何防止 git diff 使用分页器?”:
传递-F选项给less会导致如果内容少于一个屏幕,则退出,但是这样做后,屏幕会重置,你最终看不到内容-X选项消除了这种行为

非常感谢,它解决了问题!哇,有这么多隐藏选项和奇怪的行为。 - Nullptr

56

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

如果您想要使这个更改持久化,请将此命令放入 .zshrc 文件中。


谢谢,它有效。我也认为这是从oh-my-szh更改的,因为在正常的bash shell中git log仍然可以正常工作。 - banhbaochay
你可以深入研究.zshrc和其他zsh设置,为less设置正确的标志。 - Alex Maystrenko
1
我认为这是更好的答案,因为它可以缓解根本原因。更改 git 配置对我没有帮助,例如 aws 别名。 - Jan Groth
2
我更喜欢这种方法。最近升级到Catalina,这个“新页面”让我很烦恼!:D - Rob Hodges
2
结合这两个答案,你也可以设置 LESS=-RFX - redbmk
我的救星!我差点又要拿起Tony Buzan的《利用你的记忆》来帮助我记住那些SHA1了。现在我可以再次将它们复制。 - Pshemy108

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接