`

UNDO

阅读更多

UNDO

*undo.txt*      For Vim version 6.2.   最后更改:2002.7.30


                     Vim 参考手册    作者:Bram Moolenaar
           (译者: jwdu <junweidu@ustc.edu> http://vimcdoc.sf.net)

撤销和恢复                                                 *undo-redo*

在用户手册的 |02.5| 节对它们的基本操作有解释。

1. 撤销和恢复操作的命令               |undo-commands|
2. 撤销操作的两种方法          |undo-two-ways|
3. 撤销操作的注释                |undo-remarks|


1. 撤销和恢复操作的命令                                       *undo-commands*

<Undo>*undo* *<Undo>* *u*
u                       撤销 [count] 次更改。             {Vi: 仅有一级}

                                                        *:u* *:un* *:undo*
:u[ndo]                 撤销一次更改。                   {Vi: 仅有一级}

                                                        *CTRL-R*
CTRL-R                  恢复 [count] 次没有完成的更改。 {Vi: 刷新屏幕}

                                                        *:red* *:redo* *redo*
:red[o]                 恢复一个没有完成的更改。    {Vi: 没有 redo}

                                                        *U*
U                       撤销最近对特定行所作的一系列更改。
                        {Vi: while not moved off of it}

由于最近所作的更改是被记住的,因此,你可以应用上面的撤销和恢复命令把文件恢复
到你所作的更改以前的状态。当然,你也可以重新应用这些修改,把文件恢复到执行恢
复操作以前的状态。

对待"U"命令和对待撤销/恢复 (undo/redo) 命令的是一样的。如此来看,"u" 命令撤销
一个 "U" 命令、'CTRL-R' 命令再次撤销 "U" 命令。当 "U", "u" 和 'CTRL-R' 三个命
令混合使用时,你将注意到 "U" 命令决意将文件恢复到较早的 "U" 命令之前的状态。
这或许会令你困惑,但请你尽量习惯它。
"U" 命令总是把缓冲标志为改变状态.当 "U" 命令把改变的缓冲恢复到没有改变的
状态时,它还会认为缓冲处于改变状态。这时,使用 "u" 命令撤销改变直到缓冲的
状态变成不变.


2. 撤销操作的两种方法                                  *undo-two-ways*

撤销和恢复的工作方式依赖于 'cpoptions' 中 'u' 状态的标志。这里是 Vim(不包含
'u' 命令)和 vi-兼容(包含 'u' 命令)两种模式的工作方法。在 Vim 这种状态下,
"uu" 命令撤销两次改变,在 vi-兼容模式下,"uu" 命令什么也不做(撤销一次撤销)。

不包含 'u' 的 Vim 工作方法:
你能及时的以撤销命令回到以前的状态。那时,你也可以以使用恢复命令再次前进。如
果在撤销命令后你做了一个新的改变,那么,恢复命令将什么也不做。

包含 'u' 的 Vi-兼容 工作方法:
撤销命令撤销包含以前的撤销命令在内的任何更改。恢复命令重复以前的撤销命令。但
它不重复一个改变的命令,如果你想如此,那么用 "." 命令。

举例          Vim 模式              Vi-兼容 模式        
"uu"            两次撤销            空操作
"u CTRL-R"      空操作                       两次撤销

原理: Nvi 使用 "."  命令而不是 CTRL-R 。不幸的是,这不是 Vi 兼容的。例如
        "dwdwu." 命令,在 Vi 中删除两个词,但在 Nvi 中,它什么也不做。


3. 撤销操作的注释                                        *undo-remarks*

改变的次数放置在 'undolevels' 选项中.如果它的值是零,Vi-兼容 方法是适用的。如
果它的值是负的,任何撤销都是不可能的。当你内存紧张的时候使用这个。

缓冲的标志 ('a 至 'z) 经常和文件一起被保存和恢复。 {Vi 这样做的时候有一点不同}

当所有的改变都被撤销时,缓冲的标志是认为不改变的。这时退出 Vim 是使用  ":q"
而非":q!" 。{在 Vi 不是这样} 注意这是相对文件的最后写入而言的。和被写入的比较
,在写入 ":w" 后写入 "u" 实际上改变了缓冲的状态,因此,此时,缓冲的状态认为是
改变的。

当手册 |folding| 被使用时,折叠将不被保存和恢复。只有完全在折叠内部的改变才被
保存,因为折叠第一和最后一行是不改变的。

有限的寄存器也可以被用作撤销删除。你每一次删除文件,寄存器都被放 "1. 因此,寄
存器的内容将从 "1. 变为 "2 ,依次类推。但 "9 将被丢失,现在,你可以通过命令
'"1P' 得到最近大部分被删除的文件。(同样,如果被删除的内容是最后被删除或复制
的,那么'P' 或 'p' 同样也可得到你要的结果,因为他们都拷贝未命名的寄存器的内容
)。使用'"3P' 你可以得到前三个被删除的文本。

                                                        *redo-register*
如果你想得到多于被删除文件一部分的内容,你可以重复使用 "." 这样一个特殊的命令
。这样将会增加所使用寄存器内的数字。所以,你如果先使用 ""1P" ,那么接下来的
"." 就意味着 '"2P 。重复这将会造成所有被编号的寄存器被插入。

例如:       如果你用 'dd....' 删除了内容,那么用 '"1P....' 可以恢复。

如果,你不知道被删除的内容在哪一个寄存器,你可以用 :display 命令。一种替代的方
法是在第一个寄存器试用 '"1P' ,如果它不是你要找的用 'u.' 命令。这将会移走第一
次放进的内容,然后在第二个寄存器重复上述命令。重复使用 'u.' 直到你得到想要的内
容。

 vim:tw=78:ts=8:ft=help:norl:
分享到:
评论

相关推荐

    达梦修改UNDO_RETENTION.zip

    本文将围绕“达梦修改UNDO_RETENTION”这一主题,详细探讨这一设置对数据库性能的影响及其调整方法。 UNDO RETENTION参数在数据库中扮演着至关重要的角色,它定义了撤销段(UNDO SEGMENT)中数据保留的时间长度。...

    C# undo\redo框架

    本文将深入探讨“C# undo/redo框架”的核心概念、设计模式以及如何实现。 1. **命令模式**: 撤销/重做框架通常基于命令模式设计。命令模式是一种行为设计模式,将请求封装为一个对象,使发出请求与执行请求解耦。...

    Oracle的Temp表空间和UNDO表空间的处理

    ### Oracle的Temp表空间与UNDO表空间处理详解 #### 一、Temp表空间处理 在Oracle数据库中,Temp表空间主要用于存储临时对象,如排序、分组等操作产生的临时数据。这些操作可能会导致Temp表空间迅速增大。然而,...

    12c 新特性-Temporary Undo

    ### 12c 新特性:Temporary Undo #### 一、Temporary Undo 概念与优势 在Oracle 12c版本中引入了一项重要的新特性——Temporary Undo,这项技术旨在优化临时表的操作性能,并减少对Redo日志的空间占用。传统的临时...

    脚本-Oracle释放过度使用的Undo表空间

    ### 关于Oracle释放过度使用的Undo表空间的知识点 在Oracle数据库管理中,Undo表空间扮演着极其重要的角色。它主要用于存储事务处理过程中产生的Undo记录,这些记录对于事务回滚、一致性读取以及恢复操作至关重要。...

    Oracle 12C R2本地UNDO模式

    ### Oracle 12C R2 本地UNDO模式详解 #### 一、概述 Oracle 12C R2 引入了一种新的UNDO管理模式——本地UNDO模式(LOCAL_UNDO_ENABLED),它允许每个可插拔数据库(PDB)拥有独立的UNDO表空间。这一特性显著提升了...

    C#做的简单的Undo、Redo功能的实现

    在编程领域,撤销(Undo)和重做(Redo)功能是用户界面中常见的操作,它们允许用户取消或恢复最近的更改。在C#中,我们可以利用.NET框架提供的事件驱动和面向对象特性来实现这样的功能。这篇实验主要探讨了如何在...

    mfc support redo/undo

    5. **undo.h和undo.txt文件**:在提供的文件列表中,`undo.h`可能包含了自定义undo对象的定义,例如`CMyUndoObject`类。`undo.txt`可能是一个文本文件,其中包含了关于如何实现撤销/重做的更详细说明或示例代码。 ...

    Undo

    在IT行业中,“Undo”是一个非常基础且重要的概念,它广泛应用于各种软件和应用程序中,特别是在文本编辑器、图像处理软件以及编程环境中。这个功能允许用户撤销最近的操作,恢复到操作前的状态,极大地提高了工作...

    undo表空间恢复

    标题和描述均提到了“undo表空间恢复”,这在Oracle数据库管理中是一个关键主题,尤其对于数据恢复和事务处理有着重要影响。以下是对这一知识点的深入解析: ### 一、Undo表空间概述 Undo表空间是Oracle数据库中...

    专题之Undo工作原理剖析

    ### 专题之Undo工作原理剖析 #### 一、Oracle 10g中Undo表空间的原理 在深入了解Oracle 10g中Undo的工作原理之前,我们先简要回顾一下Undo的概念及其在数据库中的作用。Undo数据是用于实现事务的一致性、隔离性和...

    多步Undo_Redo的实现

    ### 多步Undo/Redo实现详解 #### 一、引言 在现代软件开发中,尤其是图形编辑或文档编辑应用程序中,Undo/Redo功能是用户体验的重要组成部分。它不仅提高了用户的工作效率,还能增强软件的易用性。在本篇文章中,...

    redo undo framework source code

    在IT行业中,"redo undo"框架是用于实现撤销/重做功能的核心技术,常见于各种软件和应用程序中,如文本编辑器、图像处理软件、数据库系统等。它允许用户取消最近的操作并恢复先前的状态,提供了对用户交互的强大支持...

    数据库undo表空间问题集锦

    在Oracle数据库系统中,"undo表空间"是一个至关重要的组成部分,它主要负责存储事务的回滚(rollback)信息。本文将深入探讨undo表空间的概念、作用、管理以及常见问题的处理,帮助你全面理解并有效地解决数据库undo...

    oracle 收缩undo表空间

    ### Oracle收缩Undo表空间 #### 一、概述 在Oracle数据库管理中,有时需要对Undo表空间进行管理和优化。特别是当Undo表空间因为历史数据积累而变得过大时,可能会影响数据库性能。本文将详细介绍如何通过新建一个...

    图像编辑中的undo

    在图像编辑软件中,撤销(Undo)功能是用户体验的关键组成部分,它允许用户在操作失误时回退到前一个状态,从而避免了永久性错误或不必要的重新工作。在给定的文件信息中,虽然代码片段主要关注于框架类CChildFrame...

    Oracle_Undo与Redo的通俗

    Oracle_Undo与Redo的通俗 Oracle中的Undo和Redo是两个非常重要的概念,它们都是Oracle数据库中事务管理和恢复机制的关键组件。Undo和Redo都是为了确保数据库的一致性和可靠性。 什么是REDO? REDO记录transaction...

    GIS软件中undo与redo的设计与实现

    GIS软件中的Undo与Redo功能是编辑操作的重要组成部分,它们允许用户撤销和恢复之前的编辑行为。本文深入分析了GIS软件中Undo与Redo操作的设计与实现,其主要内容包括Undo与Redo操作的原理、机制、流程以及实现方法。...

Global site tag (gtag.js) - Google Analytics