用户工具

站点工具


linux:vim:undo

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

linux:vim:undo [2011/12/16 06:10] (当前版本)
行 1: 行 1:
 +====== VIM 中的撤销(Undo) ======
 +
 +===== 单线撤销 =====
 +
 +
 +在Normal mode下使用u命令,或者在Command mode下使用:​undo命令,可以撤销上一次的操作。
 +
 +使用U命令,可以撤销所有针对当前行最近所做的修改。
 +
 +Vim可以进行多次撤销,这个次数是由选项undolevels来指定的。例如我们可以使用以下命令,设置撤消次数为5000:
 +
 +<​code>​
 +:set undolevels=5000
 +</​code>​
 +如果希望重做被撤销的操作,可以使用:​redo或CTRL-R命令。
 +
 +===== 分支撤销 =====
 +
 +
 +以下述操作为例:新建文件并输入“大象”,然后在新的一行中输入“小牛”,返回Normal mode并按下u命令。
 +
 +这时输入“小牛”的操作被撤消,文件将只包含“大象”。
 +
 +接着输入“猩猩”,然后返回Normal mode并按下u命令,此时将撤消输入“猩猩”的操作,文件仍然只包含“大象”。
 +
 +所以你的“小牛”就再也找不回来了。而撤消分支(Undo branches)就可以解决这个问题。使用g-可以使文件重新包含入“大象”和“小牛”。
 +
 +此过程如下图所示:
 +
 +{{:​linux:​vim:​vim-undo-branch.png|Vim分支撤销}}
 +
 +如果你先撤销了若干改变,然后又进行了一些其它的改变。此时,被撤销的改变就成为一个分支。我们可以使用:​undolist命令查看修改的各个分支。
 +
 +{{:​linux:​vim:​vim-undolist.png|Vim undolist查看撤销分支}}
 +
 +  * "​编号"​ 列是改变号。这个编号持续增加,用于标识特定可撤销的改变。
 +  * "​改变"​ 列是根结点到此叶结点所需的改变数目。
 +  * "​时间"​ 列是此改变发生的时间。
 +
 +使用:​undo命令并指定编号做为参数,则能够撤销到某个分支。
 +
 +根据撤消分支,使用g-命令能够回到较早的文本状态;而g+命令则返回较新的文本状态。
 +
 +我们还可以根据时间撤消操作:使用:​earlier 10m命令退回到10分钟前的文本状态。也可以用:​later 5s命令跳转到5秒以后的编辑状态。命令参数中的"​s"​代表秒,"​m"​代表分钟,"​h"​代表小时。
 +
 +===== 命令小结 =====
 +<​code>​
 +u 撤消
 +:undo
 +CTRL-R 重做
 +:redo
 +:​undolist 查看撤消分支
 +g- 返回较早的文本状态
 +g+ 返回较新的文本状态
 +:​earlier 退回到指定时间前的文本状态
 +:​later 退回到指定时间后的文本状态
 +</​code>​
 +
 +===== 参考: =====
 +  * http://​yyq123.blogspot.com/​2010/​10/​vim-undo.html
 +
 +
  
linux/vim/undo.txt · 最后更改: 2011/12/16 06:10 (外部编辑)