【问题标题】:use vimdiff with a diff file将 vimdiff 与 diff 文件一起使用
【发布时间】:2010-09-19 13:11:42
【问题描述】:

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

【问题讨论】:

标签: vim vimdiff


【解决方案1】:

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

例如,你想visualize per-character differences in a (unified) diff file?。如果是这样,有人用a suggestion 回答my question about same 基本上只是在差异上启动emacs 并点击ALT-n 循环浏览大块,很好地突出显示沿途的每个单词或每个字符的变化(类似于vimdiff)。它工作得很好,但是仅仅为了做到这一点就启动 emacs 是一件很糟糕的事情。我只知道足够多的 emacs 来做到这一点,然后退出而不破坏补丁。 :)

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

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

为了后代,here's a reference to another similar question(这里也已经链接)。

【讨论】:

    【解决方案2】:

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

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

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

    编辑

    如果您想自动输入vim 的差异模式,请使用:

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

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

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

    【讨论】:

    • 不错!但是如果文件包含其他文件的差异,您可能应该警告副作用的风险?
    • 这对单个文件非常有用。谢谢!我不知道 diffpatch。
    • 有没有办法做到这一点,而不必将差异文件保存到磁盘?比如::vert diffpatch - !git diff file? (我知道git diff 有更好的解决方案,但我很好奇这是否可行)
    【解决方案3】:

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

    在这里获取:diffchanges.vim

    【讨论】:

    【解决方案4】:

    复制原始文件,应用差异,然后

    vimdiff original_file patched_file
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 2015-12-11
      • 2017-10-04
      • 2013-02-19
      • 2014-12-25
      • 1970-01-01
      相关资源
      最近更新 更多