为什么“Diff with Vim”命令不起作用?

时间:2011-04-05 20:28:57

标签: windows-xp vim vimdiff

我在WinXP上运行gVim。

我打开一个文件夹,选择两个文件,然后单击“Diff with Vim”。截图:

Vimdiff issue

gVim GUI启动,每个文件都在自己的选项卡中。我注意到每个选项卡都处于DIFF模式。但是,两个标签之间没有进行比较。两个文件完全不同,但没有突出显示,没有 - 只是左边的灰线,我将其解释为'DIFF'模式:

Result of diff

发生了什么事?我的 vimdiff 不能正常工作还是其他什么?


我的解决方案

之前,当我需要Open files in multiple tabs using the Windows Context Menu时,我按照海报的建议,将以下行添加到我的 .vimrc 文件中::autocmd BufReadPost * tab ball

虽然这允许我在单个Vim窗口中的单独选项卡中打开两个文件,但如果我愿意,我将无法区分这两个文件。启用这两项功能的解决方案是仅在我不希望差异两个文件的情况下启用上面的autocmd,这在&diff==0时发生。因此,当我将 .vimrc 文件中的代码修改为以下内容时,我重新获得了 Diff with Vim 功能:

if (&diff==0)
    :autocmd BufReadPost * tab ball
endif

我还将此解决方案添加到上述Vim Wikia link的评论部分。

2 个答案:

答案 0 :(得分:2)

这至多是一个提示,因为我没有运行Windows甚至在linux下使用gvim。如果向-p提供了选项vimdiff,它将在单独的选项卡中打开其参数。由于仅在相同选项卡中的窗口之间进行差异,因此这有效地禁用了差异。 -p仍然有效,因为vimdiff只是致电vim -d ...-p告诉vim将每个参数放在一个单独的选项卡中;通常调用vim时它非常有用。因此,你可能会以某种方式将vim配置为始终执行此操作。

我会检查Diff with Vim选项实际上做了什么并追踪它以查看调用链中的批处理文件(或者他们现在称之为的任何内容......)是否正在添加{{1}你正常调用vim的选项。 IIRC你可以从Windows资源管理器中执行此操作;我认为View菜单中有一个选项可以显示所有文件类型。您可以查看和编辑配置为“打开”这些文件类型的应用程序。

答案 1 :(得分:2)

如果我没错,gvim在它的股票_vimrc(:e +/Diff $MYVIMRC)中定义了一个自定义的VimDiff()函数

您可能想通过执行

来检查 it 是否有效
 :call VimDiff()

你需要检查实际的功能名称和参数(如果有的话),因为我没有便于使用的Windows机器。