scmdiff标记了文件的签入版本与正在编辑的文件之间的差异。它通过着色改变的线条来标记它。有没有办法使用vimdiff
样式拆分来查看更改,而不是仅仅更改已更改的行?
例如,如果abc
是版本控制下的文件,那么我可以使用以下内容在一侧显示abc
的当前版本,在另一端显示最新版本:
tkdiff abc
我也可以这样做:
tkdiff -r1 -r5 abc
显示版本1和5之间的差异。最后,我可以这样做:
tkdiff -r1 abc
查看当前版本与版本1之间的区别。
这是我希望在两个版本的文件之间看到的差异,只使用Vim。可以吗?我在Linux下工作,我使用Bitkeeper进行版本控制。
答案 0 :(得分:8)
我通过以下方式使用vimdiff进行颠覆:
当我想查看特定文件或一组文件的vimdiff差异时:
svn diff [files] --diff-cmd svd
这里--diff-cmd指示subversion使用命令“svd”而不是默认的diff行为。 svd是以下shell脚本:
#!/bin/bash
shift 5; /usr/bin/vimdiff -f "$@"
你没有提到你的操作系统,上面的内容肯定适用于Linux和OS X.
答案 1 :(得分:8)
我使用vcscommand插件与VCS进行交互。
来自说明:
VIM 7插件可用于操作由VIM中的CVS,SVN,SVK和git控制的文件,包括使用vimdiff系统提交更改和执行差异。
特别是:VCSVimDiff
将拆分当前窗口,并在repo中显示最新版本的“vimdiff”。您还可以指定一个修订号以将当前缓冲区与(即:VCSVimDiff -2
)进行比较,或者将两个修订号进行比较以相互区分。以下是文档中的相关部分:
:VCSVimDiff
使用vimdiff显示当前版本之间的差异 文件。
如果未指定修订,则启用该文件的最新版本 使用当前分支。使用一个参数,使用该参数 如上所述。有两个论点,两者之间的区别 使用vimdiff显示两个修订版。
使用零个或一个参数,原始缓冲区用于执行 vimdiff。当暂存缓冲区关闭时,原始缓冲区 将返回正常模式。
使用上述方法启动vimdiff模式后,额外的vimdiff 可以通过将单个版本参数传递给缓冲区来添加缓冲区 命令。总共最多可以有4个vimdiff缓冲区。
使用命令的2参数形式将vimdiff重置为仅2 版本。此外,在不同的文件上调用该命令将 关闭以前的vimdiff缓冲区。
答案 2 :(得分:2)
VCSCommand插件在这种情况下非常有用,它也可以与SVN,CVS和其他存储库无缝连接。 :VCSVimDiff
在缓冲区中加载的文件和存储库中的副本之间应用vimdiff。
答案 3 :(得分:1)
我是bazaar's vimdiff plugin的快乐用户。对于git,可以使用gitvimdiff(可以使用多个other solution)。 Mercurial can do this也是。
答案 4 :(得分:0)
对于ClearCase VCS,存在plug-in,它也能满足您的需求。