ZSH终端中的Git Log

5

我记得在一个Git教程视频中,用户的终端(可能是ZSH)被分成两个部分;一个用于标准终端命令,下面有类似Git日志图形表示的东西。它始终以漂亮的颜色显示在终端底部。

terminal screen.

如何将终端屏幕分成两个并在屏幕上显示Git日志(类似于git log --pretty=format:'%h : %s' --graph)?更新:我在Vimeo上找到了视频http://vimeo.com/16018419,我正在尝试在我的ZSH终端上进行完全相同的设置。

1
从视频中看,他正在使用GNU screen进行窗口分割。如果你在6:28左右观察,他还需要手动刷新显示。你可以通过标准的屏幕分割并按下q/up键重新运行命令来完成这个操作;或者你也可以通过循环运行它来自动每10秒刷新一次。 - Danica
1
如果您查看终端标题栏,它会显示屏幕,并且那些状态行看起来像是屏幕。滚动条在Terminal.app / iTerm.app中,而不是屏幕,因此它覆盖整个内容是有道理的。我不确定他是如何刷新的(您说得对,它不是重新运行shell命令),但重新运行应该具有相同的效果...也许他有一个后台进程写入文件,并执行一些编辑器咒语以重新加载文件(或者只是在编辑器内部重新运行命令),不确定。 - Danica
你不能刷新终端窗口(这意思不太清楚)。他可能正在执行某种编辑器命令,比如vim映射或其他操作,重新运行一个命令,或者重新加载另一个命令在后台写入的文件。无论如何,我不知道为什么有完全相同的设置很重要,因为你可以通过在vim中将“:!git log ..... >%”映射到按键来获得相同的效果。 - Danica
是的,但我只是想知道他是否在使用特殊的应用程序。我在Twitter上找到了他。他回复说他正在使用tmux(http://tmux.sourceforge.net/)。 - Burak Erdem
FYI,视频作者Mark在vimeo上的评论中解释说他使用带有tmux支持的iTerm2。因此,@josh-mcgee的解决方案应该非常适合。 - mloskot
显示剩余2条评论
3个回答

6
使用tmux,您可以split-pane zsh -c while :; do sleep 60; git log ...; done,这样应该可以在一个分区中自动刷新git日志输出。
向split-pane提供[-vh] [percent]以使用给定终端百分比分割vert或horiz。我想起来,它从终端的底部和/或右侧分割,因此请相应地调整百分比。
这应该具有在$EDITOR旁边(或下方)具有git日志,适当的尺寸和每分钟自动刷新的所需效果。随意更改或清理语法以满足您的需求。
编辑: 在tmux中重新生成窗格可以使用内置的respawn-pane。您可以绑定键,例如按以下方式获得简单快捷方式
bind-key -n M-r respawn-pane -t git:0.1 [command]
在此示例中,我假设3件事情。首先,您拥有一个命名的tmux会话(名为git,但这是任意的,可以使用rename-session在tmux中选择或使用new-session -s name启动会话)。其次,git日志(我们要刷新的内容)位于索引为0的窗口中(这是会话中默认打开的第一个窗口,除非您将base-index设置为其他值),并且是索引为1的窗格。
因此,在这里,它通过按alt-r重新生成在“git”会话中第一个窗口的第二个窗格。如果您使用我之前提供的循环,则无需执行此操作,因为日志将在每个睡眠后自动刷新。对某些人来说,这可能被认为是浪费的,因此您可以任意决定何时重新生成此窗格。
[command]是可选的。tmux的respawn-pane将在首次生成窗格时执行给定的命令。在这个例子中,默认情况下将是while循环。如果跳过循环而仅使用split-pane [-hv] [percent] "git log ...",则不要提供可选的命令参数,因为窗格会智能地运行它。提供respawn-pane命令参数将优先于生成窗格时使用的初始命令。
最后,如果您不提供split-pane的命令参数,tmux将运行default-command的任何值。
这样,您就有了一个多余的方法解释如何做这个视频中多种方法的详细说明。

2

git log --oneline --graph --decorate --color=always 用于显示 git 日志输出。

终端分屏功能取决于您的控制台。


我知道Git log命令。我在Ubuntu 12和Mac OS X 1.7上都使用ZSH,并且我正在寻找将终端分成两个部分并在底部显示Git日志的方法。无论如何,谢谢 :) - Burak Erdem
@BurakErdem,你的问题似乎应该属于SuperUser。 - KurzedMetal

1

好的,

他在Mac上使用iTerm,分割是默认的,您只需要进入菜单或使用任何快捷命令即可。您可以在Ubuntu / Linux上使用terminator进行操作。如果您想继续使用gnome-terminal,则可以使用screen或tmux来模拟此操作。

在日志中,他正在使用tig(http://jonas.nitro.dk/tig/):一个git浏览工具。它很容易安装。顺便说一句,您可以使用watch自动更新日志,这样您就可以在终端的另一部分拥有“自动日志”。;)

watch git log --graph

在这里,我正在控制台中使用tmux:

Using tmux with some applications


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