【问题标题】:vimdiff as a merge toolvimdiff 作为合并工具
【发布时间】:2009-12-27 18:08:14
【问题描述】:
vimdiff 有助于以图形方式显示两个文件的差异,并允许我们从左到右/从右到左选择更改。
我正在处理的文件是巨大的文件,vimdiff 报告的大多数差异都可以自动合并,除了少数几个。因为在 vimdiff 中逐个比较并采取行动需要很多时间。
我想知道 vimdiff 中是否有一个选项可以自动合并左右文件中的差异,只要没有歧义,并留下类似于工具 svn merge 和 cvs merge 工具的冲突解决方案吗?
【问题讨论】:
标签:
merge
diff
vim
vimdiff
【解决方案1】:
不可能自动合并两个文件中的更改,除非我们有一个基础副本,其中这两个文件分支并单独完成更改。如果一个项目在一侧而不在另一侧,则无法判断该项目是新添加的还是现有项目被删除。由于在合并存储库中的文件时存在基础副本,因此 cvs merge,svn merge 可以自动合并更改。
【解决方案2】:
如果你不使用版本控制,你可以尝试这种方式进行差异和补丁:
- 在更改文件(例如 file.txt)之前,请备份原始版本 (file.orig)。
- 进行更改后,制作补丁文件:
diff file.orig file.txt >patch.txt
- 获取要合并更改的文件(例如,file2.txt)。
- 使用补丁:
patch file2.txt patch.txt
更改将被合并,冲突的行将被放置在一个单独的文件中。
【解决方案3】:
看起来 vimdiff 不允许这样做。手册页说
"vimdiff - 使用 Vim 编辑文件的两个或三个版本并显示差异"
但是你可以看看Kdiff3,它可以让你比较和合并。