Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim:W11上显示差异(自编辑开始后文件已更改)_Vim - Fatal编程技术网

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

vim:W11上显示差异(自编辑开始后文件已更改),vim,Vim,当一个文件被更改并且我正在处理它时,vim会提示我两个选择: W11: Warning: File "foo.bar" has changed since editing started See ":help W11" for more info. [O]K, (L)oad File: 有没有办法让它显示缓冲区内容和磁盘上的内容之间的差异?将以下内容放在取自的.vimrc文件中:h:DiffOrig command DiffOrig vert new | set bt=nofile | r #

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

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

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

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

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
然后当提示时,点击
o
确定,然后执行
:DiffOrig
。您将获得差异

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

快速浏览
:DiffOrig

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
垂直拆分一个新的缓冲区,从磁盘中读取相关文件,并将两个缓冲区标记为不同

的细节荣耀:与众不同

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
  • :vert{cmd}
    将执行任何{cmd},任何拆分都将垂直拆分
  • new
    使用新缓冲区打开新拆分
  • set bt=nofile
    'buftype'
    设置为
    nofile
    ,因此不会将任何文件写入磁盘
  • r
    :read{file}
    的缩写
    r#
    将替代文件读入缓冲区,该文件是刚刚从中拆分的缓冲区。此替代文件是正在从磁盘读取的文件
  • 0d
    0delete
    的缩写。当读取替代文件时,它会在顶部留下一个空行
    0delete 
    将删除黑洞寄存器中的顶行,这样它就不会干扰其他寄存器
  • diffthis
    将缓冲区设置为diffed
  • windcmd p
    切换回上一个窗口。这与正常模式下的
    p
    相同
  • diffthis
    这将设置要包含在diff集合中的已更改缓冲区
有关更多信息:

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

回答得很好。现在,如果有一种方法可以使它自动化…:)(即,当W11发出时,将提示第三个选项)@Andrea Spadaccini:抱歉,我不知道如何自动进行此操作。