使用vimdiff处理差异文件

46

我该如何使用vimdiff查看diff文件中描述的差异?


4个回答

58

不要使用/usr/bin/vimdiff命令,尝试使用以下命令:

$ vim file
:vertical diffpatch path/to/diff

(简写为:vert diffpa)
这相当于对比原始文件和随后修补的文件调用vimdiff,但是vim会帮你调用临时文件上的patch

编辑

如果您想让vim的diff-mode自动进入,请使用以下命令:

$ vim file +'vert diffpa path/to/diff'

其中+commandvim执行"command"。(+123跳到第123行,+/abc跳到第一个匹配"abc"的位置,都有记录文档。)

关于Ken的问题:如果差异文件包括应用于当前未编辑的其他文件的内容,不用担心;vim在下面调用patch可执行文件,并询问这些神秘缺失文件的位置,您可以告诉patch跳过这些部分。


2
不错!但是如果文件包含其他文件的差异,你可能应该警告副作用的风险? - Ken
这对于单个文件非常有效。谢谢!我不知道diffpatch。 - Adam Monsen
有没有一种方法可以在不将差异文件保存到磁盘的情况下完成这个操作?类似于::vert diffpatch - !git diff file?(我知道对于 git diff 有更好的解决方案,但我很好奇是否可以在一般情况下实现这一点) - mwcz

3

从另一个方向来看,我编写了一个Vim插件,可以显示文件自上次保存以来所做的更改,可以选择vimdiff或统一的差异格式。

在这里获取:diffchanges.vim


1
我认为最好早存、经常存,并使用Gundo:http://sjl.bitbucket.org/gundo.vim/。 - Andrei Sosnin

2

1

您能详细说明一下为什么要使用vimdiff吗?

例如,您是否想要可视化(统一)差异文件中每个字符的差异? 如果是这样,有人回答了我的问题,并提出了一个建议,基本上只需在差异文件上启动emacs,然后按ALT-n循环浏览hunks,途中会很好地突出显示每个单词或每个字符的更改(类似于vimdiff)。它很有效,但是为了做到这一点而启动emacs有点麻烦。我只知道足够的emacs来完成这项任务,然后退出而不会弄乱补丁。 :)

无论如何,Emacs 的答案给了我一些想法。我相信 Vim 可以被劝说为 diff 文件提供更好的高亮显示,也许更像 ediff。我曾经调查过这个问题,vim 用户列表中有人提出了优秀的建议:整合 google-diff-match-patch。例如,可以从 Python Vim ftplugin 中使用 Python 接口。

对不起,我使用“回答”来回复,当我想说的话太多而“添加评论”的格式受到限制时。

为了长久保存, 在这里有另一个类似问题的参考(已经链接到这里)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接