7

到目前为止,我正在尝试了解如何与:Glog结合使用:Gdiff,以创建一个很好的概述,例如Atom 编辑器的git-time-machine插件:

在此处输入图像描述

存在3个窗口的概述

  1. 左侧:工作副本中的当前文件。
  2. 右侧:文件的先前版本之一。
  3. 在底部:一个快速修复列表,其中包含来自历史记录的条目。

当我从 quickfix 列表中选择一个提交时,该版本将被放置在右侧窗口中。不要忘记突出显示的差异。

有人能帮我吗?:)

4

2 回答 2

6

我不知道有一个完全一样的插件。但是有gitv,它就像 vim 的 gitk 。

gitv截图

尽管它目前没有得到积极维护,但它运行良好恕我直言。

gitv截图

gitv截图 资源

于 2016-07-24T01:58:51.700 回答
1

以下是一些可用于模拟您所描述行为的粗略版本的命令。

  • 首先,打开您感兴趣的文件
  • 运行:only以关闭任何其他拆分窗口
  • 运行:Glog以使用文件的所有过去修订版填充快速修复列表
  • 请注意,您现在正在查看 quickfix 列表中的第一项,它应该是文件的最近提交版本
  • :cnext使用and前后遍历 quickfix 列表:cprev

到目前为止,这是基本用法。现在假设您发现自己正在查看要与工作副本进行比较的文件的先前版本。您可以这样做:

  • 运行:vsplit将您的工作区分成两个拆分窗口
  • 然后<C-w><C-h>激活左拆分
  • 然后运行:Gedit,它会加载您正在查看的文件的工作副本版本
  • 然后:windo diffthis

繁荣!左边是工作副本,右边是以前的版本。

现在假设您希望将工作副本保留在左侧拆分中,同时在右侧拆分中遍历其他过去的版本:

  • 用于<C-w><C-l>激活右拆分
  • 使用:cprev/:cnext在快速修复列表中后退/前进(右侧拆分窗口将移出差异模式,但左侧拆分仍处于差异模式)
  • 运行:diffthis以激活当前缓冲区和工作副本之间的差异

完成查看差异后,运行:

  • :diffoff!禁用差异模式
  • 并将:only您的工作区折叠成一个拆分
  • (可选)用于:Gedit切换回您正在使用的文件的工作副本

您可以使用 Vimscript 自动执行其中一些步骤,还可以按照您建议的方式在屏幕底部添加快速修复窗口。这将是一个整洁的插件!就个人而言,我很乐意手动运行这些命令。这个工作流程在写出来时看起来很复杂,但随着练习它可以成为第二天性。

于 2017-01-10T22:41:07.617 回答