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

时间:2009-10-12 17:10:53

标签: vim undo redo

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

10 个答案:

答案 0 :(得分:831)

控制 + - [R

答案 1 :(得分:124)

同时查看:undolist,其中提供了撤消历史记录中的多条路径。如果您在撤消太多后意外键入内容,这将非常有用。

答案 2 :(得分:51)

奇怪没有人提到:earlier / :later。要重做你需要做的一切

later 9999999d

(假设您最初在9999999天之前编辑过该文件),或者,如果您还记得当前撤消状态与所需撤消状态之间的差异,请使用NhNm或{{1}分别为小时,分钟和秒。 + Ns&lt; =&gt; <{1}}和:later N<CR>用于文件写入。

答案 3 :(得分:39)

Vim documentation

<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}

答案 4 :(得分:25)

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

答案 5 :(得分:12)

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

然后,

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

对于重做使用 CTRL + r

答案 6 :(得分:10)

请参阅"undo" and "redo" part of vim document

:red [o] (重做一次撤消的更改)和{count} Ctrl + r (重做{count}次更改哪些都没有了)都没问题。

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

答案 7 :(得分:3)

CTRL + - [R

“r”是小写的。

答案 8 :(得分:2)

在Visual Studio中使用VsVim?

我在尝试提供bindings for vim-commands in Visual Studio的VsVim时遇到了这个问题。

我知道vim本身中的 ctrl r ,但这个特殊的绑定在VsVim中不起作用(至少在我的设置中不起作用?)。

的工作原理是命令:red。这比上面的麻烦有点麻烦,但是当你真的需要它时仍然很好。

答案 9 :(得分:1)

实际上,:undolist很难使用和vim的:早期和:后来跟踪变化只能用于课程修复。 鉴于此,我采用了一个插件,它结合了这些功能,提供了一个可浏览的可视树,称为“gundo”。 显然,这只是在您需要细粒度修复时使用,或者您不确定要返回的文档的确切状态。请参阅:https://sjl.bitbucket.io/gundo.vim/