我该如何使用vimdiff查看diff文件中描述的差异?
不要使用/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'
其中+command
让vim
执行"command"。(+123
跳到第123行,+/abc
跳到第一个匹配"abc"的位置,都有记录文档。)
关于Ken的问题:如果差异文件包括应用于当前未编辑的其他文件的内容,不用担心;vim
在下面调用patch
可执行文件,并询问这些神秘缺失文件的位置,您可以告诉patch
跳过这些部分。
:vert diffpatch - !git diff file
?(我知道对于 git diff
有更好的解决方案,但我很好奇是否可以在一般情况下实现这一点) - mwcz从另一个方向来看,我编写了一个Vim插件,可以显示文件自上次保存以来所做的更改,可以选择vimdiff或统一的差异格式。
在这里获取:diffchanges.vim
复制原始文件,应用差异,然后
vimdiff original_file patched_file
您还可以查看已编写用于处理svn diff输出的vim.org脚本。如果您是从版本控制系统生成差异,请查看vcscommand.vim:CVS / SVN / SVK / git集成插件。
您能详细说明一下为什么要使用vimdiff吗?
例如,您是否想要可视化(统一)差异文件中每个字符的差异? 如果是这样,有人回答了我的问题,并提出了一个建议,基本上只需在差异文件上启动emacs,然后按ALT-n
循环浏览hunks,途中会很好地突出显示每个单词或每个字符的更改(类似于vimdiff)。它很有效,但是为了做到这一点而启动emacs有点麻烦。我只知道足够的emacs来完成这项任务,然后退出而不会弄乱补丁。 :)
无论如何,Emacs 的答案给了我一些想法。我相信 Vim 可以被劝说为 diff 文件提供更好的高亮显示,也许更像 ediff。我曾经调查过这个问题,vim 用户列表中有人提出了优秀的建议:整合 google-diff-match-patch。例如,可以从 Python Vim ftplugin 中使用 Python 接口。
对不起,我使用“回答”来回复,当我想说的话太多而“添加评论”的格式受到限制时。
为了长久保存, 在这里有另一个类似问题的参考(已经链接到这里)。