使用 Vim 编辑文件内容时,经常会有如下 2 种需求:
- 对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子。
- 将文件内容恢复之后,经过仔细考虑,又感觉还是刚才修改过的内容更好,想撤销之前做的恢复操作。
基于这 2 种需求,Vim 编辑器提供了撤销和恢复撤销的命令,如表 1 所示。
快捷键 | 功能 |
---|---|
u(小写) | undo 的第 1 个字母,功能是撤销最近一次对文本做的修改操作。 |
Ctrl+R | Redo 的第 1 个字母,功能是恢复最近一次所做的撤销操作。 |
U(大写) | 第一次会撤销对一行文本(光标所在行)做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作。 |
注意,以上这 3 种命令都必须在 Vim 编辑器处于命令模式时才能使用。
下面通过一个例子来演示以上 3 个命令的具体用法。首先,我们新建一个 demo.txt 文件并打开,键入一行内容,例如:
http://www.linuxyz.cn
然后按“Esc”键,使 Vim 由输入模式转为命令模式,并使用 yy 命令将这一行文本复制到剪贴板中,如此我们就可以在文本任意位置通过键入 p(或大写的 P)命令将复制的内容粘贴到光标所在的位置。
假设我们将光标调整到第一行最后一个字符处,连续按两次 p 命令(粘贴 2 次),则此时文本中的内容变为:
http://www.linuxyz.cn
http://www.linuxyz.cn
http://www.linuxyz.cn
在此基础上,通过 u(小写)命令就可以使文本内容恢复到上一次做粘贴操作之前的样子,其中“上一次”的含义是,恢复操作是可以叠加的,即按一次就会在现有基础上做一次恢复操作。
比如,继续操作 demo.txt 文件,按一次 u,会发现其文本内容变为:
http://www.linuxyz.cn
http://www.linuxyz.cn
再按一次 u,文本内容继续恢复为:
http://www.linuxyz.cn
同样,恢复撤销的操作和撤销操作是相对应的,通过按 Ctrl+R 组合键,可以撤销之前所做的一次恢复操作。例如,继续操作 demo.txt 文件,按一次 Ctrl+R,会发现其文本内容恢复为:
http://www.linuxyz.cn
http://www.linuxyz.cn
再按一次 Ctrl+R,文本内容又恢复为:
http://www.linuxyz.cn
http://www.linuxyz.cn
http://www.linuxyz.cn
U(大写)的功能和之前的 2 个命令不同,它的作用是撤销或恢复撤销对光标所在行文本所做的全部操作。比如,我们对 demo.txt 文件内容做如下修改:
http://www.linuxyz.cn
http://www.linuxyz.cn
Linux教程 https://www.linuxyz.cn/introduction-to-linux
可以看到,这里对第三行文本做了 2 处修改(红色标注部分)。在此基础上,如果在命令模式下键入 U(大写),可以看到,之前对第 3 行所做的 2 处修改,全部被恢复了:
http://www.linuxyz.cn
http://www.linuxyz.cn
http://www.linuxyz.cn
如果此时再键入 U(大写),则又会恢复之前对第 3 行文本做过的全部操作:
http://www.linuxyz.cn
http://www.linuxyz.cn
Linux教程 https://www.linuxyz.cn/introduction-to-linux