使用Vim的目录比较插件DirDiff来显示Git改动

Wed 04 February 2015 / In categories Dev Tools

Git, Vim

使用git的时候常常要用到文件比较工具,图形界面下可选的文件比较工具非常多,但是在终端下好用的就寥寥无几了。

Vim作为一款强大的文本编辑器,自带有文件比较功能。可惜Vim的文件比较功能只能用来查看文件的差异,不能对比目录。不过好在Vim有海量的扩展,有一款扩展可以弥补这个缺憾,就是DirDiff

下面介绍如何在git中使用Vim的DiffDir插件。

首先我们在~/.gitconfig里面自定义一个difftool叫vimdiffdir:

[difftool "vimdiffdir"]
cmd = vim -X -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE

我们就可以在git的difftool命令中调用vimdiffdir:

git difftool -d -t vimdiffdir $COMMIT1 $COMMIT2

方便起见,我们可以为vimdiffdir起一个同名的别名:

[alias]
vimdiffdir = difftool -d -t vimdiffdir

来简化了vimdiffdir的使用:

git vimdiffdir $COMMIT1 $COMMIT2

git有一个show命令来显示某个commit的改动,有了vimdiffdir,我们也可以自定义一个vimshow命令来在Vim中查看commit的改动,这需要在~/.gitconfig中加入:

[alias]
vimshow = "!f() { git vimdiffdir $1^ $1; }; f"

然后就可以:

git vimshow $COMMIT

大功告成!

参考:git-vimdiff-and-dirdiff

Load Disqus Comments