在vim文件中显示所有本地更改

在vim文件中显示所有本地更改,vim,diff,Vim,Diff,我知道可以跳转到vim中的最后一个更改,如下所示: `. --即:一个反勾选,后跟一个点 我想知道是否有可能获得所做更改的历史记录,或者至少显示最近所做的更改,而不仅仅是跳转到它-有没有一种方法可以使用diff来帮助显示更改 另外,存储了多少更改?您可以通过键入:changes列出更改,或者在输入后使用:DiffOrig。vimrc以下命令查看对原始文件所做的更改: command! DiffOrig rightbelow vertical new | set bt=nofile | r #

我知道可以跳转到vim中的最后一个更改,如下所示:

`. 
--即:一个反勾选,后跟一个

我想知道是否有可能获得所做更改的历史记录,或者至少显示最近所做的更改,而不仅仅是跳转到它-有没有一种方法可以使用diff来帮助显示更改


另外,存储了多少更改?

您可以通过键入
:changes
列出更改,或者在输入
后使用
:DiffOrig
。vimrc
以下命令查看对原始文件所做的更改:

command! DiffOrig rightbelow vertical new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
说明:
  • 垂直新下方右下方的命令差异
创建一个名为
DiffOrig
的新命令,该命令将拆分一个新的空垂直窗口并将光标移动到该窗口

现在,如果您键入
:buffers
:files
:ls
它将列出所有存在的缓冲区,其中每个缓冲区都有唯一的id号和名称:

当前缓冲区(光标处于活动状态)称为%

以前放置光标的缓冲区称为#

  • 设置bt=nofile
将新缓冲区的
buffertype
设置为nofile

  • 阅读#
将备用缓冲区(原始缓冲区)的内容放入当前缓冲区(%)(在执行命令的行之后)()(内容将是上次保存的状态

  • 0d
删除该行以将内容上移一行

  • diffthis
激活缓冲区中的差异以显示更改

  • wincmd p
移动到另一个缓冲区窗口(命令与
ctrl-wp
相同)

  • diffthis

也激活此缓冲区中的差异以显示更改。

这似乎已经在中得到了回答:

将以下内容添加到my.vimrc之后:

function! s:DiffWithSaved()
  let filetype=&ft
  diffthis
  vnew | r # | normal! 1Gdd
  diffthis
  exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
com! DiffSaved call s:DiffWithSaved()
然后我可以使用以下命令:

:DiffSaved

我会得到这样的结果:


在示例中,我将F改为F

请参见
:help:changes
。似乎这个答案是最好的,尤其是:changes,这正是我真正想要的-谢谢你有机会详细解释这个命令实际上在做什么?你发布的命令行由几个命令组成,我只是想知道它是如何工作的