3

我在 WinXP 上运行 gVim。

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

Vimdiff 问题

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

差异的结果

到底是怎么回事?我的vimdiff不工作还是其他原因?


我的解决方案

早些时候,当我需要使用 Windows 上下文菜单在多个选项卡中打开文件时,我遵循了海报的建议,并将以下行添加到我的.vimrc文件中::autocmd BufReadPost * tab ball

虽然这允许我在一个 Vim 窗口的不同选项卡中打开两个文件,但如果我愿意的话,我失去了区分这两个文件的能力。打开这两个功能的解决方案是autocmd仅在我不想区分这两个文件的情况下启用上述功能,这种情况发生在&diff==0. 因此,当我将.vimrc文件中的代码修改为以下代码时,我重新获得了具有 Vim功能的Diff :

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

我还在上面提到的Vim Wikia 链接的评论部分添加了这个解决方案。

4

2 回答 2

2

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

我会检查该Diff with Vim选项的实际作用并对其进行跟踪,以查看调用链中的批处理文件(或这些天所称的任何东西..)是否将-p选项添加到您对 vim 的正常调用中。IIRC,您可以从 Windows 资源管理器中执行此操作;我认为“查看”菜单中有一个选项可以显示所有文件类型。您可以查看和编辑配置为“打开”这些文件类型的应用程序。

于 2011-04-05T21:56:25.350 回答
2

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

你可能想通过做检查它是否有效

 :call VimDiff()

您需要检查实际的函数名称和参数(如果有),因为我在 at.m 没有方便的 windows 机器。

于 2011-04-05T22:20:27.753 回答