【发布时间】:2016-12-28 12:10:52
【问题描述】:
我知道可以跳到 vim 中的最后一个更改,如下所示:
`.
-- 即:一个反引号,后跟一个点。
我想知道是否可以获取所做更改的历史记录或至少显示上次所做的更改,而不仅仅是跳转到它 - 有没有办法使用 diff 来帮助显示更改? em>
另外,存储了多少更改?
【问题讨论】:
-
见
:help :changes。
我知道可以跳到 vim 中的最后一个更改,如下所示:
`.
-- 即:一个反引号,后跟一个点。
我想知道是否可以获取所做更改的历史记录或至少显示上次所做的更改,而不仅仅是跳转到它 - 有没有办法使用 diff 来帮助显示更改? em>
另外,存储了多少更改?
【问题讨论】:
:help :changes。
您可以通过输入:changes 来列出更改,或者在输入.vimrc 后使用:DiffOrig 来查看对原始文件所做的更改:
command! DiffOrig rightbelow vertical new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
创建一个名为DiffOrig 的新命令,该命令将拆分一个新的空垂直窗口并将光标移至该窗口。
如果您输入 :buffers 或 :files 或 :ls,现在我们有两个缓冲区
它将列出所有存在的缓冲区,其中每个缓冲区都有一个唯一的 ID 号和名称:
. 当前缓冲区(光标处于活动状态)称为 %
. 光标之前所在的缓冲区称为#
将新缓冲区的buffertype设置为nofile
将备用缓冲区(原始缓冲区)的内容放入当前缓冲区(%)(在执行命令的行之后)(内容将是上次保存的状态)
删除行将内容上移一行。
激活缓冲区中的差异以显示更改。
移动到另一个缓冲区窗口(命令同ctrl-w p)
也激活此缓冲区中的差异以显示更改。
【讨论】:
似乎已经回答了:
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()
然后我可以使用以下命令:
:DiffSaved
我会得到这样的东西:
在示例中我将 F 更改为 f
【讨论】: