在vim文件中显示所有本地更改
我知道可以跳转到vim中的最后一个更改,如下所示:在vim文件中显示所有本地更改,vim,diff,Vim,Diff,我知道可以跳转到vim中的最后一个更改,如下所示: `. --即:一个反勾选,后跟一个点 我想知道是否有可能获得所做更改的历史记录,或者至少显示最近所做的更改,而不仅仅是跳转到它-有没有一种方法可以使用diff来帮助显示更改 另外,存储了多少更改?您可以通过键入:changes列出更改,或者在输入后使用:DiffOrig。vimrc以下命令查看对原始文件所做的更改: command! DiffOrig rightbelow vertical new | set bt=nofile | r #
`.
--即:一个反勾选,后跟一个点
我想知道是否有可能获得所做更改的历史记录,或者至少显示最近所做的更改,而不仅仅是跳转到它-有没有一种方法可以使用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,这正是我真正想要的-谢谢你有机会详细解释这个命令实际上在做什么?你发布的命令行由几个命令组成,我只是想知道它是如何工作的