显示 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
我知道可以跳转到 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