在 Vim 中打开文件会打开 vim diff?

Opening a file in Vim opens vim diff?

当我在 vim 中打开文件时,我们将其命名为 'file1.rb',此文件正常打开并带有 ruby 语法高亮,到目前为止没有问题。

当我在新缓冲区中打开 'file2.rb' 时,它会将两个缓冲区都变成 vim diff

我可以来回切换缓冲区,但我将看到的是每个缓冲区中打开的文件的 vim 差异。当我删除其中一个缓冲区时,我可以再次正常使用 vim 而不会妨碍 vim 差异颜色突出显示。

目前我一次只打开一个缓冲区,所以我不会 运行 遇到这个问题,但我想同时打开这两个缓冲区而不显示vim diff 个文件。

我在哪里可以禁用这种奇怪的行为,或者有什么方法可以阻止这种情况发生?

Vim 有一个禁用 diff 模式的内置命令,diffoff。来自 :help diffoff:

                            *:diffo* *:diffoff*
:diffo[ff]  Switch off diff mode for the current window.  Resets related
        options also when 'diff' was not set.

如果您只想快速修复,可以在打开拆分时执行此操作,甚至可以制作映射或自动命令以使其更容易。也许像

autocmd BufNew * diffoff

但这绝对不是理想的解决方案。

仍然存在导致它的问题。快速浏览一下你的 .vimrc 显示 lots 插件,但我没有看到任何特别会导致它的东西。我 90% 确定问题出在其中一个插件上,所以我会在您查找问题时从那里开始。此外,这个 post 在专用的 vim 网站上将对您有很大帮助:

差异模式通过 :diffthis:diffsplit 命令之一启用,或直接通过 :setlocal diff.

启用

对于后一种情况,:verbose setlocal diff? 可能会告诉您设置的位置(在受影响的 windows 之一中执行时)。

对于前者,您可以使用 vim -V20vimlog 捕获 Vim 会话的完整日志。退出 Vim 后,检查 vimlog 日志文件中是否有可疑命令;即搜索 'diff'.

在 vim 中打开其他文档时有时会显示 diff。只有当我在一个大型仓库中工作并且仍然没有弄清楚为什么会这样时才会发生。无论如何,必须经历 :diffoff 我的每个缓冲区都是一种刺激,我不必忍受。我写了下面的简短映射,允许我为我的所有缓冲区关闭它(我的 Leader 是逗号):

nnoremap <Leader>,ndf :windo :diffoff<CR>

所以...快速 ,,ndf 一次性在我的所有缓冲区中设置 diffoff