当我正在修改一个文件时,vim提示我两个选择:
W11: Warning: File "foo.bar" has changed since editing started
See ":help W11" for more info.
[O]K, (L)oad File:
是否有一种方法可以让它显示缓冲区内容和磁盘上的内容之间的差异?
将以下内容放入取自:h :DiffOrig
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 _
将把顶行移到黑洞寄存器中,这样它就不会与其他寄存器混淆。 -
windcmd p
切换回前一个窗口。这与正常模式下的<c-w>p
相同。 -
diffthis
设置更改的缓冲区包含到diff集。
diffthis
设置缓冲区查看更多信息:
:h :DiffOrig
:h :e
:h :diff
:h vert
:h new
:h r
:h d
:h "_
:h windcmd
:h diffthis
:h :c_#