为什么“Diff with Vim”命令无效?

3
我正在WinXP上运行gVim。
我打开一个文件夹,选择两个文件,然后点击“使用Vim进行比较”。截图:

Vimdiff issue

gVim图形用户界面启动,每个文件都在自己的选项卡中。我注意到每个选项卡都处于DIFF模式。但是,两个选项卡之间没有进行比较。这两个文件完全不同,但是没有高亮显示,什么也没有 - 只有左侧的灰色线条,我解释为“DIFF”模式:

Result of diff

发生了什么事?我的vimdiff不能用还是有其他问题?


我的解决方案

之前,当我需要使用Windows上下文菜单打开多个文件时,我按照一位用户的建议,在我的.vimrc文件中添加了以下行::autocmd BufReadPost * tab ball

虽然这使我可以在单个Vim窗口中打开两个文件并将它们分别放在不同的标签页中,但如果我想要进行差异比较,则会失去这种能力。为了同时启用这两个功能,解决方案是仅在我不想要对这两个文件进行差异比较时才启用上述autocmd,这发生在&diff==0的情况下。因此,当我修改我的.vimrc文件中的代码如下时,我恢复了我的Vim差异比较功能:

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

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


你看到有任何变化吗?听起来你应该重新安装gvim。这在我使用最新的vim的XP上有效。当我尝试这个时,我会看到一个命令窗口,然后看到vim窗口处于diff模式下,显示两个文件。 - IanNorton
你尝试在每个标签页中使用 :diffthis 命令了吗?虽然这不是必需的。 - David Brown
@David:文件已经处于DIFF模式。但是,:diffthis没有任何新的作用。 - drapkin11
@IanNorton,为什么你重新打标签(从gvim改为vim)?我的理解是可以运行一个Win32控制台可执行文件版的vim。 - drapkin11
2个回答

2
这只是一个提示,因为我不使用 Windows 或在 Linux 下使用 gvim。如果将选项 -p 提供给 vimdiff,则它将在单独的选项卡中打开其参数。由于仅在同一选项卡中窗口间进行比较,这有效地禁用了比较。-p 仍然可用,因为 vimdiff 只是调用 vim -d ...。-p 告诉 vim 将每个参数放入单独的选项卡中;在正常调用 vim 时非常有用。因此,您可能已经以某种方式配置了 vim,使其始终如此。
我会查看“Diff with Vim”选项实际上是做什么并追踪它是否添加了-p选项到vim的正常调用链的批处理文件(或这些日子叫什么)。如果我没记错,您可以从 Windows 资源管理器中执行此操作;我认为在“查看”菜单中有一个选项,可以显示您想要查看和编辑的所有文件类型的应用程序配置。

你的帖子(以及@sehe的)让我找到了适合我的解决方案。我已经将其作为我的问题更新发布了。谢谢! - drapkin11

2
如果我没记错的话,gvim在其默认的_vimrc文件中定义了一个自定义的VimDiff()函数(:e +/Diff $MYVIMRC)。您可能想要检查是否有效,方法是执行以下操作:
 :call VimDiff()

由于我手头没有Windows机器,您需要检查实际的函数名称和参数(如果有的话)。

请注意保留HTML标签。

谢谢,我在 _vimrc 中找到了函数定义。它叫做 MyDiff,当我调用它时,它确实起作用了。 - drapkin11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接