从mac终端向下滚动git diff

时间:2015-09-09 00:35:17

标签: git macos

我在OS X 10 Yosemite的终端上使用git。

当我做git diff时,我会得到很长的变化列表,有时候我只需要滚动到最后但是除了在MacBook pro上保持keydown然后它慢慢滚动之外我无法想办法做到这一点

如果我按下FN +向下键,那么它不会滚动,除非我已经使用向下按钮向下滚动,但不会再往下走......

任何建议都会很感激,这很烦人...... :(

6 个答案:

答案 0 :(得分:3)

您可以使用任何较少的命令来导航历史记录。 See: frequently used less commands

实施例: 在终端的左下角,你必须看到这样的东西。 enter image description here

在上面的例子中,历史记录有221行,其中当前窗口显示第21-62行。

直接转到行号: 您可以通过键入

直接转到一行
line-number (followed by) g   (no spaces necessary)

例如:要转到第100行,只需输入100g

即可

跳过x行数 输入一个数字,然后按Enter键。

向下滚动并向下滚动 使用Fn

或者使用以下替代品。

点击空格键。正如ILI建议的那样。

向上滚动

点击' w'

回家

左箭头 结束 Fn右箭

答案 1 :(得分:2)

brew install less
git config --global core.pager "less -+\$LESS -RSF"

安装较新版本的 less 修复了 -F 导致小输出在没有 -X 的情况下完全消失的错误,然后配置命令删除了 -X,这就是滚动中断的原因。< /p>

这将用最新版本替换 MacOS 附带的 less 版本,但由于它们是相同的实用程序(与 GNU coreutils 与 BSD coreutils 不同),因此这不会破坏事情。

说明

这是对 ognockocaten's answer 的扩展。

该答案表明:

git config --global core.pager "less -+\$LESS -RS"

这删除了两个选项:

-F / --quit-if-one-screen

<块引用>

如果整个文件可以显示在第一个屏幕上,则导致less自动退出。

-X / --no-init

<块引用>

-X 禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串做了一些不必要的事情,比如清除屏幕,这有时是可取的。

这适用于手头的问题,但不是最理想的,因为无论输出有多小,less 都将始终切换到备用页面。因此,即使对于 git diff 这样的小命令,您也会看到完整的备用屏幕。

仔细阅读,似乎重新添加 -F 可以解决此问题。但是,两件事情的组合会导致此中断:

  • 在带有 487 的 less MacOS 版本上,less 将首先切换到备用屏幕,然后检查文本是否足够小,从而将输出打印到备用屏幕缓冲区。此问题已在版本 530 中修复(请参阅 https://unix.stackexchange.com/a/107355/39135
  • 在 MacOS 上,如果没有 -X,从备用缓冲区切换回主缓冲区会清除屏幕,从而擦除刚刚打印到备用屏幕缓冲区的所有文本。

因此,只需重新添加 -F,您的小输出就会被完全擦除,就好像它们从未被打印过一样。我们无法重新添加 -X 来解决此问题,因为这会中断滚动,但我们可以更新到更新版本的 less

因此这一切都结合在一起 - 我们可以使用自制软件来安装最新的稳定 less 版本,然后根据本文开头的命令块配置寻呼机以包含 -F 选项发布。

答案 2 :(得分:1)

每mzabaluev的评论:

  

OS X终端具有一些不可思议的魔术集成,但破坏了   当less作为子进程由git运行时:当git diff |减,   可以通过触摸板手势向前滚动,但是通过   git diff的输出,它仅滚动终端输出,无法分辨   少滚动。有趣的是,git help不会遭受   这个问题。 – mzabaluev 1月4日0:39

此魔术还包括启用向上翻页(FN + up)和向下翻页(FN + down)。

解决此问题的一种快速而肮脏的方法是使用以下方法自己调用less

git diff --color=always | less -r

命令行选项保留git的彩色输出。我来自Can less retain colored output?

答案 3 :(得分:0)

最简单的方法是使用less读取diff输出。您需要使用--color-R选项来保持颜色。

git diff --color | less -R`

这对我来说很好。

您可以为此命令创建一个宏。

答案 4 :(得分:0)

git config --global core.pager "less -+\$LESS -RS"

在我的新macOS笔记本电脑上,git log滚动按我的预期工作(上一页/下一页按钮正常工作,颜色,滚轮滚动)。我是从旧笔记本电脑上的日志中获得的。我不确定它的来源或确切功能,因此,如果您知道,请随时进行更新。

答案 5 :(得分:0)

只需在h之后在打开较少的终端中按git diff,它就会调用带有快捷方式的帮助窗口

screenshot with less help text