Partially synced with the branch.
[MacVim.git] / runtime / doc / usr_02.txt
blob5e6613e6971b16afba4203848c9d65131a14b30f
1 *usr_02.txt*    For Vim version 7.2c.  Last change: 2007 Feb 28
3                      VIM USER MANUAL - by Bram Moolenaar
5                             The first steps in Vim
8 This chapter provides just enough information to edit a file with Vim.  Not
9 well or fast, but you can edit.  Take some time to practice with these
10 commands, they form the base for what follows.
12 |02.1|  Running Vim for the First Time
13 |02.2|  Inserting text
14 |02.3|  Moving around
15 |02.4|  Deleting characters
16 |02.5|  Undo and Redo
17 |02.6|  Other editing commands
18 |02.7|  Getting out
19 |02.8|  Finding help
21      Next chapter: |usr_03.txt|  Moving around
22  Previous chapter: |usr_01.txt|  About the manuals
23 Table of contents: |usr_toc.txt|
25 ==============================================================================
26 *02.1*  Running Vim for the First Time
28 To start Vim, enter this command: >
30         gvim file.txt
32 In UNIX you can type this at any command prompt.  If you are running Microsoft
33 Windows, open an MS-DOS prompt window and enter the command.
34    In either case, Vim starts editing a file called file.txt.  Because this
35 is a new file, you get a blank window. This is what your screen will look
36 like:
38         +---------------------------------------+
39         |#                                      |
40         |~                                      |
41         |~                                      |
42         |~                                      |
43         |~                                      |
44         |"file.txt" [New file]                  |
45         +---------------------------------------+
46                 ('#" is the cursor position.)
48 The tilde (~) lines indicate lines not in the file.  In other words, when Vim
49 runs out of file to display, it displays tilde lines.  At the bottom of the
50 screen, a message line indicates the file is named file.txt and shows that you
51 are creating a new file.  The message information is temporary and other
52 information overwrites it.
55 THE VIM COMMAND
57 The gvim command causes the editor to create a new window for editing.  If you
58 use this command: >
60         vim file.txt
62 the editing occurs inside your command window.  In other words, if you are
63 running inside an xterm, the editor uses your xterm window.  If you are using
64 an MS-DOS command prompt window under Microsoft Windows, the editing occurs
65 inside this window.  The text in the window will look the same for both
66 versions, but with gvim you have extra features, like a menu bar.  More about
67 that later.
69 ==============================================================================
70 *02.2*  Inserting text
72 The Vim editor is a modal editor.  That means that the editor behaves
73 differently, depending on which mode you are in.  The two basic modes are
74 called Normal mode and Insert mode.  In Normal mode the characters you type
75 are commands.  In Insert mode the characters are inserted as text.
76    Since you have just started Vim it will be in Normal mode.  To start Insert
77 mode you type the "i" command (i for Insert).  Then you can enter
78 the text.  It will be inserted into the file.  Do not worry if you make
79 mistakes; you can correct them later.  To enter the following programmer's
80 limerick, this is what you type: >
82         iA very intelligent turtle
83         Found programming UNIX a hurdle
85 After typing "turtle" you press the <Enter> key to start a new line.  Finally
86 you press the <Esc> key to stop Insert mode and go back to Normal mode.  You
87 now have two lines of text in your Vim window:
89         +---------------------------------------+
90         |A very intelligent turtle              |
91         |Found programming UNIX a hurdle        |
92         |~                                      |
93         |~                                      |
94         |                                       |
95         +---------------------------------------+
98 WHAT IS THE MODE?
100 To be able to see what mode you are in, type this command: >
102         :set showmode
104 You will notice that when typing the colon Vim moves the cursor to the last
105 line of the window.  That's where you type colon commands (commands that start
106 with a colon).  Finish this command by pressing the <Enter> key (all commands
107 that start with a colon are finished this way).
108    Now, if you type the "i" command Vim will display --INSERT-- at the bottom
109 of the window.  This indicates you are in Insert mode.
111         +---------------------------------------+
112         |A very intelligent turtle              |
113         |Found programming UNIX a hurdle        |
114         |~                                      |
115         |~                                      |
116         |-- INSERT --                           |
117         +---------------------------------------+
119 If you press <Esc> to go back to Normal mode the last line will be made blank.
122 GETTING OUT OF TROUBLE
124 One of the problems for Vim novices is mode confusion, which is caused by
125 forgetting which mode you are in or by accidentally typing a command that
126 switches modes.  To get back to Normal mode, no matter what mode you are in,
127 press the <Esc> key.  Sometimes you have to press it twice.  If Vim beeps back
128 at you, you already are in Normal mode.
130 ==============================================================================
131 *02.3*  Moving around
133 After you return to Normal mode, you can move around by using these keys:
135         h   left                                                *hjkl*
136         j   down
137         k   up
138         l   right
140 At first, it may appear that these commands were chosen at random.  After all,
141 who ever heard of using l for right?  But actually, there is a very good
142 reason for these choices: Moving the cursor is the most common thing you do in
143 an editor, and these keys are on the home row of your right hand.  In other
144 words, these commands are placed where you can type them the fastest
145 (especially when you type with ten fingers).
147         Note:
148         You can also move the cursor by using the arrow keys.  If you do,
149         however, you greatly slow down your editing because to press the arrow
150         keys, you must move your hand from the text keys to the arrow keys.
151         Considering that you might be doing it hundreds of times an hour, this
152         can take a significant amount of time.
153            Also, there are keyboards which do not have arrow keys, or which
154         locate them in unusual places; therefore, knowing the use of the hjkl
155         keys helps in those situations.
157 One way to remember these commands is that h is on the left, l is on the
158 right and j points down.  In a picture: >
160                        k
161                    h     l
162                      j
164 The best way to learn these commands is by using them.  Use the "i" command to
165 insert some more lines of text.  Then use the hjkl keys to move around and
166 insert a word somewhere.  Don't forget to press <Esc> to go back to Normal
167 mode.  The |vimtutor| is also a nice way to learn by doing.
169 For Japanese users, Hiroshi Iwatani suggested using this:
171                         Komsomolsk
172                             ^
173                             |
174            Huan Ho      <--- --->  Los Angeles
175         (Yellow river)      |
176                             v
177                           Java (the island, not the programming language)
179 ==============================================================================
180 *02.4*  Deleting characters
182 To delete a character, move the cursor over it and type "x".  (This is a
183 throwback to the old days of the typewriter, when you deleted things by typing
184 xxxx over them.)  Move the cursor to the beginning of the first line, for
185 example, and type xxxxxxx (seven x's) to delete "A very ".  The result should
186 look like this:
188         +---------------------------------------+
189         |intelligent turtle                     |
190         |Found programming UNIX a hurdle        |
191         |~                                      |
192         |~                                      |
193         |                                       |
194         +---------------------------------------+
196 Now you can insert new text, for example by typing: >
198         iA young <Esc>
200 This begins an insert (the i), inserts the words "A young", and then exits
201 insert mode (the final <Esc>).  The result:
203         +---------------------------------------+
204         |A young intelligent turtle             |
205         |Found programming UNIX a hurdle        |
206         |~                                      |
207         |~                                      |
208         |                                       |
209         +---------------------------------------+
212 DELETING A LINE
214 To delete a whole line use the "dd" command.  The following line will
215 then move up to fill the gap:
217         +---------------------------------------+
218         |Found programming UNIX a hurdle        |
219         |~                                      |
220         |~                                      |
221         |~                                      |
222         |                                       |
223         +---------------------------------------+
226 DELETING A LINE BREAK
228 In Vim you can join two lines together, which means that the line break
229 between them is deleted.  The "J" command does this.
230    Take these two lines:
232         A young intelligent ~
233         turtle ~
235 Move the cursor to the first line and press "J":
237         A young intelligent turtle ~
239 ==============================================================================
240 *02.5*  Undo and Redo
242 Suppose you delete too much.  Well, you can type it in again, but an easier
243 way exists.  The "u" command undoes the last edit.  Take a look at this in
244 action: After using "dd" to delete the first line, "u" brings it back.
245    Another one: Move the cursor to the A in the first line:
247         A young intelligent turtle ~
249 Now type xxxxxxx to delete "A young".  The result is as follows:
251          intelligent turtle ~
253 Type "u" to undo the last delete.  That delete removed the g, so the undo
254 restores the character.
256         g intelligent turtle ~
258 The next u command restores the next-to-last character deleted:
260         ng intelligent turtle ~
262 The next u command gives you the u, and so on:
264         ung intelligent turtle ~
265         oung intelligent turtle ~
266         young intelligent turtle ~
267          young intelligent turtle ~
268         A young intelligent turtle ~
270         Note:
271         If you type "u" twice, and the result is that you get the same text
272         back, you have Vim configured to work Vi compatible.  Look here to fix
273         this: |not-compatible|.
274            This text assumes you work "The Vim Way".  You might prefer to use
275         the good old Vi way, but you will have to watch out for small
276         differences in the text then.
279 REDO
281 If you undo too many times, you can press CTRL-R (redo) to reverse the
282 preceding command.  In other words, it undoes the undo.  To see this in
283 action, press CTRL-R twice.  The character A and the space after it disappear:
285         young intelligent turtle ~
287 There's a special version of the undo command, the "U" (undo line) command.
288 The undo line command undoes all the changes made on the last line that was
289 edited.  Typing this command twice cancels the preceding "U".
291         A very intelligent turtle ~
292           xxxx                          Delete very
294         A intelligent turtle ~
295                       xxxxxx            Delete turtle
297         A intelligent ~
298                                         Restore line with "U"
299         A very intelligent turtle ~
300                                         Undo "U" with "u"
301         A intelligent ~
303 The "U" command is a change by itself, which the "u" command undoes and CTRL-R
304 redoes.  This might be a bit confusing.  Don't worry, with "u" and CTRL-R you
305 can go to any of the situations you had.  More about that in section |32.1|.
307 ==============================================================================
308 *02.6*  Other editing commands
310 Vim has a large number of commands to change the text.  See |Q_in| and below.
311 Here are a few often used ones.
314 APPENDING
316 The "i" command inserts a character before the character under the cursor.
317 That works fine; but what happens if you want to add stuff to the end of the
318 line?  For that you need to insert text after the cursor.  This is done with
319 the "a" (append) command.
320    For example, to change the line
322         and that's not saying much for the turtle. ~
324         and that's not saying much for the turtle!!! ~
326 move the cursor over to the dot at the end of the line. Then type "x" to
327 delete the period.  The cursor is now positioned at the end of the line on the
328 e in turtle.  Now type >
330         a!!!<Esc>
332 to append three exclamation points after the e in turtle:
334         and that's not saying much for the turtle!!! ~
337 OPENING UP A NEW LINE
339 The "o" command creates a new, empty line below the cursor and puts Vim in
340 Insert mode.  Then you can type the text for the new line.
341    Suppose the cursor is somewhere in the first of these two lines:
343         A very intelligent turtle ~
344         Found programming UNIX a hurdle ~
346 If you now use the "o" command and type new text: >
348         oThat liked using Vim<Esc>
350 The result is:
352         A very intelligent turtle ~
353         That liked using Vim ~
354         Found programming UNIX a hurdle ~
356 The "O" command (uppercase) opens a line above the cursor.
359 USING A COUNT
361 Suppose you want to move up nine lines.  You can type "kkkkkkkkk" or you can
362 enter the command "9k".  In fact, you can precede many commands with a number.
363 Earlier in this chapter, for instance, you added three exclamation points to
364 the end of a line by typing "a!!!<Esc>".  Another way to do this is to use the
365 command "3a!<Esc>".  The count of 3 tells the command that follows to triple
366 its effect.  Similarly, to delete three characters, use the command "3x".  The
367 count always comes before the command it applies to.
369 ==============================================================================
370 *02.7*  Getting out
372 To exit, use the "ZZ" command.  This command writes the file and exits.
374         Note:
375         Unlike many other editors, Vim does not automatically make a backup
376         file.  If you type "ZZ", your changes are committed and there's no
377         turning back.  You can configure the Vim editor to produce backup
378         files, see |07.4|.
381 DISCARDING CHANGES
383 Sometimes you will make a sequence of changes and suddenly realize you were
384 better off before you started.  Not to worry; Vim has a
385 quit-and-throw-things-away command.  It is: >
387         :q!
389 Don't forget to press <Enter> to finish the command.
391 For those of you interested in the details, the three parts of this command
392 are the colon (:), which enters Command-line mode; the q command, which tells
393 the editor to quit; and the override command modifier (!).
394    The override command modifier is needed because Vim is reluctant to throw
395 away changes.  If you were to just type ":q", Vim would display an error
396 message and refuse to exit:
398         E37: No write since last change (use ! to override) ~
400 By specifying the override, you are in effect telling Vim, "I know that what
401 I'm doing looks stupid, but I'm a big boy and really want to do this."
403 If you want to continue editing with Vim: The ":e!" command reloads the
404 original version of the file.
406 ==============================================================================
407 *02.8*  Finding help
409 Everything you always wanted to know can be found in the Vim help files.
410 Don't be afraid to ask!
411    To get generic help use this command: >
413         :help
415 You could also use the first function key <F1>.  If your keyboard has a <Help>
416 key it might work as well.
417    If you don't supply a subject, ":help" displays the general help window.
418 The creators of Vim did something very clever (or very lazy) with the help
419 system: They made the help window a normal editing window.  You can use all
420 the normal Vim commands to move through the help information.  Therefore h, j,
421 k, and l move left, down, up and right.
422    To get out of the help window, use the same command you use to get out of
423 the editor: "ZZ".  This will only close the help window, not exit Vim.
425 As you read the help text, you will notice some text enclosed in vertical bars
426 (for example, |help|).  This indicates a hyperlink.  If you position the
427 cursor anywhere between the bars and press CTRL-] (jump to tag), the help
428 system takes you to the indicated subject.  (For reasons not discussed here,
429 the Vim terminology for a hyperlink is tag.  So CTRL-] jumps to the location
430 of the tag given by the word under the cursor.)
431    After a few jumps, you might want to go back.  CTRL-T (pop tag) takes you
432 back to the preceding position.  CTRL-O (jump to older position) also works
433 nicely here.
434    At the top of the help screen, there is the notation *help.txt*.  This name
435 between "*" characters is used by the help system to define a tag (hyperlink
436 destination).
437    See |29.1| for details about using tags.
439 To get help on a given subject, use the following command: >
441         :help {subject}
443 To get help on the "x" command, for example, enter the following: >
445         :help x
447 To find out how to delete text, use this command: >
449         :help deleting
451 To get a complete index of all Vim commands, use the following command: >
453         :help index
455 When you need to get help for a control character command (for example,
456 CTRL-A), you need to spell it with the prefix "CTRL-". >
458         :help CTRL-A
460 The Vim editor has many different modes.  By default, the help system displays
461 the normal-mode commands.  For example, the following command displays help
462 for the normal-mode CTRL-H command: >
464         :help CTRL-H
466 To identify other modes, use a mode prefix.  If you want the help for the
467 insert-mode version of a command, use "i_".  For CTRL-H this gives you the
468 following command: >
470         :help i_CTRL-H
472 When you start the Vim editor, you can use several command-line arguments.
473 These all begin with a dash (-).  To find what the -t argument does, for
474 example, use the command: >
476         :help -t
478 The Vim editor has a number of options that enable you to configure and
479 customize the editor.  If you want help for an option, you need to enclose it
480 in single quotation marks.  To find out what the 'number' option does, for
481 example, use the following command: >
483         :help 'number'
485 The table with all mode prefixes can be found here: |help-context|.
487 Special keys are enclosed in angle brackets.  To find help on the up-arrow key
488 in Insert mode, for instance, use this command: >
490         :help i_<Up>
492 If you see an error message that you don't understand, for example:
494         E37: No write since last change (use ! to override) ~
496 You can use the error ID at the start to find help about it: >
498         :help E37
501 Summary:                                        *help-summary*  >
502         :help
503 <               Gives you very general help.  Scroll down to see a list of all
504                 helpfiles, including those added locally (i.e. not distributed
505                 with Vim). >
506         :help user-toc.txt
507 <               Table of contents of the User Manual. >
508         :help :subject
509 <               Ex-command "subject", for instance the following: >
510         :help :help
511 <               Help on getting help. >
512         :help abc
513 <               normal-mode command "abc". >
514         :help CTRL-B
515 <               Control key <C-B> in Normal mode. >
516         :help i_abc
517         :help i_CTRL-B
518 <               The same in Insert mode. >
519         :help v_abc
520         :help v_CTRL-B
521 <               The same in Visual mode. >
522         :help c_abc
523         :help c_CTRL-B
524 <               The same in Command-line mode. >
525         :help 'subject'
526 <               Option 'subject'. >
527         :help subject()
528 <               Function "subject". >
529         :help -subject
530 <               Command-line option "-subject". >
531         :help +subject
532 <               Compile-time feature "+subject'. >
533         :help EventName
534 <               Autocommand event "EventName". >
535         :help digraphs.txt
536 <               The top of the helpfile "digraph.txt".
537                 Similarly for any other helpfile. >
538         :help pattern<Tab>
539 <               Find a help tag starting with "pattern".  Repeat <Tab> for
540                 others. >
541         :help pattern<Ctrl-D>
542 <               See all possible help tag matches "pattern" at once. >
543         :helpgrep pattern
544 <               Search the whole text of all help files for pattern "pattern".
545                 Jumps to the first match.  Jump to other matches with: >
546             :cn
547 <                       next match >
548             :cprev
549             :cN
550 <                       previous match >
551             :cfirst
552             :clast
553 <                       first or last match >
554             :copen
555             :cclose
556 <                       open/close the quickfix window; press <Enter> to jump
557                         to the item under the cursor
560 ==============================================================================
562 Next chapter: |usr_03.txt|  Moving around
564 Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl: