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

And*_*ini 4 vim

当一个文件被更改并且我正在处理它时,vim会提示我两个选择:

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

有没有办法让它显示缓冲区内容和磁盘上的内容之间的差异?

Pet*_*ker 8

将以下内容放在您的.vimrc文件中 :h :DiffOrig

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Run Code Online (Sandbox Code Playgroud)

然后当提示命中ook时然后执行:DiffOrig.您将看到差异.

如果您决定从磁盘执行文件,则从磁盘:e!重新加载文件.

快速概述 :DiffOrig

垂直拆分新缓冲区并从磁盘读入有问题的文件并标记要扩散的两个缓冲区.

荣耀的细节 :DiffOrig

  • :vert {cmd} 将执行任何{cmd},任何拆分将垂直拆分.
  • new 使用新缓冲区打开新拆分
  • set bt=nofile设置'buftype'nofileso将没有文件写入磁盘
  • r是的缩写:read {file}.r #将替代文件读入缓冲区,该文件是刚拆分的缓冲区.此替代文件是从磁盘读取的有问题的文件.
  • 0d_这是短的0delete _.读取替代文件时,在顶部留下一个空行.0delete _将顶行删除到黑洞寄存器中,这样就不会与其他寄存器混淆.
  • diffthis 将缓冲区设置为diffed.
  • 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_#
Run Code Online (Sandbox Code Playgroud)