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 log
或git show
遇到了麻烦。
以前,例如,git log
结果只是终端的一部分,就像ls -l
结果一样。按q
键退出git log
后,结果仍保留在终端屏幕中。我能够轻松选择一些哈希 id。
但是,当前的问题是git log
(或git show
)结果替换了屏幕。所以,在退出git log
后,终端会彻底删除所有git
的结果,回到原来的画面。这种行为类似于vim
。
即使使用bash
或 Mac 的默认终端应用程序,此行为也是相同的。这不是--no-pager
的问题。
任何帮助将不胜感激。
【问题讨论】:
您是否将PAGER
设置为任何内容? PAGER=/bin/cat
或 PAGER=/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 等替换终端屏幕的主要内容,如果未能解决你的问题,请参考以下文章