当文件被更改并且我正在处理它时,vim会提示我两个选择:
W11: Warning: File "foo.bar" has changed since editing started
See ":help W11" for more info.
[O]K, (L)oad File:
有没有办法让它向我展示缓冲区内容和磁盘上的内容之间的区别?
答案 0 :(得分:8)
将以下内容放在取自:h :DiffOrig
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_#