在vi/vim中如何回退(ctrl+z)

182

在普通文本编辑器中(虽然我们尊重Vim),有一个快捷键Ctrl+Z,当您做了一些不好的事情并希望返回到先前版本的文本时可以使用它。就像Word中的"后退"按钮一样。我想知道如何在Vim中实现此行为。


1
http://vim.wikia.com/wiki/Undo_and_Redo - Cyclonecode
4
Vim 的文档也非常好 - 例如输入 :help undo 就会为你找到答案。 - Chris Morgan
2
在完全深入学习vim之前,我建议您先完成(交互式)教程 - karth
1
谢谢大家,这个问题让你们费心了。下次我会多加阅读的。 - Slazer
8
在Linux中,在vi/vim/gvim中使用CTRL-Z意味着退出到控制台或将其置于后台。然后可以在控制台上执行任何操作,并键入fg(前景)以返回到vim编辑会话。 - mancocapac
6个回答

296

3
我将U映射到redo,这样我可以在需要时快速进行撤销/重做,并查看整个编辑历史。我的vimrc设置为:nnoremap U <C-R> - NeilG

17

普通模式下按:

  • u - 撤销操作,
  • Ctrl + r - 重做被撤销的操作(撤销“撤销”操作)。

撤销和重做


我知道我的回答大部分都是重复的,但是我的回答的附加价值是基于文档重新执行Ctrl + r(小写r)。之前没有人在这里提出过。此外,我尽可能清晰地回答了问题。 - simhumileco

15
答案(以及其他许多答案),在$ vimtutor中。

只是点赞,因为我以前从未听说过vimtutor - Paiusco

8

这里有一个技巧。你可以映射Ctrl+Z键。这可以通过编辑.vimrc文件来实现。在'.vimrc'文件中添加以下行。

nnoremap <c-z> :u<CR>      " Avoid using this**
inoremap <c-z> <c-o>:u<CR>

这可能不是首选的方法,但可以使用。

在Linux中,**Ctrl+Z用于挂起正在进行的程序/进程。


0

我现在遇到了同样的问题,但我解决了它。你可能不再需要它,所以我为其他人写下:

如果你在Windows上使用 gvim,只需在你的_vimrc中添加以下内容: $VIMRUNTIME/mswin.vim behave mswin

否则,只需使用imap...


0
在 Mac 上,您也可以使用 Command Z 进行撤销操作。我不确定为什么,但有时它会停止工作。如果您和我一样,vimtutor 在需要学习的事情列表的底部,那么您可以关闭窗口并重新打开它,应该就能正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接