Mic*_*and 284
简短版本:通过撤消撤消.如果撤消,然后执行非编辑命令C-f,则下一次撤消将撤消撤消,从而导致重做.
更长的版本:
您可以将undo视为在一堆操作上运行.如果在执行C-f一系列撤消操作后执行某些命令(甚至是导航命令),则所有撤消操作都会被推送到操作堆栈.所以下一个撤消撤消最后一个命令.假设您有一个如下所示的操作序列:
现在,你撤消.它撤消了最后一个操作,产生以下列表:
如果你在此时做了除undo之外的其他事情 - 比如说,C-f操作堆栈如下所示:
现在,当你撤消时,撤消的第一件事是撤消.导致您的原始堆栈(和文档状态):
如果执行修改命令来中断撤销序列,则在撤消后添加该命令,这是之后要撤消的第一件事.假设你在"bar"上退格而不是击球C-f.那你就得到了
这种添加/重新添加无限期地发生.它需要一点点习惯,但它确实为Emacs提供了一个高度灵活和强大的撤销/重做机制.
Jér*_*dix 202
撤销: C-_
要在撤消后重做: C-g C-_
多次键入 C-_ 以重做已撤消的内容 C-_ 要多次重做emacs命令,执行命令然后键入C-xz然后键入多次z以重复命令(当您想多次执行宏时很有趣)
Ror*_*ane 49
C-/C-/ C-/C-g C-/C-g C-/ C-/.请注意,C-g不再重复.C-g C-/C-g C-/ C-/如果您在上次撤消命令后按下任何键(无论是键入字符还是只是移动光标),则无需C-g在下一次撤消/重做之前键入.C-g只是一个安全的击键,它本身什么都不做,但算作一个非撤消键来表示撤消序列的结束.按下另一个命令C-f也会起作用; 只是它会将光标移动到你拥有它的位置.
如果您C-g在不想要的情况下击中或发出其他命令,并且您现在正在向错误的方向撤消,只需按下C-g以再次反转您的方向.在你到达你想要的地方之前,你必须通过意外的重做和撤消一直撤消,但如果你继续打击C-/,你将最终达到你想要的状态.事实上,缓冲区所处的每个状态都是可达的,如果你C-g按一次然后按下C-/足够的时间.
替代快捷键undo,比其他C-/,是C-_,C-x u和M-x undo.
见撤消 Emacs的手册上的Emacs的撤消系统更多的细节英寸
Tre*_*son 38
对于那些想要拥有更常见的撤销/重做功能的人,有人写过undo-tree.el.它提供非Emacs撤消的外观和感觉,但提供对撤消历史记录的整个"树"的访问.
我喜欢Emacs的内置撤消系统,但发现这个包非常直观.
这是文件本身的评论:
Emacs有一个强大的撤销系统.与大多数软件中的标准撤销/重做系统不同,它允许您恢复缓冲区的任何过去状态(而标准撤消/重做系统可以在重做后立即丢失过去的状态).然而,这种能力是有代价的:许多人发现Emacs的撤销系统令人困惑且难以使用,产生了许多软件包,用较弱但更直观的撤销/重做系统取而代之.
标准撤销/重做的数据丢失以及Emacs撤消的混乱都源于试图将撤销历史视为线性变化序列.不是.此软件包提供的`undo-tree-mode'将Emacs的撤销系统替换为一个系统,该系统将撤消历史记录视为现状:变更的分支树.这个简单的想法允许标准撤销/重做系统的更直观的行为与永不丢失任何历史的力量相结合.另外一个额外的好处是,撤销历史记录在某些情况下可以更有效地存储,允许在Emacs开始丢弃历史记录之前累积更多更改.
Mic*_*ott 17
小心重做的撤消树怪癖!
许多流行的"入门套件"(前奏,purcell,spacemacs)与undo-tree捆绑在一起.大多数(全部?)甚至自动启用它.如上所述,undo-tree是一种可视化和遍历撤销/重做树的方便方法.Prelude甚至给它一个键和弦(uu),也是C-x u.
问题是:undo-tree似乎破坏了Emacs对redo的默认和众所周知的绑定:C-g C-/.
相反,您可以使用这些对称键进行撤消/重做:
C-/ undo
C-S-/ redo
Run Code Online (Sandbox Code Playgroud)
这些很有用,因为有时您想要在不打开可视化工具的情况下快速重做.
mon*_*tux 11
我发现做"正常"撤销/重做redo.el非常方便,我通常将其绑定到CSz并撤消到Cz,如下所示:
(when (require 'redo nil 'noerror)
(global-set-key (kbd "C-S-z") 'redo))
(global-set-key (kbd "C-z") 'undo)
Run Code Online (Sandbox Code Playgroud)
只需下载文件,将其放入您的lisp路径并将上面的内容粘贴到您的文件中.emacs.
ide*_*n42 10
Emacs 28添加了一个重做命令(称为undo-redo)。
如果想要更典型的undo/redo,可以使用以下命令。
(global-set-key (kbd "C-z") 'undo-only)
(global-set-key (kbd "C-S-z") 'undo-redo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129476 次 |
| 最近记录: |