有没有VIM Git时间表?

时间:2016-07-19 20:46:05

标签: git vim vim-fugitive neovim

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

enter image description here

概述存在3个窗口

  1. 左侧 :工作副本中的当前文件。
  2. 右侧 :该文件的先前版本之一。
  3. 在底部 :一个快速修复列表,其中包含历史记录中的条目。
  4. 当我从quickfix列表中选择一个提交时,该版本将被放置在右侧窗口中。不要忘记突出显示的差异。

    有人能帮助我吗? :)

2 个答案:

答案 0 :(得分:6)

我不知道插件就是这样的。但是有gitv,就像vim的gitk一样。

screenshot of gitv

即使它目前没有被积极维护,但它的工作效果还不错恕我直言。

screenshot of gitv

screenshot of gitv Source

答案 1 :(得分:1)

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

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

到目前为止,这是基本用法。现在假设您发现自己正在查看要与工作副本区分的文件的先前版本。这是你如何做到的:

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

轰!你有一个差异,左边是工作副本,右边是上一个版本。

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

  • 使用<C-w><C-l>激活正确的拆分
  • 使用:cprev / :cnext通过quickfix列表返回/转发(右侧分割窗口将移出diffmode,但左侧分割仍保留在diffmode中)
  • 运行:diffthis以激活当前缓冲区和工作副本之间的差异

当你看完差异后,运行:

  • :diffoff!禁用差异模式
  • :only将您的工作区折叠为单个拆分
  • 可选择使用:Gedit切换回您正在使用的文件的工作副本

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