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

Show all local changes in vim file

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

`. 

-- 即:一个反引号,后跟一个

我想知道是否可以获取所做更改的历史记录或至少显示上次所做的更改,而不仅仅是跳转到它 - 有没有办法使用 diff 来帮助显示变化?

另外,存储了多少变化?

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

command! DiffOrig rightbelow vertical new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis

解释:


  • 命令 DiffOrig rightbelow vertical new

创建一个名为 DiffOrig 的新命令,它将 拆分一个新的空垂直 window 并将光标移动到它

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

. 当前缓冲区(光标处于活动状态的位置)被调用 %

. 光标之前所在的缓冲区被调用 #

  • set bt=nofile

设置新缓冲区的buffertype为nofile

  • 阅读#

将备用缓冲区(原始缓冲区)的内容放入当前缓冲区(%)(执行命令的行之后)(内容将是最后保存的状态)

  • 0d_

删除行将内容上移一行。

  • diffthis

激活缓冲区中的 diff 以显示更改。

  • wincmd p

移动到另一个缓冲区window(命令与ctrl-w p相同)

  • diffthis

在此缓冲区中也激活 diff 以显示更改。

似乎已经在 :

中回答了这个问题

see changes in vim before save

将以下内容添加到我的 .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()

然后我可以使用以下命令:

:差异保存

我会得到这样的东西:

在示例中我将 F 更改为 f