46

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

4

4 回答 4

57

而不是使用/usr/bin/vimdiff命令,试试这个:

$vim 文件
:vertical diffpatch path/to/diff

:vert diffpa简称。)
这相当于调用vimdiff原始文件和随后的修补文件,但为您vim调用patch一个临时文件。

编辑

如果您希望vim自动输入 diff-mode,请使用以下命令:

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

where+command要求vim执行“命令”。(+123跳到第 123 行,+/abc跳到“abc”的第一个匹配项,这一切都记录在案了。)

关于 Ken 的查询:如果 diff 文件包含应用于您当前正在编辑的文件以外的文件的块,不用担心;vim调用patch下面的可执行文件,它将询问这些神秘丢失文件的位置,您可以告诉您patch跳过这些大块。

于 2008-10-28T20:34:51.360 回答
3

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

在这里获取:diffchanges.vim

于 2008-10-29T16:39:14.550 回答
2

制作原始文件的副本,应用差异,然后

vimdiff original_file patched_file

您还可以查看vim.org 脚本,这些脚本是为处理 svn diff 输出而编写的。如果您从版本控制系统生成差异,请查看 vcscommand.vim:CVS/SVN/SVK/git integration plugin

于 2008-10-28T09:44:25.887 回答
1

您能否详细说明为什么要为此使用 vimdiff ?

例如,您想在(统一的)差异文件中可视化每个字符的差异吗?. 如果是这样,有人回答了我的问题建议基本上只是在 diff 上启动 emacs 并点击ALT-n循环浏览大块,很好地突出显示沿途的每个单词或每个字符的变化(类似于 vimdiff)。它工作得很好,但是仅仅为了做到这一点就启动 emacs 是一件很糟糕的事情。我只知道足够多的 emacs 来做到这一点,然后退出而不破坏补丁。:)

无论如何,emacs的回答给了我一些想法。我确信 Vim 可以被哄骗为 diff 文件提供更好的突出显示,也许更像是 ediff。我不久前研究了这个问题,vim 用户列表中的某个人提出了合并 google-diff-match-patch的极好建议。例如,可以从 Python Vim ftplugin 使用 Python 接口。

很抱歉在这可能不是一个很好的答案时使用“答案”来回复,“添加评论”的格式对于我想说的话来说太有限了。

对于后代,这里是对另一个类似问题的参考(也已经在这里链接)。

于 2010-11-12T22:35:22.743 回答