【问题标题】:Show all local changes in vim file显示 vim 文件中的所有本地更改
【发布时间】:2016-12-28 12:10:52
【问题描述】:

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

`. 

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

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

另外,存储了多少更改?

【问题讨论】:

  • :help :changes

标签: vim diff


【解决方案1】:

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

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

解释:


  • 命令 DiffOrig rightbelow垂直新

创建一个名为DiffOrig 的新命令,该命令将拆分一个新的空垂直窗口并将光标移至该窗口

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

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

. 光标之前所在的缓冲区称为#

  • 设置 bt=nofile

将新缓冲区的buffertype设置为nofile

  • 阅读#

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

  • 0d_

删除行将内容上移一行。

  • 差异化

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

  • wincmd p

移动到另一个缓冲区窗口(命令同ctrl-w p

  • diffthis

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

【讨论】:

  • 看来这个答案是最好的,尤其是我真正想要的 :changes - 谢谢
  • 您能否详细解释一下这个命令实际上在做什么?
  • 您发布的命令行由几个命令组成,我只是想进一步了解它的工作原理
【解决方案2】:

似乎已经回答了:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多