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

3
当我在vim中打开一个文件,假设它叫做'file1.rb',这个文件会以ruby语法高亮的方式正常打开,没有任何问题。当我在新缓冲区中打开'file2.rb'时,它会将两个缓冲区都变成vim diff。 我可以在两个缓冲区之间切换,但我看到的是每个缓冲区中打开的文件的vim diff。当我删除其中一个缓冲区时,我就可以正常使用vim了,不会有vim diff颜色突出的干扰。目前,我一次只打开一个缓冲区,这样就不会遇到这个问题,但我想同时打开这两个缓冲区,而不显示文件的vim diff。我应该在哪里禁用这种奇怪的行为,或者有什么方法可以阻止这种情况发生?

你能发一下你的.vimrc文件吗?另外,你可以使用diffoff命令来解决这个问题,虽然我同意最好是永远不需要用到它。 - DJMcMayhem
@DJMcMayhem 请将此作为答案发布,以便我可以标记它。非常感谢,diffoff 起作用了。要再次启用它,我只需要使用 diffthis 命令即可。如果您仍然想查看它,我可以发布我的 .vimrc 文件。 - csebryam
当然,我可以将其发布为答案,但这只是一种权宜之计,而不是解决方案。如果vim自动以diff模式打开,则表示出现了问题(最有可能是您的.vimrc文件中的某些问题)。 - DJMcMayhem
你说得有道理。我个人现在找不到任何导致这种情况发生的原因,但我很高兴有一个关闭它的选项。这是我的'.vimrc'文件:https://github.com/csebryam/vimrc/blob/master/.vimrc - csebryam
3个回答

2
Diff模式可以通过:diffthis:diffsplit命令之一启用,也可以直接通过:setlocal diff启用。
对于后一种情况,执行:verbose setlocal diff?命令可能会告诉你它是在哪里设置的(当在受影响的窗口之一中执行时)。
对于前者,您可以使用vim -V20vimlog捕获整个Vim会话的完整日志。退出Vim后,检查vimlog日志文件以查找可疑命令;即搜索“diff”。

1

Vim内置了一个命令来禁用差异模式,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,显示了很多插件,但我没有看到任何特别会导致它的东西。我90%确定问题来自其中一个插件,所以在寻找问题时从那里开始。此外,vim网站上的这篇帖子将对您有很大帮助:


0

我在使用vim打开其他文档时,有时会出现diff显示。这只发生在我在一个大型代码库中工作时,但我还没有弄清楚原因。无论如何,必须逐个执行:diffoff以关闭所有缓冲区是一件让人烦恼的事情。为了解决这个问题,我编写了以下简短的映射,使我可以关闭所有缓冲区的diff(我的Leader键是逗号):

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

所以...快速输入,,ndf即可一次性在所有缓冲区中设置diffoff


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