如何在Vim中重做(即“撤消”)?

在Vim中,我做了太多的撤消。我如何撤消这个(即重做)?

313404 次浏览

在命令模式下,使用U键撤消,使用Ctrl+r重做。看看http://www.vim.org/htmldoc/undo.html

CTRL+r

“r”是小写字母。

Vim留档

<Undo>      or                  *undo* *<Undo>* *u*
u           Undo [count] changes.  {Vi: only one level}


*:u* *:un* *:undo*
:u[ndo]         Undo one change.  {Vi: only one level}


*CTRL-R*
CTRL-R          Redo [count] changes which were undone.  {Vi: redraw screen}


*:red* *:redo* *redo*
:red[o]         Redo one change which was undone.  {Vi: no redo}


*U*
U           Undo all latest changes on one line.  {Vi: while not
moved off of it}

还要查看:undolist,它提供了通过撤消历史记录的多条路径。如果您在撤消太多后意外键入某些内容,这很有用。

使用:earlier/:later。重做你只需要做的一切

later 9999999d

(假设您最多在9999999天前首次编辑文件),或者,如果您记得当前撤消状态和需要撤消状态之间的区别,请分别使用NhNmNs进行小时、分钟和秒。

请参阅Vim文档的“撤消”和“重做”部分

:红色[o](重做一个已撤消的更改)和Ctrl+r(重做已撤消的更改)都可以。

此外,:更早{计数}(转到旧文本状态{计数}次)始终可以替代撤消和重做。

首先按Esc键退出编辑模式。

然后,

对于撤销,使用u键撤消多次。

对于redo,使用Ctrl+r

使用VsVim for Visual Studio?

我在尝试VsVim时遇到了这个问题,它提供了在Visual Studio中绑定Vim命令

我知道Vim本身中的Ctrlr,但这种特定的绑定在VsVim中不起作用(至少在我的设置中不起作用?)。

然而,确实的工作是命令:red。这比上面的要麻烦一点,但当你真正需要它时,它仍然很好。

实际上,:undolist很难使用,Vim的:earlier:later时间跟踪更改仅适用于课程谷物修复。

鉴于此,我求助于一个插件,它结合了这些功能来提供一个可浏览的undos的可视化树,称为“Gundo”。

显然,这仅在您需要细粒度修复或您不确定要返回的文档的确切状态时使用。请参阅:Gundo.用样式绘制Vim撤消树