vim:显示W11上的差异(自编辑开始以来文件已更改)



当我正在修改一个文件时,vim提示我两个选择:

W11: Warning: File "foo.bar" has changed since editing started
See ":help W11" for more info.
[O]K, (L)oad File:

是否有一种方法可以让它显示缓冲区内容和磁盘上的内容之间的差异?

将以下内容放入取自:h :DiffOrig

的.vimrc文件中
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis

当出现提示时,点击o为ok,然后执行:DiffOrig。您将看到diff。

如果您决定要从磁盘中获取文件,请执行:e!以从磁盘中重新加载文件。

:DiffOrig的快速概述

垂直分割一个新的缓冲区,从磁盘中读取文件,并将两个缓冲区标记为不同的。

:DiffOrig的细节荣耀

  • :vert {cmd}将执行任何{cmd},任何分割将垂直分割。
  • new打开一个新的缓冲区
  • set bt=nofile设置'buftype'nofile,所以没有文件写入磁盘
  • r:read {file}的缩写。r #将替代文件读入缓冲区,这是刚刚分割的缓冲区。这个替代文件是从磁盘中读取的文件。
  • 0d_0delete _的缩写。当读取替代文件时,它在顶部留下空白行。0delete _将把顶行移到黑洞寄存器中,这样它就不会与其他寄存器混淆。
  • diffthis设置缓冲区
  • windcmd p切换回前一个窗口。这与正常模式下的<c-w>p相同。
  • diffthis设置更改的缓冲区包含到diff集。

查看更多信息:

:h :DiffOrig
:h :e
:h :diff
:h vert
:h new
:h r
:h d
:h "_
:h windcmd
:h diffthis
:h :c_#

最新更新