-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathlearn-vi-06-Undo.html
52 lines (44 loc) · 4.83 KB
/
learn-vi-06-Undo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh" xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="learn-vi.css" />
<title>VIM学习笔记 撤销 (Undo)</title>
</head>
<body>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">单线撤销</p>
<p>在Normal mode下使用<code class="inset">u</code>命令,或者在Command mode下使用<code class="inset">:undo</code>命令,可以撤销上一次的操作。</p>
<p>使用<code class="inset">U</code>命令,可以撤销所有针对当前行最近所做的修改。</p>
<p>Vim可以进行多次撤销,这个次数是由选项undolevels来指定的。例如我们可以使用以下命令,设置撤消次数为5000:</p>
<p style="text-indent:2em"><code class="inset">:set undolevels=5000</code></p>
<p>如果希望重做被撤销的操作,可以使用<code class="inset">:redo</code>或<code class="inset">CTRL-R</code>命令。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">分支撤销</p>
<p>以下述操作为例:新建文件并输入“大象”,然后在新的一行中输入“小牛”,返回Normal mode并按下<code class="inset">u</code>命令。这时输入“小牛”的操作被撤消,文件将只包含“大象”。接着输入“猩猩”,然后返回Normal mode并按下<code class="inset">u</code>命令,此时将撤消输入“猩猩”的操作,文件仍然只包含“大象”。所以你的“小牛”就再也找不回来了。而撤消分支(Undo branches)就可以解决这个问题。使用<code class="inset">g-</code>可以使文件重新包含入“大象”和“小牛”。此过程如下图所示:</p>
<p><a href="https://cacoo.com/diagrams/nXHwxXFypk48081Z" title="Undo Branches"><img src="https://cacoo.com/diagrams/nXHwxXFypk48081Z-BB438.png" alt="Undo Branches" /></a></p>
<p>如果你先撤销了若干改变,然后又进行了一些其它的改变。此时,被撤销的改变就成为一个分支。我们可以使用<code class="inset">:undolist</code>命令查看修改的各个分支。</p>
<p><a href="https://www.flickr.com/photos/yyq123/30221763784/in/dateposted/" title="UndoBranch_list"><img src="https://c2.staticflickr.com/6/5702/30221763784_2fcdcc9e99_o.png" width="372" height="96" alt="UndoBranch_list"></a></p>
<ul>
<li>"编号" 列是改变号。这个编号持续增加,用于标识特定可撤销的改变。</li>
<li>"改变" 列是根结点到此叶结点所需的改变数目。</li>
<li>"时间" 列是此改变发生的时间。</li>
</ul>
<p>使用<code class="inset">:undo</code>命令并指定编号做为参数,则能够撤销到某个分支。</p>
<p>通过在不同的撤消分支间跳转,使用<code class="inset">g-</code>命令能够回到较早的文本状态;而<code class="inset">g+</code>命令则返回较新的文本状态。</p>
<p>我们还可以根据时间撤消操作:使用<code class="inset">:earlier 10m</code>命令退回到10分钟前的文本状态。也可以用<code class="inset">:later 5s</code>命令跳转到5秒以后的编辑状态。命令参数中的"s"代表秒,"m"代表分钟,"h"代表小时。</p>
<p>使用<code class="inset">:help undo-tree</code>和<code class="inset">:help usr_32.txt</code>命令,可以查看撤消操作的帮助信息。</p>
<table summary="Commands" border="2" frame="hsides" rules="all" cellspacing="0" cellpadding="3">
<caption>命令小结</caption>
<tr><td><code class="inset">u</code></td><td rowspan="2">撤消</td></tr>
<tr><td><code class="inset">:undo</code></td></tr>
<tr><td><code class="inset">CTRL-R</code></td><td rowspan="2">重做</td></tr>
<tr><td><code class="inset">:redo</code></td></tr>
<tr><td><code class="inset">:undolist</code></td><td>查看撤消分支</td></tr>
<tr><td><code class="inset">g-</code></td><td>返回较早的文本状态</td></tr>
<tr><td><code class="inset">g+</code></td><td>返回较新的文本状态</td></tr>
<tr><td><code class="inset">:earlier</code></td><td>退回到指定时间前的文本状态</td></tr>
<tr><td><code class="inset">:later</code></td><td>退回到指定时间后的文本状态</td></tr>
</table>
<p style="border-top:1px solid lightgray"><span style="float:right">Ver: 1.1</span><span><<a title="查找(Search)" href="http://tiny.cc/vim-search">上一篇</a> |<a title="笔记列表" href="http://tiny.cc/learn-vim"> 目录 </a>| <a title="打印(Print)" href="http://tiny.cc/vim-print">下一篇</a>></span></p>
</body>
</html>