在类nuix平台,我们希望对文件之间的差异之间快速定位,希望能够很容易的进行文件合并……。
可以使用Vim提供的diff模式,通常称作vimdiff,就是这样一个能满足所有这些需求,甚至能够提供更多的强力工具。
首先保证系统中的diff命令是可用的。Vim的diff模式是依赖于diff命令的。Vimdiff的基本用法就是:
$ vimdiff FILE_LEFT FILE_RIGHT
或者
$ vim -d FILE_LEFT FILE_RIGHT
跳转到下一个diff点:使用]c
命令
跳转到上一个diff点:使用[c
命令
如果希望手工修改某一行,可以直接使用通常的vim操作进行修改。
如果希望在两个文件之间来回跳转,可以用下列命令序列:Ctrl-w,w
如果想交换上/下、左/右两个分隔窗口的位置,可以使用 命令序列:Ctrl-w,r
如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令:dp
(diff put)
如果希望把另一个文件的内容复制到当前行中,可以使用命令:do
(diff obtain)
在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,以便实时地反映比较结果。但是有时候会处理失败,这个时候就需要手工来刷新::diffupdate
zo
(folding open) 打开折叠代码。之所以用z这个字母,是因为它看上去比较像折叠着的纸。
zc
(folding close) 重新折叠起来。
git diff
命令可以用来显示文件差异。
git difftool
命令可以使用外部工具来显示文件差异。可使用–extcmd参数指定具体的diff工具:
$ git difftool --extcmd vimdiff FILE_NAME
$ git config --global diff.tool vimdiff
$ git config --global difftool.prompt false # 设置difftool使用vimdiff时不弹出二次提示
如果不加具体的文件,那么默认是一个一个的比对文件。可使用:qa退出单个文件,如果想使用:cq退出整个比对,需要增加如下参数:
$ git config --global difftool.trustExitCode true
此时git diff
一样可以使用,它使用的还是默认的格式,git difftool
使用的是vimdiff
显示。
可以使用git difftool --staged
查看暂存区的修改。
可以使用git difftool commit1-sha commit2-sha
在两次提交之间比较。