-
Notifications
You must be signed in to change notification settings - Fork 28
/
learn-vi-02-Move.html
81 lines (75 loc) · 9.08 KB
/
learn-vi-02-Move.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!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学习笔记 移动 (Movement)</title>
</head>
<body>
<h1>VIM学习笔记 移动 (Movement)</h1>
<h2 class="article"><a id="left-right-motions">在行内移动</a></h2>
<p>使用<code class="inset">w</code>命令可以向前移动一个单词,使用<code class="inset">b</code>命令可以向后移动一个单词。通过在命令中增加数字前缀,可以快速移动指定个数的单词。例如<code class="inset">4w</code>可以向前移动4个单词,而<code class="inset">5b</code>则是向后移动5个单词。命令<code class="inset">e</code>也是向前移到一个单词,并将光标定位到单词的结尾处;命令<code class="inset">ge</code>则是向后移到一个单词并定位到前一个单词的结尾处。</p>
<p>利用<code class="inset">$</code>命令可以使光标移到一行的结尾处;而<code class="inset">g_</code>命令则会而将光标移到一行的最后一个非空字符处。</p>
<p>利用<code class="inset">0</code>命令可以使光标移到一行的开始处。而<code class="inset">^</code>命令则会忽略开头的空格,而将光标移到一行的第一个非空字符处。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/Movement_Inline.png" title="Movement_Inline"><img src="https://yyq123.github.io/learn-vim/images/Movement_Inline.png" alt="Movement_Inline" width="550" height="239" /></a></p>
<h2 class="article"><a id="up-down-motions">在行间移动</a></h2>
<p>进入<a href="http://yyq123.github.io/learn-vim/learn-vi-46-CommandlineMode.html" title="命令行模式(Command-line Mode)">命令行模式</a>,直接输入行号,按下回车键即可移动到指定的行。</p>
<p>在常规模式下使用<code class="inset">G</code>命令,可以移动到指定的行。例如<code class="inset">3G</code>可以移动到第3行。而<code class="inset">1G</code>则可以移到文件的开头,而<code class="inset">G</code>则是移动到文件末尾。</p>
<p>使用<code class="inset">-</code>命令,可以移动到上一行的第一个非空字符处;而<code class="inset">+</code>命令,则可以移动到下一行的第一个非空字符处。</p>
<p>使用<code class="inset">)</code>命令,可以向前移动一个句子;而<code class="inset">(</code>命令,则向后移动一个句子。</p>
<p>使用<code class="inset">}</code>命令,可以向前移动一个段落;而<code class="inset">{</code>命令,则向后移动一个段落。</p>
<p>将以上移动命令与数字相结合,可以进一步加快移动的速度。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/Movement_Gotoline.png" title="Movement_Gotoline"><img src="https://yyq123.github.io/learn-vim/images/Movement_Gotoline.png" alt="Movement_Gotoline" width="550" height="365" /></a></p>
<p>使用<kbd>ctrl+U</kbd>和<kbd>ctrl+D</kbd>命令可以向上和向下翻页,以快速移动到文章的不同部分。请参考<a title="滚动屏幕" href="http://yyq123.blogspot.com/2009/02/vim_27.html">滚动屏幕</a>章节中的详细介绍。</p>
<h2 class="article"><a id="CTRL-G">显示位置信息</a></h2>
<p>使用<code class="inset">:set number</code>命令可以显示行号;而<code class="inset">:set nonumber</code>命令则取消行号显示。</p>
<p>使用<code class="inset">CTRL-G</code>命令,将在屏幕底部显示当前所在位置的信息。我们还可以在CTRL-G命令之前增加数字参数,数字越大得到的信息就越详细。命令<code class="inset">1CTRL-G</code>会显示文件的全路径。命令<code class="inset">2CTRL-G</code>会同时显示缓冲区的数字标号。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/info_CtrlG.png" title="info_CtrlG"><img src="https://yyq123.github.io/learn-vim/images/info_CtrlG.png" alt="info_CtrlG" width="550" height="40" /></a></p>
<p>使用<code class="inset">gCTRL-G</code>命令,可以显示当前文件中的字符统计信息。包括当前行数(Line)、列数(Col)、字数(Word)、字符数(Char)和字节数(Byte)等信息。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/info_gCtrlG.png" title="info_gCtrlG"><img src="https://yyq123.github.io/learn-vim/images/info_gCtrlG.png" alt="info_gCtrlG" width="550" height="54" /></a></p>
<p>使用<code class="inset">:set ruler</code>命令,将在屏幕右下角显示当前所在的行和列,以及相对于整个文件的位置。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/set_ruler.png" title="set_ruler"><img src="https://yyq123.github.io/learn-vim/images/set_ruler.png" alt="set_ruler" width="550" height="25" /></a></p>
<h2 class="article"><a id="jump-motions">移动的历史记录</a></h2>
<p>Vim可以记录在文件中的移动轨迹,并可以回溯到之前到过的位置。例如执行以下命令,移动到不同的行:<code class="inset">1G</code>到第一行;<code class="inset">10G</code>到第十行;<code class="inset">20G</code>到第二十行。然后执行<code class="inset">:jumps</code>命令,将会显示移动记录的列表。使用<code class="inset">CTRL-O</code>命令,可以跳转到上一个(较旧的)位置。而<code class="inset">CTRL-I</code>命令,则可以跳转到下一个(较新的)位置。跳转不仅仅涉及当前文件,也会跳转到曾经涉足的其它文件。</p>
<p><a href="https://yyq123.github.io/learn-vim/images/jumps.png" title="jumps"><img src="https://yyq123.github.io/learn-vim/images/jumps.png" alt="jumps" /></a></p>
<p>使用<code class="inset">:clearjumps</code>命令,可以清除所有移动历史记录。</p>
<p><span style="font-weight:bold; color:#4169E1; margin-left:0.2em">?</span>使用以下命令,可以查看相关帮助信息:</p>
<p style="text-indent:2em"><code class="inset">:help motion.txt</code></p>
<table summary="Commands" border="2" frame="hsides" rules="all" cellspacing="0" cellpadding="3">
<caption>命令小结</caption>
<tr><td><code class="inset">^</code></td><td colspan="1" rowspan="3">移动到当前行的第一个非空字符处</td></tr>
<tr><td><code class="inset">g^</code></td></tr>
<tr><td><code class="inset">_</code></td></tr>
<tr><td><code class="inset"><Home></code></td><td colspan="1" rowspan="4">移动到当前行的第一个字符处</td></tr>
<tr><td><code class="inset">g<Home></code></td></tr>
<tr><td><code class="inset">0</code></td></tr>
<tr><td><code class="inset">g0</code></td></tr>
<tr><td><code class="inset">g_</code></td><td>移动到当前行的最后一个非空字符处</td></tr>
<tr><td><code class="inset"><End></code></td><td colspan="1" rowspan="4">移动到当前行的最后一个字符处</td></tr>
<tr><td><code class="inset">g<End></code></td></tr>
<tr><td><code class="inset">$</code></td></tr>
<tr><td><code class="inset">g$</code></td></tr>
<tr><td><code class="inset">gm</code></td><td>移动到当前行的中间处</td></tr>
<tr><td><code class="inset">w</code></td><td>向前移动一个单词</td></tr>
<tr><td><code class="inset">b</code></td><td>向后移动一个单词</td></tr>
<tr><td><code class="inset">G</code></td><td>移动到指定行</td></tr>
<tr><td><code class="inset">:set number</code></td><td>显示行号</td></tr>
<tr><td><code class="inset">:set nonumber</code></td><td>不显示行号</td></tr>
<tr><td><code class="inset">count|</code></td><td>移动到count列</td></tr>
<tr><td><code class="inset">counth</code></td><td>向左移动count个字符</td></tr>
<tr><td><code class="inset">countl</code></td><td>向右移动count个字符</td></tr>
<tr><td><code class="inset">countgo</code></td><td>移动到第count个字符处</td></tr>
<tr><td><code class="inset">-</code></td><td>移动到上一行的第一个非空字符处</td></tr>
<tr><td><code class="inset">+</code></td><td>移动到下一行的第一个非空字符处</td></tr>
<tr><td><code class="inset">)</code></td><td>向前移动一个句子</td></tr>
<tr><td><code class="inset">(</code></td><td>向后移动一个句子</td></tr>
<tr><td><code class="inset">}</code></td><td>向前移动一个段落</td></tr>
<tr><td><code class="inset">{</code></td><td>向后移动一个段落</td></tr>
<tr><td><code class="inset">G</code></td><td>移动到文件末尾</td></tr>
<tr><td><code class="inset">gg</code></td><td>移动到文件开头</td></tr>
<tr><td><code class="inset">`.</code></td><td>移动到上次编辑处</td></tr>
</table>
<p style="border-top:1px solid lightgray"><span style="float:right">Ver: 2.0 | <a href="mailto:[email protected]">YYQ</a></span><span><<a title="基本编辑" href="http://yyq123.github.io/learn-vim/learn-vi-01-Basic.html">上一篇</a> |<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-00-TOC.html"> 目录 </a>| <a title="复制和粘贴" href="http://yyq123.github.io/learn-vim/learn-vi-03-yank.html">下一篇</a>></span></p>
</body>
</html>