1 |
r0bertz 08/03/31 20:41:10 |
2 |
|
3 |
Added: vi-guide.xml |
4 |
Log: |
5 |
[zh_cn] added vi-guide.xml |
6 |
|
7 |
Revision Changes Path |
8 |
1.1 xml/htdocs/doc/zh_cn/vi-guide.xml |
9 |
|
10 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/vi-guide.xml?rev=1.1&view=markup |
11 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/vi-guide.xml?rev=1.1&content-type=text/plain |
12 |
|
13 |
Index: vi-guide.xml |
14 |
=================================================================== |
15 |
<?xml version="1.0" encoding="UTF-8"?> |
16 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
17 |
|
18 |
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/zh_cn/vi-guide.xml,v 1.1 2008/03/31 20:41:09 r0bertz Exp $ --> |
19 |
<!-- English CVS version: 1.14 --> |
20 |
|
21 |
<guide link="/doc/zh_cn/vi-guide.xml" lang="zh_cn"> |
22 |
<title>学习vi──备忘单方法</title> |
23 |
<author title="Author"> |
24 |
<mail link="drobbins@g.o">Daniel Robbins</mail> |
25 |
</author> |
26 |
<author title="Author"> |
27 |
<mail link="stocke2@g.o">Eric Stockbridge</mail> |
28 |
</author> |
29 |
<author title="Editor"> |
30 |
<mail link="bennyc@g.o">Benny Chuang</mail> |
31 |
</author> |
32 |
<author title="译者"> |
33 |
<mail link="jingcheng01@×××××.com">井诚</mail> |
34 |
</author> |
35 |
|
36 |
<abstract> |
37 |
本指南将教你如何使用vi,并使用备忘单的方式来加快学习进程。这会是满足新手需要的第一份vi指南。 |
38 |
</abstract> |
39 |
|
40 |
<version>1.1.7</version> |
41 |
<date>2005-07-21</date> |
42 |
|
43 |
<chapter> |
44 |
<title>新手上路</title> |
45 |
<section> |
46 |
<title>介绍</title> |
47 |
<body> |
48 |
|
49 |
<p> |
50 |
本教程将会向你展示如何使用vi──一个强大的可视化编辑器。通过使用特别的<e>备忘单</e>方法,本教程可使你成为一名熟练的vi用户,而不要求大量的时间。在这个vi教程中,你将会学会如何移动、编辑文本、使用插入模式、复制和粘贴文本,以及使用诸如可视化模式和多窗口编辑这样重要的vim扩展。 |
51 |
</p> |
52 |
|
53 |
<p> |
54 |
如果你没听说过vi,或者不习惯使用vi,那么你就应该对自己负责,利用本教程赶紧学习这个最流行最强大的Linux/UNIX可视化编辑程序。 |
55 |
</p> |
56 |
|
57 |
</body> |
58 |
</section> |
59 |
<section> |
60 |
<title>关于本指南</title> |
61 |
<body> |
62 |
|
63 |
<p> |
64 |
只有特别的一件事会使学习vi很困难──vi有众多的命令。为了有效地使用vi,你需要记住不少命令。这会需要很长时间,而本教程的目标之一就是不占用你的很多时间。所以,我们一开始就有一个挑战──我是如何具体地帮助你在短期就记住众多的命令? |
65 |
</p> |
66 |
|
67 |
<p> |
68 |
为了处理这个挑战,在我们进行本教程的过程中,会逐渐地生成一个vi备忘单。这个单子会包括所有重要的vi命令。当你完成本教程后,你将能在忘记了某个命令的时候参考该备忘单。时间一长,由于你记住了命令,你会渐渐地越来越不依赖于备忘单。通过使用备忘单的方式,你将能前所未有地更快学习如何使用vi! |
69 |
</p> |
70 |
|
71 |
</body> |
72 |
</section> |
73 |
<section> |
74 |
<title>学习过程</title> |
75 |
<body> |
76 |
|
77 |
<p> |
78 |
在本指南中,我将使用几个技巧来帮助你学习。首先,我会描述某个命令是如何工作的,正如之前你所期望的。然后,我将让你试着在vi中使用该命令(为了练习)。接下来我会让你将该命令转录到备忘单上(以备将来参考)。如果你想更快地学习vi,执行所有这些步骤是很重要的。在vi中试用命令并转录到备忘单中将会帮助你记忆该命令。 |
79 |
</p> |
80 |
|
81 |
</body> |
82 |
</section> |
83 |
<section> |
84 |
<title>介绍vim</title> |
85 |
<body> |
86 |
|
87 |
<p> |
88 |
vi有很多版本,而我将会向你展示如何使用一个叫做<c>vim</c>的版本。vim非常流行,并有使vi漂亮了很多的众多扩展(当我示范vim专用的命令时,我会加以说明)。如果你需要安装vim,可以从<uri link="http://www.vim.org/">www.vim.org</uri>那里得到它。除了增强版的命令行vi,vim还增加了gvim,一个漂亮的图形化编辑器,可以被配置来调用优秀的GTK+图形化界面库。这是我系统上的gvim截图: |
89 |
</p> |
90 |
|
91 |
<figure link="/images/vishot.png" short="截图" caption="VIM截图"/> |
92 |
|
93 |
<p> |
94 |
如果你是vi新手,请让gvim运行在你的系统上。对于初学者来说,在图形化界面下使用vi可以使事情变得简单一些。 |
95 |
</p> |
96 |
|
97 |
</body> |
98 |
</section> |
99 |
</chapter> |
100 |
|
101 |
<chapter> |
102 |
<title>第一步</title> |
103 |
<section> |
104 |
<title>打开文件</title> |
105 |
<body> |
106 |
|
107 |
<p> |
108 |
在使用vi编辑文件之前,你需要知道如何使用vi在文件中移动。vi有许多移动命令,而我们将会看到其中的很多。为教程中的这一部分找一个不重要的文本文件,并通过输入以下命令来将它载入到vi中: |
109 |
</p> |
110 |
|
111 |
<pre caption="将文件载入vi"> |
112 |
$ <i>vi myfile.txt</i> |
113 |
</pre> |
114 |
|
115 |
<p> |
116 |
如果你已安装了vim,输入<c>vim myfile.txt</c>。如果你更喜欢使用gvim,输入<c>gvim myfile.txt</c>。<path>myfile.txt</path>应该是你系统上的某个文本文件名。 |
117 |
</p> |
118 |
|
119 |
</body> |
120 |
</section> |
121 |
<section> |
122 |
<title>vi内部</title> |
123 |
<body> |
124 |
|
125 |
<p> |
126 |
vi启动之后,你应该能在屏幕上看到载入的文本文件的一部分了。恭喜──你已经进入vi了!vi不像其他的编辑器,当它启动时处于一个叫做<e>命令模式</e>的特殊模式中。这意味着如果你按键盘上的<c>l</c>键,光标会向右移一位,而不是在当前光标位置上插入一个<c>l</c>。在命令模式下,键盘上的字符是用来向vi传送命令的,而不是在文本中插入文字字符的。移动命令是最重要的命令类型之一;让我们来看看其中的一些。 |
127 |
</p> |
128 |
|
129 |
</body> |
130 |
</section> |
131 |
</chapter> |
132 |
|
133 |
<chapter> |
134 |
<title>移动</title> |
135 |
<section> |
136 |
<title>vi中的移动,第1部分</title> |
137 |
<body> |
138 |
|
139 |
<p> |
140 |
当在命令模式中时,你可以分别使用<c>h</c>、<c>j</c>、<c>k</c>和<c>l</c>键来向左、下、上和右移动。如果你正在使用现代版本的vi,你也可以使用方向键来达到同样的目的。<c>h</c>、<c>j</c>、<c>k</c>和<c>l</c>键很方便,这是因为一旦你适应了它们,你就可以不用把手指从主键盘上移开就在文件中四处移动。试着用<c>h</c>、<c>j</c>、<c>k</c>和<c>l</c>键(还有方向键)在文本文件中移动吧。试着用<c>h</c>键直到你移到了一行的开始处。注意,vi不允许你在行首时用<c>h</c>键转到前一行。同样地,你也不能在行尾时用<c>l</c>键转到下一行。 |
141 |
</p> |
142 |
|
143 |
</body> |
144 |
</section> |
145 |
<section> |
146 |
<title>vi中的移动,第2部分</title> |
147 |
<body> |
148 |
|
149 |
<p> |
150 |
vi为跳转到当前行的首或尾提供了特别的捷径。你可以按<c>0</c>(零)键来跳转到一行的开始,以及<c>$</c>键跳转到末尾。试试它们看看。由于vi有许多便捷的移动命令,它也是一个伟大的“翻页工具”(如同more或者less命令)。用vi做翻页也会帮助你迅速学习所有的移动命令。 |
151 |
</p> |
152 |
|
153 |
<p> |
154 |
你也可以用<c><CTR>F</c>和<c><CTR>B</c>来一次前进或后退一页。现代版本的vi(比如vim)也允许你用<c>PGUP</c>和<c>PGDOWN</c>键达到同样的目的。 |
155 |
</p> |
156 |
|
157 |
</body> |
158 |
</section> |
159 |
<section> |
160 |
<title>词语移动,第1部分</title> |
161 |
<body> |
162 |
|
163 |
<p> |
164 |
vi也允许你向左右按词移动。按<c>w</c>键移到下一个词的<e>第一个</e>字符。按<c>e</c>键移到下一个词的<e>最后一个</e>字符。按<c>b</c>键移到<e>前一个</e>词的第一个字符。试验一下它们。 |
165 |
</p> |
166 |
|
167 |
</body> |
168 |
</section> |
169 |
<section> |
170 |
<title>词语移动,第2部分</title> |
171 |
<body> |
172 |
|
173 |
<p> |
174 |
玩过词语移动命令之后,可能你已经注意到vi将像<c>foo-bar-oni</c>这样的词看做是五个分开的词!这是因为vi默认地按照空格<e>或者</e>标点来区分词语。因此<c>foo-bar-oni</c>被看做是五个词:<c>foo</c>、<c>-</c>、<c>bar</c>、<c>-</c>和<c>oni</c>。 |
175 |
</p> |
176 |
|
177 |
<p> |
178 |
有时这是你想要的,而有时这却不是。幸运的是,vi也能理解“长词”的概念。vi仅按照<e>空格或是新行</e>分解长词。这意味着当<c>foo-bar-oni</c>被看做是五个vi词语时,却仅仅是一个vi长词。 |
179 |
</p> |
180 |
|
181 |
</body> |
182 |
</section> |
183 |
<section> |
184 |
<title>词语移动,第3部分</title> |
185 |
<body> |
186 |
|
187 |
<p> |
188 |
你可以用一个<e>大写的</e>词语移动命令来跳转到前一个或后一个长词。用<e>W</e>键来跳转到下一个长词的第一个字符,用<e>E</e>键跳转到下一个长词的最后一个字符,用<e>B</e>键跳转到前一个长词的第一个字符。试验一下它们,然后比较一下匹配的单词和长词移动命令,直到你理解了它们之间的不同。 |
189 |
</p> |
190 |
|
191 |
</body> |
192 |
</section> |
193 |
<section> |
194 |
<title>更大的移动</title> |
195 |
<body> |
196 |
|
197 |
<p> |
198 |
在我们开始把它们集中到备忘单之前,再来看看几个命令。你可以用<c>(</c>和<c>)</c>键来移到前一句或后一句的开始处。还有,你可以敲<c>{</c>或<c>}</c>键来转到当前段落或下一段落的开始处。试验一下它们。 |
199 |
</p> |
200 |
|
201 |
</body> |
202 |
</section> |
203 |
</chapter> |
204 |
|
205 |
<chapter> |
206 |
<title>退出</title> |
207 |
<section> |
208 |
<body> |
209 |
|
210 |
<p> |
211 |
我们已经讲过了基本的移动命令,但是你还需要知道其他一些命令。输入<c>:q</c>会退出vi。如果这个不灵,那你可能意外地修改了文件某处。如要让vi放弃所有更改而退出,输入<c>:q!</c>。现在你应该位于命令提示符处了。 |
212 |
</p> |
213 |
|
214 |
<p> |
215 |
在vi中,所有以<c>:</c>开头的命令都被称为<e>ex模式</e>命令。这是因为vi有一个内建的非可视化的编辑器,叫做<e>ex</e>。它可以像sed那样用来做基于行的编辑操作。还有,它可以用来退出,就像我们刚刚看到的那样。只要你在命令模式下敲了<c>Q</c>键,就会转到ex模式。如果这发生在你身上了,那你会面对一个:提示符,而且输入回车符会使整个屏幕向上翻页并退出。只要输入vi并回车就能又回到vi模式。 |
216 |
</p> |
217 |
|
218 |
</body> |
219 |
</section> |
220 |
</chapter> |
221 |
|
222 |
<chapter> |
223 |
<title>备忘单</title> |
224 |
<section> |
225 |
<title>备忘单的开端</title> |
226 |
<body> |
227 |
|
228 |
<p> |
229 |
我们已经讲过了许多命令,现在是把它们转录到备忘单的时候了。为此你需要一张信纸,或者A4大小的纸张(我们将会把许多信息都记在这张单子上!)。这张图片展示了我的备忘单,转录了到现在为止所有我们讲到的命令。如果可能的话请模仿我的布局,这样我们可以把所有的信息都集中在一张单子里。 |
230 |
</p> |
231 |
|
232 |
<figure link="/images/vicheat-first.png" short="备忘单的第一部分" |
233 |
caption="备忘单"/> |
234 |
|
235 |
</body> |
236 |
</section> |
237 |
<section> |
238 |
<title>vi杂项</title> |
239 |
<body> |
240 |
|
241 |
<p> |
242 |
让我们继续学习命令的脚步。在命令模式中,你可以输入<c>G</c>键来跳转到特定的行。要跳转到文件的首行,输入<c>1G</c>。注意<c>G</c>是大写的。 |
243 |
</p> |
244 |
|
245 |
<p> |
246 |
如果你想跳转到下一处某个文本模式的出现,输入<c>/<regexp></c>后敲<c>回车</c>。用你正在寻找的正则表达式替换<regexp>。如果你不知道怎么使用正则表达式,不要烦躁──输入<c>foo</c>会移动到下一处<e>foo</e>出现的地方。对此你唯一需要注意的是,当你想引用<c>^</c>、<c>.</c>、<c>$</c>或<c>\</c>字符时,用反斜线符号(<c>\</c>)做这些符号的前缀。比如,<c>foo\.gif</c>会搜索下一处“foo.gif”的出现。 |
247 |
</p> |
248 |
|
249 |
<p> |
250 |
要向前重复搜索,敲<c>n</c>键。要向后重复搜索,输入<c>N</c>。跟往常一样,在你自己的vi编辑器里测试这些命令。你也可以输入<c>//</c>来重复上一次搜索。 |
251 |
</p> |
252 |
|
253 |
</body> |
254 |
</section> |
255 |
</chapter> |
256 |
|
257 |
<chapter> |
258 |
<title>保存和编辑</title> |
259 |
<section> |
260 |
<title>保存和另存为</title> |
261 |
<body> |
262 |
|
263 |
<p> |
264 |
我们已经讲过了如何使用<e>ex</e>命令<c>:q</c>来从vi中退出。如果你想要保存更改,输入<c>:w</c>。如果你想要将更改保存到另一个文件,输入<c>:w filename.txt</c>来另存为<e>filename.txt</e>。如果你想保存并退出,输入<c>:x</c>或者<c>:wq</c>。 |
265 |
</p> |
266 |
|
267 |
<p> |
268 |
在vim(还有其他高级vi编辑器,像elvis)中,你可以同时打开多个缓冲区。要在新窗口中打开文件,输入<c>:sp filename.txt</c>。<path>filename.txt</path>会在一个新的分割窗口中显示为编辑打开。要在各窗口间切换,输入<c><CTR>w<CTR>w</c>(control-w两次)。你输入的任何<c>:q</c>、<c>:q!</c>、<c>:w</c>或<c>:x</c>命令只会作用于当前激活的窗口。 |
269 |
</p> |
270 |
|
271 |
</body> |
272 |
</section> |
273 |
<section> |
274 |
<title>简单编辑</title> |
275 |
<body> |
276 |
|
277 |
<p> |
278 |
现在是开始学习一些简单编辑命令的时候了。此处我们将要涉及的命令被认为是<e>简单的</e>,是因为这些命令使你一直处于命令模式中。更复杂一些的命令会自动将你放到插入模式中──一种允许你从键盘输入文字数据的模式。我们也会涉及一点儿这些情况。 |
279 |
</p> |
280 |
|
281 |
<p> |
282 |
而现在,试着移到一些字符上并重复按<c>x</c>键。你会看到<c>x</c>会删除当前光标下的字符。现在,移动到文本文件中某段落的中间,然后按<c>J</c>(大写)。你会看到<c>J</c>命令让vi将下一行加到当前行末尾。现在,移到一个字符上并按<c>r</c>,然后输入一个新字符;你会看到原始字符被替换掉了。最后,移到文件中任一行并输入<c>dd</c>,你会看到<c>dd</c>删除了文本的当前行。 |
283 |
</p> |
284 |
|
285 |
</body> |
286 |
</section> |
287 |
<section> |
288 |
<title>重复和删除</title> |
289 |
<body> |
290 |
|
291 |
<p> |
292 |
你可以靠<c>.</c>键来重复任一编辑命令。如果你试验一下,会看到输入<c>dd...</c>会删掉4行,而<c>J......</c>会加入4行。与往常一样,vi提供了其他便捷的方式。 |
293 |
</p> |
294 |
|
295 |
<p> |
296 |
你也可以用<c>d</c>命令加上其他命令来删除文本。比方说,<c>dw</c>会从当前位置一直删到下一个词的开始处;<c>d)</c>会一直删到下一句为止;而<c>d}</c>会删掉本段落的其余部分。试一下<c>d</c>命令和其他编辑命令,直到你适应了它们。 |
297 |
</p> |
298 |
|
299 |
</body> |
300 |
</section> |
301 |
<section> |
302 |
<title>撤消!</title> |
303 |
<body> |
304 |
|
305 |
<p> |
306 |
现在我们正在试验删除,这也是学习如何撤消更改的好时候。按<c>u</c>键,原始版本的vi仅允许你撤消最后一次的编辑。然而,像vim之类的现代版本vi会允许你重复按<c>u</c>键继续撤消对文件的更改。试着将一些<c>d</c>和<c>u</c>命令混合起来。 |
307 |
</p> |
308 |
|
309 |
</body> |
310 |
</section> |
311 |
<section> |
312 |
<title>更新备忘单</title> |
313 |
<body> |
314 |
|
315 |
<p> |
316 |
到更新备忘单的时候了!加上到目前为止我们讲过的命令后,你的备忘单看起来应该是这样的: |
317 |
</p> |
318 |
|
319 |
<figure link="/images/vicheat-edit.png" short="备忘单" caption="含有编辑命令的备忘单"/> |
320 |
|
321 |
</body> |
322 |
</section> |
323 |
</chapter> |
324 |
|
325 |
<chapter> |
326 |
<title>插入模式</title> |
327 |
<section> |
328 |
<body> |
329 |
|
330 |
<p> |
331 |
迄今为止,我们已经讲了如何在vi中移动,进行文件输入/输出,以及一些基本的编辑操作。然而,我仍然没有向你展示如何实际地输入自由格式的文本!这是故意的,因为vi的插入模式一开始有点儿复杂。但是,当你适应了插入模式之后,它的复杂性(以及灵活性)会成为优点。 |
332 |
</p> |
333 |
|
334 |
<p> |
335 |
在vi的<e>插入模式</e>中,你将能直接向屏幕里输入文本,就像在其他很多可视化编辑器中一样。一旦你输入完更改,可敲Esc键退回到<e>命令模式</e>。你可以按<c>i</c>键或<c>a</c>键进入插入模式。如果你按<c>i</c>键,你的文本会被<c>插入到</c>当前字符之前,而如果你按<c>a</c>键,你的文本会被<e>续写</e>到当前字符之后。记住,在你输入了文本之后,敲<c><ESC></c>来回到命令模式。 |
336 |
</p> |
337 |
|
338 |
</body> |
339 |
</section> |
340 |
<section> |
341 |
<title>插入模式的益处</title> |
342 |
<body> |
343 |
|
344 |
<p> |
345 |
继续试着使用<c>a</c>和<c>i</c>命令。敲<c>a</c>键或<c>i</c>键,输入一些文本,然后敲ESC回到命令模式。敲完<c>a</c>或<c>i</c>后,试着敲<c><ENTER></c>看看会发生什么。试着使用方向键和<c><DEL></c>键来感受一下插入模式是怎样工作的。通过使用方向键和<c><DEL></c>键,你可以执行大量的编辑步骤,而不用重复进出插入模式。 |
346 |
</p> |
347 |
|
348 |
</body> |
349 |
</section> |
350 |
<section> |
351 |
<title>插入选项</title> |
352 |
<body> |
353 |
|
354 |
<p> |
355 |
这里有一些其他进入插入模式的便捷方式。不管你当前处于当前行的什么位置,按<c>A</c>键(大写)来开始在该行的<e>末尾处</e>续写。同样地,按<c>I</c>键(大写)来开始在当前行的<e>开始处</e>插入文本。按<c>o</c>键来在当前行下面创建一个新的可插入文本的空行,而按<c>O</c>键(大写)可在当前行之上创建一个新行。按<c>cc</c>可用新行将当前行全部替换掉。要将从当前位置到本行末尾之间的一切替换掉,输入<c>c$</c>。要将从本行开头到当前位置的一切替换掉,输入<c>c0</c>。 |
356 |
</p> |
357 |
|
358 |
<p> |
359 |
除了执行特定的操作,这些命令都能将你置于插入模式中。输入你的文本后,敲<c><ESC></c>键退回到命令模式。 |
360 |
</p> |
361 |
|
362 |
</body> |
363 |
</section> |
364 |
<section> |
365 |
<title>更改文本</title> |
366 |
<body> |
367 |
|
368 |
<p> |
369 |
迄今为止我们已经使用了一些<c>c</c>(change,即变更)命令,包括<c>cc</c>、<c>c0</c>和<c>c$</c>。<c>cc</c>是变更命令的一种特殊形式,同<c>dd</c>相似。<c>c0</c>和<c>c$</c>命令是将变更命令和移动命令结合使用的例子。在这种形式中,<c>c</c>和<c>d</c>工作方式类似,除了它将你置于插入模式之中以让你能输入可替代删除区域的文本。将一些移动命令和<c>c</c>结合起来,在你的文件中试试看(提示:<c>cW</c>、<c>ce</c>、<c>c(</c>。) |
370 |
</p> |
371 |
|
372 |
</body> |
373 |
</section> |
374 |
</chapter> |
375 |
|
376 |
<chapter> |
377 |
<title>复合命令</title> |
378 |
<section> |
379 |
<body> |
380 |
|
381 |
<p> |
382 |
当你开始使用复合(“套餐”)命令,如<c>d{</c>和<c>cw</c>时,vi才<e>真正地</e>变得强大起来。除了这些命令,你也可以将数字和任一移动命令组合,比如<c>3w</c>,它会告诉vi向右跳转三个词。这里有一些移动“套餐”命令的范例:<c>12b</c>、<c>4j</c>。 |
383 |
</p> |
384 |
|
385 |
<p> |
386 |
vi除了允许(数字)(移动命令)的组合,还允许<c>d</c>或<c>c</c>和数字或移动命令组合。所以,<c>d3w</c>会删除后面三个单词,<c>d2j</c>会删除当前行和下面两行,等等。试验一下<c>c</c>和<c>d</c>相结合的移动,感受一下vi编辑是多么强大和简洁。一旦这些命令成为了第二天性,你将能以闪电般的速度编辑文件。 |
387 |
</p> |
388 |
|
389 |
</body> |
390 |
</section> |
391 |
<section> |
392 |
<title>更新备忘单</title> |
393 |
<body> |
394 |
|
395 |
<p> |
396 |
是再次更新备忘单的时候了。现在它看起来应该是这个样子: |
397 |
</p> |
398 |
|
399 |
<figure link="/images/vicheat-compound.png" short="备忘单" caption="含有复合命令的备忘单"/> |
400 |
|
401 |
</body> |
402 |
</section> |
403 |
<section> |
404 |
<title>提高工作效率的特性</title> |
405 |
<body> |
406 |
|
407 |
<p> |
408 |
到目前为止,我们已经讲了如何移动、保存和退出、进行简单编辑和删除,以及使用插入模式。有了当前备忘单上记录的一切,你应该能使用vi来进行几乎所有的任务了。 |
409 |
</p> |
410 |
|
411 |
<p> |
412 |
但是,vi还有许多更强大的命令。在本部分,你会学习到如何使用<e>剪切</e>、<e>复制</e>和<e>粘贴</e>、<e>搜索</e>和<e>替换</e>,以及使用<e>自动缩进</e>特性。这些命令会帮助vi变得更有趣更具工作效率。 |
413 |
</p> |
414 |
|
415 |
</body> |
416 |
</section> |
417 |
<section> |
418 |
<title>可视化模式</title> |
419 |
<body> |
420 |
|
421 |
<p> |
422 |
剪切和粘贴的最佳方法是使用<e>可视化模式</e>,它是被加入到诸如vim和elvis等现代版本的vi中的一种特殊模式。你可以将可视化模式看做为一种“高亮文本”模式。一旦文本被高亮,它就可以被复制或删除,然后粘贴。如果你正在使用gvim,即可用拖拽鼠标左键滑过某段区域的方式来高亮。 |
423 |
</p> |
424 |
|
425 |
<figure link="/images/vihighlight.png" short="高亮的文本" caption="含有高亮文本的VIM "/> |
426 |
|
427 |
<p> |
428 |
另外,你也可以按<c>v</c>键进入可视化模式(如果你在控制台中使用vi,这可能是你唯一的选择)。然后,用移动命令(通常是方向键)来移动光标,你将能高亮某个文本区域。一旦文本被高亮了,我们就准备好剪切或复制它们了。 |
429 |
</p> |
430 |
|
431 |
<p> |
432 |
如果你正在复制文本,敲<c>y</c>键(代表“yank”,即“用力拉拽”,译者注)。如果你正在剪切文本,敲<c>d</c>。你将回到命令模式。现在,移到你想插入剪切或复制的文本的位置,并敲<c>P</c>键来将其插入于光标之前,或<c>p</c>插入到光标之后。瞧,剪切/复制和粘贴完成了!在进入下一部分之前,试验一些复制/剪切和粘贴操作。 |
433 |
</p> |
434 |
|
435 |
</body> |
436 |
</section> |
437 |
<section> |
438 |
<title>替换文本</title> |
439 |
<body> |
440 |
|
441 |
<p> |
442 |
我们使用<e>ex</e>模式来替换某模式的文本。如果你想替换掉当前行中第一个匹配的模式,输入<c>:s/<regexp>/<replacement>/</c>并敲<c>回车</c>,此处<regexp>是你想匹配的模式,<replacement>是用来替换的字符串。要替换掉当前行中所有匹配的模式,输入<c>:s/<regexp>/<replacement>/g</c>并敲回车。要替换掉该模式在你的文件中的所有匹配(通常你是这么想的),输入<c>:%s/<regexp>/<replacement>/g</c>。如果你想要做全局替换,但是希望vi提示每一处变化,输入<c>:%s/<regexp>/<replacement>/gc</c>(代表“confirm”,即“确认”,译者注)并敲<c>回车</c>。 |
443 |
</p> |
444 |
|
445 |
</body> |
446 |
</section> |
447 |
<section> |
448 |
<title>缩进</title> |
449 |
<body> |
450 |
|
451 |
<p> |
452 |
为了编辑源代码vi支持自动缩进。当你编辑源代码文件(比如.c文件)时,大多数现代版本的vi(如vim)自动启用自动缩进模式。当自动缩进启用时,你可以用<c><CTR>d</c>(control-d)来向左移动一个缩进单位,或用<c><CTR>t</c>(control-t)来向右移动一个缩进单位。如果自动缩进并未被自动启用,你可以通过在<e>ex</e>命令中输入<c>:set autoindent</c>的办法来手工启用之。你也可以用<c>:set tabstop</c>来告诉vi将制表符设定为你最喜欢的设置;<c>:set tabstop=4</c>相当流行。 |
453 |
</p> |
454 |
|
455 |
</body> |
456 |
</section> |
457 |
<section> |
458 |
<title>我们最终的备忘单</title> |
459 |
<body> |
460 |
|
461 |
<p> |
462 |
嗯,我们已经抵达了vi教程的末尾了!在将所有高级编辑命令添加到你的备忘单之后,它看起来应该是这样的: |
463 |
</p> |
464 |
|
465 |
<figure link="/images/vicheat-final.png" short="备忘单" caption="终极备忘单"/> |
466 |
|
467 |
<p> |
468 |
将你的备忘单常置于手边,并开始使用vi来编辑文件和编写邮件。有需要时参考备忘单;你会发现一周之内,你能记住几乎所有的命令,而你的vi生产率会直冲云霄! |
469 |
</p> |
470 |
|
471 |
<p> |
472 |
如果你想用vi做为默认编辑器,对<path>/etc/rc.conf</path>做如下更改: |
473 |
</p> |
474 |
|
475 |
<pre caption="将vi设为默认编辑器"> |
476 |
<comment>(将EDITOR设为你喜欢的编辑器)</comment> |
477 |
#EDITOR="/bin/nano" |
478 |
EDITOR="/usr/bin/vim" |
479 |
#EDITOR="/usr/bin/emacs" |
480 |
</pre> |
481 |
|
482 |
</body> |
483 |
</section> |
484 |
<section> |
485 |
<title>资源</title> |
486 |
<body> |
487 |
|
488 |
<p> |
489 |
这里有一些资源,在你继续深入学习vi时可能会有帮助: |
490 |
</p> |
491 |
|
492 |
<ul> |
493 |
<li> |
494 |
<uri link="http://www.thomer.com/thomer/vi/vi.html">Vi爱好者主页</uri>,一个极棒的关于vi各方面的资源 |
495 |
</li> |
496 |
<li> |
497 |
<uri link="http://www.vim.org/">vim主页</uri>是满足你所有vim需要的地方 |
498 |
</li> |
499 |
<li> |
500 |
如果你在寻找一本优秀的老式图书,<uri link="http://www.oreilly.com/catalog/vi6/">学习vi编辑器,第六版</uri>会是一个很棒的选择。它很好地涵盖了vi和vi克隆版本。 |
501 |
</li> |
502 |
</ul> |
503 |
|
504 |
</body> |
505 |
</section> |
506 |
<section> |
507 |
<title>关于本文档</title> |
508 |
<body> |
509 |
|
510 |
<p> |
511 |
本文章的原始版本首先发布于IBM developerWorks,版权归Westtech Information Services所有。本文档是原始版本的更新版本,包含了由Gentoo Linux文档组做的各种改进。 |
512 |
</p> |
513 |
|
514 |
</body> |
515 |
</section> |
516 |
</chapter> |
517 |
</guide> |
518 |
|
519 |
|
520 |
|
521 |
-- |
522 |
gentoo-commits@l.g.o mailing list |