/[gentoo]/xml/htdocs/doc/en/vi-guide.xml
Gentoo

Contents of /xml/htdocs/doc/en/vi-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.16 - (hide annotations) (download) (as text)
Mon May 19 19:59:02 2008 UTC (6 years, 1 month ago) by swift
Branch: MAIN
Changes since 1.15: +2 -2 lines
File MIME type: application/xml
Damn, missed one - trailing whitespace

1 swift 1.8 <?xml version="1.0" encoding="UTF-8"?>
2 swift 1.16 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/vi-guide.xml,v 1.15 2008/05/19 19:57:20 swift Exp $ -->
3 swift 1.8 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4    
5 cam 1.11 <guide link="/doc/en/vi-guide.xml">
6 drobbins 1.1 <title>Learning vi -- the "cheatsheet" technique</title>
7 aaby 1.10 <author title="Author">
8     <mail link="drobbins@gentoo.org">Daniel Robbins</mail>
9     </author>
10     <author title="Author">
11     <mail link="stocke2@gentoo.org">Eric Stockbridge</mail>
12     </author>
13     <author title="Editor">
14     <mail link="bennyc@gentoo.org">Benny Chuang</mail>
15     </author>
16    
17     <abstract>
18     This guide will teach you how to use vi, using a cheat sheet method to
19 swift 1.15 accelerate the learning process. This will be the first guide for vi,
20     catering to beginners.
21 aaby 1.10 </abstract>
22    
23 neysx 1.14 <version>1.1.7</version>
24     <date>2005-07-21</date>
25 drobbins 1.1
26     <chapter>
27     <title>Getting Started</title>
28     <section>
29     <title>Introduction</title>
30     <body>
31 aaby 1.10
32 drobbins 1.1 <p>
33 aaby 1.10 This tutorial will show you how to use vi, a powerful visual editor.
34 cam 1.11 Using a special accelerated <e>cheat sheet</e> method, this tutorial is
35 aaby 1.10 designed to make you a proficient vi user without requiring a huge
36 swift 1.15 time commitment. In this vi tutorial, you'll learn how to move
37 aaby 1.10 around, edit text, use insert mode, copy and paste text, and use
38     important vim extensions like visual mode and multi-window editing.
39 vapier 1.5 </p>
40 aaby 1.10
41 vapier 1.5 <p>
42 aaby 1.10 If you either don't know or aren't comfortable using vi, then you owe
43     it to yourself to take this tutorial and get up to speed with one of
44     the most popular and powerful Linux/UNIX visual editing programs.
45 vapier 1.5 </p>
46 cam 1.11
47 drobbins 1.1 </body>
48     </section>
49     <section>
50     <title>About the guide</title>
51     <body>
52 aaby 1.10
53 drobbins 1.1 <p>
54 aaby 1.10 There's one thing in particular that makes it difficult to learn vi --
55 swift 1.15 vi has lots of commands. In order to use vi effectively, you need to
56     memorize quite a few. This can take a long time, and one of the goals
57     of this tutorial is not to take up a lot of your time. So, initially,
58 aaby 1.10 we have a challenge -- how exactly do I help you to memorize lots of
59     commands in a short period of time?
60 drobbins 1.1 </p>
61 aaby 1.10
62 drobbins 1.1 <p>
63 aaby 1.10 To tackle this challenge, as we proceed through this tutorial, we're
64 swift 1.15 going to gradually put together a vi cheat sheet. This sheet will
65     contain all the important vi commands. After you've completed this
66 aaby 1.10 tutorial, you'll be able to refer to this cheat sheet if you forget a
67 swift 1.15 particular command. Over time, as you memorize commands, you'll
68     gradually become less and less dependent on the cheat sheet. By using
69 aaby 1.10 the cheat-sheet technique, you'll be able to learn how to use vi
70     faster than ever possible before!
71 drobbins 1.1 </p>
72 aaby 1.10
73 drobbins 1.1 </body>
74     </section>
75     <section>
76     <title>The learning process</title>
77     <body>
78    
79 aaby 1.10 <p>
80     In this guide, I'm going to use several techniques to help you
81 swift 1.15 learn. First, I'm going to describe how a particular command works,
82     as you'd expect. Then, I'm going to ask you to try to use the command
83 aaby 1.10 in vi (for practice), and then I'm going to ask you to transcribe the
84 swift 1.15 command to the cheat sheet (for later reference.) If you want to
85 aaby 1.10 learn vi quickly, it's important that you perform all these steps.
86     Trying out a command in vi and transcribing the command onto your
87     cheat sheet will help you to memorize the command.
88 drobbins 1.1 </p>
89 aaby 1.10
90 drobbins 1.1 </body>
91     </section>
92     <section>
93     <title>Introducing vim</title>
94     <body>
95    
96 aaby 1.10 <p>
97     There are many versions of vi, and I'm going to be showing you how to
98 swift 1.15 use a version of vi called <c>vim</c>. vim is very popular and has a
99 aaby 1.10 number of extensions that make vi a lot nicer (whenever I demonstrate
100     a vim-specific command, I'll make a note of it.) If you need to
101     install vim, you can get it from <uri
102 swift 1.15 link="http://www.vim.org/">www.vim.org</uri>. In addition to an
103 cam 1.11 enhanced command-line vi, vim also comes with <c>gvim</c>, a nice graphical
104 aaby 1.10 editor which can be configured to use the excellent GTK+ gui library.
105     Here's a gvim screenshot from my system:
106     </p>
107 drobbins 1.1
108 neysx 1.14 <figure link="/images/vishot.png" short="screenshot" caption="VIM screenshot"/>
109 drobbins 1.1
110 aaby 1.10 <p>
111 swift 1.15 If you're a vi newbie, try to get gvim running on your system. Using
112 aaby 1.10 vi from a gui can make things a bit easier for beginners.
113     </p>
114 drobbins 1.1
115     </body>
116     </section>
117     </chapter>
118 aaby 1.10
119 drobbins 1.1 <chapter>
120     <title>First Steps</title>
121     <section>
122     <title>Pick a file</title>
123     <body>
124 aaby 1.10
125     <p>
126     Before using vi to edit files, you need to know how to use vi to move
127 swift 1.15 around in a file. vi has a lot of movement commands, and we're going
128     to take a look at many of them. For this part of the tutorial, find
129 aaby 1.10 an unimportant text file and load it into vi by typing:
130     </p>
131    
132     <pre caption="Loading a file into vi">
133 cam 1.11 $ <i>vi myfile.txt</i>
134 aaby 1.10 </pre>
135    
136     <p>
137 swift 1.15 If you have vim installed, type <c>vim myfile.txt</c>. If you'd prefer to
138 swift 1.16 use gvim, type <c>gvim myfile.txt</c>. <path>myfile.txt</path> should be the
139 swift 1.15 name of a text file on your system.
140 drobbins 1.1 </p>
141 aaby 1.10
142 drobbins 1.1 </body>
143     </section>
144     <section>
145     <title>Inside vi</title>
146     <body>
147    
148 aaby 1.10 <p>
149     After vi loads, you should see a part of the text file you loaded
150 swift 1.15 on your screen. Congratulations -- you're in vi! Unlike many
151 cam 1.11 editors, when vi starts up, it is in a special mode called <e>command
152 swift 1.15 mode</e>. This means that if you press <c>l</c>on the keyboard, instead of
153 cam 1.11 inserting an <c>l</c> into the file at the current cursor position, the
154 swift 1.15 cursor will move one character to the right instead. In command mode,
155 aaby 1.10 the characters on your keyboard are used to send commands to vi rather
156 swift 1.15 than insert literal characters into the text. One of the most
157 aaby 1.10 essential types of commands are movement commands; let's take a look
158     at some.
159     </p>
160 drobbins 1.1
161     </body>
162     </section>
163     </chapter>
164 aaby 1.10
165 drobbins 1.1 <chapter>
166     <title>Moving around</title>
167     <section>
168     <title>Moving in vi, part 1</title>
169     <body>
170    
171 aaby 1.10 <p>
172     When in command mode, you can use the <c>h</c>,<c>j</c>,<c>k</c> and
173     <c>l</c> keys to move the cursor left, down, up and right
174 swift 1.15 respectively. If you're using a modern version of vi, you can also
175     use the arrow keys for this purpose. The <c>h</c>,<c>j</c>,<c>k</c>
176 aaby 1.10 and <c>l</c> keys are handy because once you're comfortable with them,
177     you'll be able to move around in the file without moving your fingers
178 swift 1.15 from the home keyboard row. Try using <c>h</c>,<c>j</c>,<c>k</c> and
179     <c>l</c> (and the arrow keys) to move around in the text file. Try
180     using <c>h</c> until you get to the beginning of a line. Notice that
181 aaby 1.10 vi doesn't allow you to "wrap around" to the previous line by hitting
182 swift 1.15 <c>h</c> while you're on the first character. Likewise, you can't
183 aaby 1.10 "wrap around" to the next line by hitting <c>l</c> at the end of a
184     line.
185 drobbins 1.1 </p>
186    
187     </body>
188     </section>
189     <section>
190     <title>Moving in vi, part 2</title>
191     <body>
192    
193 aaby 1.10 <p>
194     vi offers special shortcuts for jumping to the beginning or end of the
195 swift 1.15 current line. You can press <c>0</c> (zero) to jump to the first
196 aaby 1.10 character of a line, and <c>$</c> to jump to the last character of the
197 swift 1.15 line. Try 'em and see. Since vi has so many handy movement commands,
198     it makes a great "pager" (like the more or less commands.) Using vi
199 aaby 1.10 as a pager will also help you to learn all the movement commands very
200     quickly.
201     </p>
202 drobbins 1.1
203 aaby 1.10 <p>
204     You can also use <c>&lt;CTR&gt;F</c> and <c>&lt;CTR&gt;B</c> to move
205 swift 1.15 forwards and backwards a page at a time. Modern versions of vi (like
206 cam 1.11 vim) will also allow you to use the <c>PGUP</c> and <c>PGDOWN</c> keys for this
207 aaby 1.10 purpose.
208 drobbins 1.1 </p>
209    
210     </body>
211     </section>
212     <section>
213     <title>Word moves, part 1</title>
214     <body>
215 aaby 1.10
216     <p>
217     vi also allows you to move to the left or right by word increments.
218     To move to the <e>first</e> character of the next word, press
219 swift 1.15 <c>w</c>. To move to the <e>last</e> character of the next word,
220     press <c>e</c>. To move to the first character of the <e>previous</e>
221     word, press <c>b</c>. Test 'em out.
222 aaby 1.10 </p>
223    
224 drobbins 1.1 </body>
225     </section>
226     <section>
227     <title>Word moves, part 2</title>
228     <body>
229 aaby 1.10
230     <p>
231     After playing around with the word movement commands, you may have
232 cam 1.11 noticed that vi considers words like <c>foo-bar-oni</c> as five separate
233 swift 1.15 words! This is because by default, vi delimits words by spaces
234     <e>or</e> punctuation. <c>foo-bar-oni</c> is therefore considered five
235 cam 1.11 words: <c>foo</c>, <c>-</c>, <c>bar</c>, <c>-</c> and <c>oni</c>.
236 aaby 1.10 </p>
237    
238     <p>
239     Sometimes, this is what you want, and sometimes it isn't.
240 swift 1.15 Fortunately, vi also understands the concept of a "bigword". vi
241     delimits bigwords by <e>spaces or newlines only</e>. This means that
242 cam 1.11 while <c>foo-bar-oni</c> is considered five vi words, it's considered only
243 aaby 1.10 one vi bigword.
244     </p>
245 drobbins 1.1
246     </body>
247     </section>
248     <section>
249     <title>Word moves, part 3</title>
250     <body>
251 aaby 1.10
252     <p>
253     To jump around to the next and previous bigword, you can use a
254 swift 1.15 <e>capitalized</e> word move command. Use <c>W</c> to jump to the
255 aaby 1.10 first character of the next bigword, <c>E</c> to jump to the last
256     character of the next bigword, and <c>B</c> to jump to the first
257 swift 1.15 character of the previous bigword. Test 'em out, and compare the
258 aaby 1.10 matching word and bigword movement commands until you understand their
259     differences.
260 drobbins 1.1 </p>
261    
262     </body>
263     </section>
264     <section>
265     <title>Bigger moves</title>
266     <body>
267 aaby 1.10
268     <p>
269     We just have a few more commands to cover before it's time to start
270 swift 1.15 puting together our cheat sheet. You can use the <c>(</c> and
271 aaby 1.10 <c>)</c> characters to move to the beginning of the previous and next
272 swift 1.15 sentence. In addition, you can hit <c>{</c> or <c>}</c> to jump to
273 aaby 1.10 the beginning of the current paragraph, and the beginning of the next.
274     Test 'em out.
275     </p>
276 drobbins 1.1
277     </body>
278     </section>
279     </chapter>
280 aaby 1.10
281 drobbins 1.1 <chapter>
282 aaby 1.10 <title>Quitting</title>
283 drobbins 1.1 <section>
284     <body>
285 aaby 1.10
286     <p>
287     We've covered the basic movement commands, but there are another
288 swift 1.15 couple of commands that you need to know. Typing <c>:q</c> will quit
289     vi. If this doesn't work, then you probably accidentally modified the
290     file in some way. To tell vi to quit, throwing away any changes, type
291     <c>:q!</c>. You should now be at the command prompt.
292 aaby 1.10 </p>
293    
294     <p>
295 cam 1.11 In vi, any command that begins with a <c>:</c> is said to be an
296 swift 1.15 <e>ex-mode</e> command. This is because vi has a built-in non-visual
297     editor called <e>ex</e>. It can be used similarly to sed to perform
298     line-based editing operations. In addition, it can also be used to
299     quit, as we've just seen. If you ever hit the <c>Q</c> key while in
300     command mode, you'll be transported to ex mode. If this ever happens
301     to you, you'll be confronted with a : prompt, and hitting enter will
302     scroll the entire screen upwards. To get back to good 'ol vi mode,
303 aaby 1.10 simply type vi and hit enter.
304     </p>
305 drobbins 1.1
306     </body>
307     </section>
308     </chapter>
309 aaby 1.10
310 drobbins 1.1 <chapter>
311     <title>The Cheat Sheet</title>
312     <section>
313     <title>The beginnings of the cheat sheet</title>
314     <body>
315    
316 aaby 1.10 <p>
317     We've covered a lot of commands, and it's time to transcribe them to
318 swift 1.15 our cheat sheet. For the cheat sheet, you'll need a US letter or A4
319 aaby 1.10 sized piece of paper (we're going to pack a lot of info onto this
320 swift 1.15 sheet!) Here's a picture of my cheat sheet after I've transcribed all
321     the commands that we've covered so far. Try to follow my layout if
322 aaby 1.10 possible so that we can fit everything on one sheet.
323     </p>
324    
325 neysx 1.14 <figure link="/images/vicheat-first.png" short="First part of the cheat sheet"
326     caption="Cheat Sheet"/>
327 drobbins 1.1
328     </body>
329     </section>
330     <section>
331     <title>Miscellaneous vi</title>
332 aaby 1.10 <body>
333    
334     <p>
335 swift 1.15 Let's continue our rapid command-covering pace. In command-mode, you
336     can jump to a particularline by typing <c>G</c>. To jump to the first
337     line of a file, type <c>1G</c>. Note that <c>G</c> is capitalized.
338 aaby 1.10 </p>
339 drobbins 1.1
340 aaby 1.10 <p>
341     If you want to jump to the next occurence of a particular text
342 swift 1.15 pattern, type <c>/&lt;regexp&gt;</c> and hit <c>enter</c>. Replace
343     &lt;regexp&gt; with the regular expression you're looking for. If you
344 aaby 1.10 don't know how to use regular expressions, don't fret -- typing
345 swift 1.15 <c>/foo</c> will move to the next occurence of <e>foo</e>. The only
346 aaby 1.10 thing you'll need to watch out for is when you want to refer to the
347 swift 1.15 literal <c>^</c>, <c>.</c>, <c>$</c> or <c>\</c> characters. Prefix
348     these characters with a backslash (<c>\</c>), and you'll be set. For
349 aaby 1.10 example, <c>/foo\.gif</c> will search for the next occurence of
350     "foo.gif".
351     </p>
352    
353     <p>
354 swift 1.15 To repeat the search forwards, hit <c>n</c>. To repeat the search
355     backwards, type <c>N</c>. As always, test these commands out in your
356 aaby 1.10 very own vi editor. You can also type <c>//</c> to repeat the last
357     search.
358     </p>
359 drobbins 1.1
360     </body>
361     </section>
362     </chapter>
363 aaby 1.10
364 drobbins 1.1 <chapter>
365     <title>Saving and Editing</title>
366     <section>
367     <title>Save and save as...</title>
368     <body>
369 aaby 1.10
370     <p>
371     We've covered how you can use the <e>ex</e> command <c>:q</c> to quit
372 swift 1.15 from vi. If you want to save your changes, type <c>:w</c>. If you
373 aaby 1.10 want to save your changes to another file, type <c>:w filename.txt</c>
374 swift 1.15 to save as <e>filename.txt</e>. If you want to save and quit, type
375 aaby 1.10 <c>:x</c> or <c>:wq</c>.
376     </p>
377    
378     <p>
379     In vim (and other advanced vi editors, like elvis)<c>:w</c>, you can
380 swift 1.15 have multiple buffers open at once. To open a file into a new window,
381     type <c>:sp filename.txt</c>. <path>filename.txt</path> will appear open
382     for editing in a new split window. To switch between windows, type
383     <c>&lt;CTR&gt;w&lt;CTR&gt;w</c> (control-w twice). Any <c>:q</c>,
384 aaby 1.10 <c>:q!</c>, <c>:w</c> and <c>:x</c> commands that you enter will only
385     be applied to the currently-active window.
386     </p>
387    
388 drobbins 1.1 </body>
389     </section>
390     <section>
391     <title>Simple edits</title>
392     <body>
393 aaby 1.10
394     <p>
395     Now, it's time to start learning some of the simple editing commands.
396 cam 1.11 The commands that we'll cover here are considered <e>simple</e> because the
397 swift 1.15 commands keep you in command mode. The more complex editing commands
398 aaby 1.10 automatically put you into insert mode -- a mode that allows you to
399 swift 1.15 enter literal data from the keyboard. We'll cover those in a bit.
400 aaby 1.10 </p>
401    
402     <p>
403     For now, try moving over some characters and hitting <c>x</c>
404 swift 1.15 repeatedly. You'll see that <c>x</c> will delete the current
405     character under the cursor. Now, move to the middle of the paragraph
406     somewhere in your text file, and hit <c>J</c> (capitalized). You'll
407 aaby 1.10 see that the <c>J</c> command tells vi to join the next line to the
408 swift 1.15 end of the current line. Now, move over a character and hit
409 aaby 1.10 <c>r</c>, and then type in a new character; you'll see that the
410 swift 1.15 original character has been replaced. Finally, move to any line in
411     the file and type <c>dd</c>. You'll see that <c>dd</c> deletes the
412 aaby 1.10 current line of text.
413     </p>
414 drobbins 1.1
415     </body>
416     </section>
417     <section>
418     <title>Repeating and deleting</title>
419     <body>
420 aaby 1.10
421     <p>
422 swift 1.15 You can repeat any editing command by hitting the <c>.</c> key. If
423 aaby 1.10 you experiment, you'll see that typing <c>dd...</c> will delete 4
424 swift 1.15 lines, and <c>J......</c> will join four lines. As usual, vi provides
425 aaby 1.10 with another handy shortcut.
426     </p>
427    
428     <p>
429     To delete text, you can also use the <c>d</c> command combined with
430 swift 1.15 any movement command. For example, <c>dw</c> will delete from the
431 aaby 1.10 current position to the beginning of the next word; <c>d)</c> will
432     delete up until the end of the next sentence, and <c>d}</c> will
433 swift 1.15 delete the remainder of the paragraph. Experiment with the
434 aaby 1.10 <c>d</c> command and the other editing commands until you're
435     comfortable with them.
436     </p>
437    
438 drobbins 1.1 </body>
439     </section>
440     <section>
441     <title>Undo!</title>
442     <body>
443 aaby 1.10
444     <p>
445     Now that we're experimenting with deletion, it would be a good time to
446 swift 1.15 learn how to undo any changes. By pressing <c>u</c>, the original
447     version of vi allowed you to undo the last edit only. However, modern
448 aaby 1.10 versions of vi like vim will allow you to repeatedly press <c>u</c> to
449 swift 1.15 continue to undo changes to your file. Try combining some <c>d</c>
450 aaby 1.10 and <c>u</c> commands together.
451 drobbins 1.1 </p>
452 aaby 1.10
453 drobbins 1.1 </body>
454     </section>
455     <section>
456     <title>Updating the cheat sheet</title>
457     <body>
458    
459 aaby 1.10 <p>
460 swift 1.15 Time to update the cheat sheet! After adding all the commands we've
461 aaby 1.10 covered so far, your cheat sheet should look like this:
462     </p>
463    
464 neysx 1.14 <figure link="/images/vicheat-edit.png" short="Cheat sheet" caption="Cheat
465     sheet with editing commands"/>
466 drobbins 1.1
467     </body>
468     </section>
469     </chapter>
470 aaby 1.10
471 drobbins 1.1 <chapter>
472     <title>Insert mode</title>
473     <section>
474 aaby 1.10 <body>
475    
476     <p>
477     So far, we've covered how to move around in vi, perform file i/o, and
478 swift 1.15 perform basic editing operations. However, I still haven't shown you
479     how to actually type in free-form text! This was intentional, because
480     vi's insert mode is a bit complicated at first. However, after you
481 aaby 1.10 become comfortable with insert mode, its complexity (and flexibility)
482     will become an asset.
483     </p>
484    
485     <p>
486 cam 1.11 In vi <e>insert mode</e>, you'll be able to enter text directly to the screen
487 swift 1.15 just like you can in many other visual editors. Once you've entered
488     your modifications, you can hit escape to return to <e>command mode</e>. You
489     can enter insert mode by pressing <c>i</c> or <c>a</c>. If you press
490 aaby 1.10 <c>i</c>, your text will be <e>inserted</e> before the current
491     character, and if you hit <c>a</c>, your text will be <e>appended</e>
492 swift 1.15 after the current character. Remember, after you enter your text, hit
493 aaby 1.10 <c>&lt;ESC&gt;</c> to return to command mode.
494     </p>
495 drobbins 1.1
496     </body>
497     </section>
498     <section>
499     <title>Benefits of insert mode</title>
500     <body>
501 aaby 1.10
502     <p>
503 swift 1.15 Go ahead and try using the <c>a</c> and <c>i</c> commands. Hit either
504 aaby 1.10 <c>a</c> or <c>i</c>, type some text, and then hit escape to get back
505 swift 1.15 to command mode. After hitting <c>a</c> or <c>i</c>, try hitting
506     <c>&lt;ENTER&gt;</c>, and see what happens. Try using the arrow keys
507 aaby 1.10 and the <c>&lt;DEL&gt;</c> key to get a feel for how insert mode
508 swift 1.15 works. By using the arrow keys and <c>&lt;DEL&gt;</c> key, you can
509 aaby 1.10 perform significant editing steps without repeatedly entering and
510 cam 1.11 leaving insert mode.
511 aaby 1.10 </p>
512    
513 drobbins 1.1 </body>
514     </section>
515     <section>
516     <title>Insert options</title>
517     <body>
518 aaby 1.10
519     <p>
520 swift 1.15 Here are some other handy ways to enter insert mode. Press <c>A</c>
521 aaby 1.10 (captial) to begin appending to the <e>end</e> of the current line,
522 swift 1.15 regardless of your current position on the line. Likewise, press
523 aaby 1.10 <c>I</c> (capital) to begin inserting text at the <e>beginning</e> of
524 swift 1.15 the current line. Press <c>o</c> to create a new blank line below the
525 aaby 1.10 current line into which you can insert text, and press <c>O</c>
526 swift 1.15 (capital) to create a new line above the current line. To replace the
527     entire current line with a new line, press <c>cc</c>. To replace
528 aaby 1.10 everything from the current position to the end of the line, type
529 swift 1.15 <c>c$</c>. To replace everything from the current position to the
530 aaby 1.10 beginning of the line, type <c>c0</c>.
531     </p>
532    
533     <p>
534     In addition to performing a special operation, every one of these
535 swift 1.15 commands will put you into insert mode. After typing in your text,
536 aaby 1.10 hit <c>&lt;ESC&gt;</c> to return to command mode.
537 drobbins 1.1 </p>
538    
539     </body>
540     </section>
541     <section>
542     <title>Changing text</title>
543     <body>
544 aaby 1.10
545     <p>
546     We've used the <c>c</c> (change) command a little bit so far when we
547 swift 1.15 typed <c>cc</c>, <c>c0</c> and <c>c$</c>. <c>cc</c> is a special form
548     of the change command, similar to <c>dd</c>. the <c>c0</c> and
549 aaby 1.10 <c>c$</c> commands are examples of using the change command in
550 swift 1.15 combination with a movement command. In this form, <c>c</c> works
551 aaby 1.10 similarly to <c>d</c>, except that it leaves you in insert mode so
552 swift 1.15 that you can enter replacement text for the deleted region. Try
553 aaby 1.10 combining some movement commands with <c>c</c> and test them out on
554     your file (hint: <c>cW</c>, <c>ce</c>, <c>c(</c> .)
555 drobbins 1.1 </p>
556    
557     </body>
558     </section>
559     </chapter>
560 aaby 1.10
561 drobbins 1.1 <chapter>
562     <title>Compound Commands</title>
563     <section>
564     <body>
565 aaby 1.10
566     <p>
567     vi <e>really</e> becomes powerful when you start using compound
568 swift 1.15 ("combo") commands, like <c>d{</c> and <c>cw</c>. In addition to
569 aaby 1.10 these commands, you can also combine a number with any movement
570     command, such as <c>3w</c>, which will tell vi to jump three words to
571 swift 1.15 the right. Here are some more movement "combo" command examples:
572 aaby 1.10 <c>12b</c>, <c>4j</c>.
573     </p>
574    
575     <p>
576     vi, in addition to allowing (number)(movement command) combinations,
577     also allows <c>d</c> or <c>c</c> to be combined with a number or
578 swift 1.15 movement command. So, <c>d3w</c> will delete the next three words,
579     <c>d2j</c> will delete the current and next two lines, etc. Test out
580 aaby 1.10 some <c>c</c> and <c>d</c> combo moves to get a feel for how powerful
581 swift 1.15 and concise vi editing can be. Once these commands are second-nature,
582 aaby 1.10 you'll be able to edit files at blazing speed.
583     </p>
584 drobbins 1.1
585     </body>
586     </section>
587     <section>
588     <title>Updating the cheat sheet</title>
589     <body>
590 aaby 1.10
591 drobbins 1.1 <p>
592 swift 1.15 Time to update the cheat sheet again. Here's what it looks like so
593 aaby 1.10 far:
594     </p>
595    
596 neysx 1.14 <figure link="/images/vicheat-compound.png" short="Cheat Sheet" caption="Cheat
597     sheet with compound commands"/>
598 drobbins 1.1
599     </body>
600     </section>
601     <section>
602     <title>Productivity features</title>
603 aaby 1.10 <body>
604    
605     <p>
606     So far, we've covered how to move, save and quit, perform simple edits
607 swift 1.15 and deletions, and use insert mode. With everything listed on the
608 aaby 1.10 cheat sheet so far, you should be able to use vi to perform almost any
609     task.
610     </p>
611 drobbins 1.1
612 aaby 1.10 <p>
613 swift 1.15 However, vi also has many more powerful commands. In this section,
614 aaby 1.10 you'll learn how to <e>cut</e>, <e>copy</e> and <e>paste</e>,
615     <e>search</e> and <e>replace</e>, and use <e>autoindent</e> features.
616     These commands will help make vi more fun and productive.
617     </p>
618 drobbins 1.1
619     </body>
620     </section>
621     <section>
622     <title>Visual mode</title>
623     <body>
624 aaby 1.10
625     <p>
626 cam 1.11 The best way to cut and paste is to use <e>visual mode</e>, a special mode that
627 swift 1.15 has been added to modern versions of vi, like vim and elvis. You can think
628     of visual mode as a "highlight text" mode. Once the text is highlighted,
629     it can be copied or deleted, and then pasted. If you are using gvim, you
630 drobbins 1.1 can highlight by simply dragging the left mouse button over a particular
631 aaby 1.10 region:
632     </p>
633 drobbins 1.1
634 neysx 1.14 <figure link="/images/vihighlight.png" short="Highlighted text" caption="VIM
635     with highlighted text"/>
636 drobbins 1.1
637 aaby 1.10 <p>
638     In addition, you can also enter visual mode by hitting <c>v</c> (this
639 swift 1.15 may be your only option if you are using vi from the console.) Then,
640 aaby 1.10 by moving the cursor using movement commands (typically the arrow
641 swift 1.15 keys), you'll be able to highlight a region of text. Once
642 aaby 1.10 highlighted, we are ready to cut or copy the text.
643 drobbins 1.1 </p>
644    
645 aaby 1.10 <p>
646     If you're copying the text, hit <c>y</c> (which stands for "yank").
647 swift 1.15 If you're cutting the text, hit <c>d</c>. You'll be placed back in
648     command mode. Now, move to the position where you'd like to insert
649 swift 1.12 the cut or copied text, and hit <c>P</c> to insert before the cursor,
650 swift 1.15 or <c>p</c> to insert after the cursor. Voila, the cut/copy and
651     paste is complete! Test out several copy/cut and paste operations
652 aaby 1.10 before advancing to the next section.
653 drobbins 1.1 </p>
654    
655     </body>
656     </section>
657     <section>
658     <title>Replacing text</title>
659     <body>
660 aaby 1.10
661     <p>
662 swift 1.15 To replace patterns of text, we use <e>ex</e> mode. If you'd like to
663 aaby 1.10 replace the first pattern that appears on the current line, type
664     <c>:s/&lt;regexp&gt;/&lt;replacement&gt;/</c> and hit
665     <c>&lt;ENTER&gt;</c>, where &lt;regexp&gt; is the pattern you'd like
666 swift 1.15 to match and &lt;replacement&gt; is the replacement string. To
667 aaby 1.10 replace all matches on the current line, type
668 swift 1.15 <c>:s/&lt;regexp&gt;/&lt;replacement&gt;/g</c> and hit enter. To
669 aaby 1.10 replace every occurence of this pattern in your file (normally what
670 swift 1.15 you want), type <c>:%s/&lt;regexp&gt;/&lt;replacement&gt;/g</c>. If
671 aaby 1.10 you'd like to do a global replace, but have vi prompt you for each
672     change, type <c>:%s/&lt;regexp&gt;/&lt;replacement&gt;/gc</c> (stands
673     for "confirm") and hit <c>&lt;ENTER&gt;</c>.
674     </p>
675 drobbins 1.1
676     </body>
677     </section>
678     <section>
679     <title>Indentation</title>
680     <body>
681 aaby 1.10
682     <p>
683     vi supports autoindentation, for when you are editing source code.
684     Most modern versions of vi (like vim) will auto-enable autoindent mode
685     when you are editing a source file (like a .c file, for example).
686     When autoindent is enabled, you can use <c>&lt;CTR&gt;d</c>
687     (control-d) to move one indent level to the left, and
688     <c>&lt;CTR&gt;t</c> (control-t) to move one indent level to the right.
689     If autoindent wasn't enabled automatically, you can manually enable it
690 swift 1.15 by typing in the <e>ex</e> command <c>:set autoindent</c>. You can
691 aaby 1.10 also tell vi to set the tab size to your favorite setting by using the
692     <c>:set tabstop</c> command; <c>:set tabstop=4</c> is quite popular.
693     </p>
694 drobbins 1.1
695     </body>
696     </section>
697     <section>
698     <title>Our final cheat sheet</title>
699     <body>
700 aaby 1.10
701 drobbins 1.1 <p>
702 swift 1.15 Well, we've reached the end of the vi tutorial! After adding all the
703 aaby 1.10 advanced editing commands to your cheat sheet, it should look like
704     this:
705     </p>
706    
707 neysx 1.14 <figure link="/images/vicheat-final.png" short="Cheat Sheet" caption="Final
708     cheet sheet"/>
709 drobbins 1.1
710 aaby 1.10 <p>
711     Keep your cheat sheet handy, and begin using vi to edit files and
712 swift 1.15 compose emails. Refer to the cheat sheet when needed; you'll find
713 aaby 1.10 that within the week, you'll have nearly all the commands memorized
714     and your vi productivity will shoot through the roof!
715 drobbins 1.1 </p>
716    
717 cam 1.11 <p>
718     If you want to use vi as your default editor make the following change
719     to <path>/etc/rc.conf</path>:
720     </p>
721    
722     <pre caption="Setting vi as the default editor">
723     <comment>(Set EDITOR to your preferred editor.)</comment>
724     #EDITOR="/bin/nano"
725     EDITOR="/usr/bin/vim"
726     #EDITOR="/usr/bin/emacs"
727     </pre>
728    
729 drobbins 1.1 </body>
730     </section>
731     <section>
732     <title>Resources</title>
733     <body>
734 aaby 1.10
735     <p>
736     Here are some resources you may find helpful as you continue to learn
737     more about vi:
738     </p>
739    
740 drobbins 1.1 <ul>
741 aaby 1.10 <li>
742 cam 1.11 <uri link="http://www.thomer.com/thomer/vi/vi.html">The vi Lovers
743 aaby 1.10 Home Page</uri>, an excellent resource for all things vi
744     </li>
745     <li>
746     <uri link="http://www.vim.org/">The vim homepage</uri> is the place
747     to go for all your vim needs
748     </li>
749     <li>
750     If you're looking for a good, old-fashioned book, <uri
751     link="http://www.oreilly.com/catalog/vi6/">Learning the vi Editor,
752 swift 1.15 6th Edition</uri> would be an excellent choice. Contains good
753 aaby 1.10 coverage of vi and vi clones.
754     </li>
755 drobbins 1.1 </ul>
756 aaby 1.10
757 swift 1.8 </body>
758     </section>
759     <section>
760     <title>About this document</title>
761     <body>
762    
763     <p>
764     The original version of this article was first published on IBM
765     developerWorks, and is property of Westtech Information Services. This
766     document is an updated version of the original article, and contains
767     various improvements made by the Gentoo Linux documentation team.
768     </p>
769    
770 drobbins 1.1 </body>
771     </section>
772     </chapter>
773     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20