我怎样才能丢弃 vim 中的撤消历史记录?

我怎样才能丢弃 vim 中的撤消历史记录?

Vim 中有撤销功能真是太好了。但有时,在某个已知的好时机,我想删除我的撤销历史记录 - 以便能够u撤销个别更改,但只能撤消到某个特定点。(例如,这可能是我上次提交的时间。)

实现此目的的一种方法是关闭并重新打开文件 - 此时撤消历史记录将重新开始。但这很麻烦。

过去,我使用 来实现这一点:edit!。但在 Vim 7.3 中,这不会丢弃撤消历史记录。

除了关闭文件之外,还有其他方法可以做到这一点吗?

答案1

:set undoreload=0 | edit

应该做你所要求的事。

答案2

旧的 :edit! 单行行为:

:exe "set ul=-1 | e! | set ul=" . &ul

答案3

Benoit 的功能对我来说不起作用,但我在 vim 手册中找到了类似的功能,如下:

http://www.polarhome.com/vim/manual/v73/undo.html#undo-remarks

我将它放入一个函数中,添加到我的 vimrc 中,它似乎在 vim 7.3 上运行良好:

" A function to clear the undo history
function! <SID>ForgetUndo()
    let old_undolevels = &undolevels
    set undolevels=-1
    exe "normal a \<BS>\<Esc>"
    let &undolevels = old_undolevels
    unlet old_undolevels
endfunction
command -nargs=0 ClearUndo call <SID>ForgetUndo()

这可以与 一起使用:ClearUndo

答案4

“清除撤消历史记录(:w 清除撤消文件(如果存在))
command! -bar UndoClear exe "set ul=-1 | m-1 | let &ul=" . &ul

  • 当您将“undolevels”设置为 -1 时,撤消信息不会被立即清除,这会在下一次更改时发生,即m-1,这实际上并不会改变您的文本。
  • 'undofile'打开时,:w清除撤消文件,或类似链接UndoClear|w

相关内容