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

时间:2011-12-13 14:47:07

标签: vim

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

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

有没有办法让它向我展示缓冲区内容和磁盘上的内容之间的区别?

1 个答案:

答案 0 :(得分:8)

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

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

然后在提示时点击o确定,然后执行:DiffOrig。您将看到差异。

如果您决定从磁盘执行文件执行: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这会将更改的缓冲区设置为包含在差异集中。

了解更多信息:

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