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