`

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

    Undo

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

    这个是做实验时,简单基本的Undo、Redo的操作、在一个winForm中实现,并且可以设置Undo的最大次数。包中除了项目外,还附有报告.

    seata-oracle版undolog.sql

    oracle版本的undolog建表语句。 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地...

    相克军 ORACLE 讲座 深度剖析UNDO段 笔记.doc

    UNDO表空间用来存放改变前的旧值。里面也有段区块,ORACLE自动建立生成、自动使用UNDO段。 作为高级别的DBA是需要知道ORACLE如何使用UNDO段的。 1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。...

    C#实现的undo/redo的window窗体

    针对一个window窗体实现了undo/redo功能,包括textBox,checkBox, listBox, comboBox, radioButton以及按钮焦点变化的实现。可能有些小bug思路仅供参考。完整的工程文件,VS打开即可运行,欢迎评论~ 详细说明参见...

    Undo_Redo机制在CAD中的应用

    Undo_Redo机制在CAD中的应用, 摘要:为了增强CAD系统的灵活性,提高设计的效率,本文引入设计模式概念,通过对数据对象的持久化.设计出一套支 持无限Undo/Redo和批量化操作的CAD图形绘制系统,文章介绍了各模块的...

    c# undo/redo例子

    c# undo/redo例子 支持文字的样式,颜色修改 动态进度条

    redo undo framework source code

    redo undo framework source code redo undo framework source code

    12c 新特性-Temporary Undo

    介绍12c新特性Temporary Undo

    C# undo\redo框架

    Undo/Redo framework for editing controls in a Windows application 在Windows应用程序中编辑控件的撤销/重做框架。

    mfc support redo/undo

    实现redo,undo操作,来源于网络分享下。

    undo表空间恢复

    undo表空间恢复

    undo redo 原型设计

    cpp文件 undo redo 原型设计 部分代码 class Command { public: virtual BOOL UnDo() = 0; virtual BOOL ReDo() = 0; };

    UNDO表空间管理

    比较深入浅出的描述了基于oracle10g/11g的UNDO表空间的管理

    专题之Undo工作原理剖析

    专题之Undo工作原理剖析 相当专业的深入剖析 关于oracle 10g中Undo表空间的原理解析 值得看下

    撤销关闭选项卡 Sexy Undo Close Tab chrome插件

    安装 Sexy Undo Close Tab 之后,会在 CHROME 右上角工具栏生成一个小图标,点击该小图标就可以看到最近关闭的标签页,默认收录最近20个关闭的标签页,用户也可以通过扩展的设置页面改变这个数值。 值得一提的是,...

    收缩Oracle数据库的undo表空间

    演示如何收缩Oracle数据库的undo表空间

    oracle 收缩undo表空间

    oracle 收缩undo表空间,需要收缩Undo表空间时特别有用。

    数据库undo表空间问题集锦

    undo 表空间利用率 处理 事务 回滚等介绍 以及如何切换undo表空间

    RAC下的REDO和UNDO管理

    RAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和...

Global site tag (gtag.js) - Google Analytics