2020年3月10日 星期二

vi怎么恢复删除

每当删除一行或者多行文本是,vi都将删除内容保存在一个特殊的存储区中,这个存储区为编号缓冲区(numbered buffer)。vi中共有9个这样的缓冲区,编号从1至9。在任何时候,都可以将一个编号缓冲区的内容插入到编辑缓冲区中。这样做时,需要键入一个“(双引号),后面跟着缓冲区的编号,再后跟一个p或者P(put,放入)命令(提醒:当处理行时,p命令在当前行的下面插入,P命令在当前行的上面插入)。


例如,为了将编号缓冲区#1的内容插入当前行的下面,可以使用:

“1p

为了将编号缓冲区的#2的内容插入到当前行的上面,可以使用:

“2P

通过这种方式,可以恢复并插入之前9次删除的内容。例如,假设您已经进行了若干次删除,而您希望恢复其中一次删除。但是,您记不清是哪一次了。

首先键入 “1p,如果所恢复的文件不是所需的,则可以键入u键撤销插入,并尝试“2p。如果这一次又未得到所需的文本。可以继续键入u键撤销这次插入,再尝试“3p。一直这样往下试,知道找到自己希望的内容。命令序列看上去如下所示:

“1pu“2pu“3pu…

该命令本身相当的酷,但是,vi比这个更强大。在撤销了第一次插入之后,如果使用.(点号)命令重复插入,那么vi将自动地将缓冲区编号加1。这意味着,不用再使用上一个命令序列,可以使用:

“1pu.u.u…

为了测试这个命令序列,先使用vi创建一个包含如下5行内容的文件:

111

222

333

444

555

键入1Ggg跳转到第一行。然后,连续键入dd命令5次删除所有行。现在就可以试一试上述恢复命令序列。

提醒:编号缓冲区只存储删除的行,而不是行的一部分或者单个字符。例如,如果使用10dd删除10行,那么该删除将存储在一个编号缓冲区中。但是,如果使用5x删除5个字符,那么该删除不会保存在编号缓冲区中。

沒有留言:

張貼留言