-
Notifications
You must be signed in to change notification settings - Fork 28
/
learn-vi-48-ExMode.html
46 lines (39 loc) · 4.62 KB
/
learn-vi-48-ExMode.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
<!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学习笔记 Ex模式 (Ex Mode)</title>
</head>
<body>
<h1>VIM学习笔记 Ex模式 (Ex Mode)</h1>
<p>很久很久以前,人们还是使用打印设备而非显示器来与计算机进行沟通。比如打印出某行代码以确定需要修改的内容,然后针对文本进行操作,再次打印以检查变更效果。在此情形之下,行号就成为有效的定位工具。虽然,今天我们已经不再如此依赖打印设备,但是基于行编辑的Ex模式,在操作文本时还是有某些优势的:比如将文本从一个文件移动到另一个文件;快速地对大于单个屏幕的文本块进行编辑;针对整个文件中的特定模式进行全局替换等等。</p>
<p>可以说,Vim是Ex行编辑器的可视模式。或者说,Ex是Vim的底层行编辑器。</p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">进入Ex模式</p>
<p>在操作系统的命令行中,使用以下Ex命令,可以进入Vim的Ex模式:</p>
<p style="text-indent:2em"><code class="inset">$ ex filename</code></p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExMode.png" title="ExMode"><img src="https://yyq123.github.io/learn-vim/images/ExMode.png" alt="ExMode" /></a></p>
<p>在Vim的常规模式下,使用<code class="inset">Q</code>或者<code class="inset">gQ</code>命令,可以进入Vim的Ex模式:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExMode_FromNormalMode.png" title="ExMode_FromNormalMode"><img src="https://yyq123.github.io/learn-vim/images/ExMode_FromNormalMode.png" alt="ExMode_FromNormalMode" width="500" height="40" /></a></p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">执行Ex命令</p>
<p>ex命令由行地址和命令组成,并以回车键结束。</p>
<p>如果我们在命令中没有指定行号,那么命令将默认作用于当前行。例如以下命令将在当前行中,将第一个"Hello"替换为"Hi":</p>
<p style="text-indent:2em"><code class="inset">:s/Hello/Hi</code></p>
<p>请注意,在命令执行之后,受到影响的当前行,将会被重新打印到屏幕上:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExMode_ChangeCurrentLine.png" title="ExMode_ChangeCurrentLine"><img src="https://yyq123.github.io/learn-vim/images/ExMode_ChangeCurrentLine.png" alt="ExMode_ChangeCurrentLine" /></a></p>
<p>如果我们在命令中指定了行号,那么命令将作用于指定的行范围。例如以下命令将在多行中,将所有"Hello"替换为"Hi":</p>
<p style="text-indent:2em"><code class="inset">:1,6s/Hello/Hi</code></p>
<p>请注意,在命令执行之后,受到影响的行信息,将会被重新打印到屏幕上:</p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExMode_ChangeMultiLine.png" title="ExMode_ChangeMultiLine"><img src="https://yyq123.github.io/learn-vim/images/ExMode_ChangeMultiLine.png" alt="ExMode_ChangeMultiLine" /></a></p>
<p style="font-weight:bold; border-bottom:1px solid lightgray; border-left:6px solid lightgray; padding:0 0 3px 5px">退出Ex模式</p>
<p>使用以下命令,可以退出Ex模式,并进入常规模式:</p>
<p style="text-indent:2em"><code class="inset">:vi</code></p>
<p>使用以下命令,可以退出Ex模式,并返回到操作系统的命令行提示符下:</p>
<p style="text-indent:2em"><code class="inset">:q</code></p>
<p><a href="https://yyq123.github.io/learn-vim/images/ExMode_q.png" title="ExMode_Q"><img src="https://yyq123.github.io/learn-vim/images/ExMode_q.png" alt="ExMode_Q" /></a></p>
<p>使用以下命令,可以查看关于Ex模式的帮助信息:</p>
<p style="text-indent:2em"><code class="inset">:help Ex-mode</code></p>
<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="可视化模式 (Visual Mode)" href="http://yyq123.github.io/learn-vim/learn-vi-45-VisualMode.html">上一篇</a> |<a title="笔记列表" href="http://yyq123.github.com/learn-vim/learn-vi-00-00-TOC.html"> 目录 </a>| <a title="命令行模式 (Command-line Mode)" href="http://yyq123.github.io/learn-vim/learn-vi-46-CommandlineMode.html">下一篇</a>></span></p>
</body>
</html>