有 VIM Git 时间表吗?

Is there a VIM Git timeline?

到目前为止,我正在尝试了解如何将 :Glog:Gdiff 结合使用,以创建像 Atom 编辑器的 git-time-machine 插件这样的漂亮概述:

概述存在 3 windows

  1. 左边:工作副本中的当前文件。
  2. 右边:文件的前一个版本。
  3. 在底部:一个包含历史条目的快速修复列表。

当我select 从quickfix 列表中提交时,版本将被放置在右侧window。不要忘记突出显示的区别。

有人可以帮助我吗? :)

我不知道有完全类似的插件。但是有 gitv,这就像 vim.

的 gitk

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

Source

您可以使用以下命令来模拟您所描述行为的粗略版本。

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

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

  • 运行 :vsplit 将您的工作空间一分为二 windows
  • 然后<C-w><C-h>激活左拆分
  • 然后 运行 :Gedit,加载您正在查看的文件的工作副本版本
  • 然后 :windo diffthis

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

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

  • 使用<C-w><C-l>激活右拆分
  • 使用 :cprev/:cnext 去 back/forwards 通过 quickfix 列表(右拆分 window 将移出 diffmode,但左拆分保持 diffmode )
  • 运行 :diffthis 激活当前缓冲区和工作副本之间的差异

当你看完差异后,运行:

  • :diffoff! 禁用 diff 模式
  • :only 将您的工作区折叠成一个单独的拆分
  • 可选地,使用 :Gedit 切换回您正在使用的文件的工作副本

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