874
|
1 *usr_02.txt* For Vim version 7.0. Last change: 2006 Apr 24
|
7
|
2
|
|
3 VIM USER MANUAL - by Bram Moolenaar
|
|
4
|
|
5 The first steps in Vim
|
|
6
|
|
7
|
|
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.
|
|
11
|
|
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
|
|
20
|
|
21 Next chapter: |usr_03.txt| Moving around
|
|
22 Previous chapter: |usr_01.txt| About the manuals
|
|
23 Table of contents: |usr_toc.txt|
|
|
24
|
|
25 ==============================================================================
|
|
26 *02.1* Running Vim for the First Time
|
|
27
|
|
28 To start Vim, enter this command: >
|
|
29
|
|
30 gvim file.txt
|
|
31
|
|
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:
|
|
37
|
|
38 +---------------------------------------+
|
|
39 |# |
|
|
40 |~ |
|
|
41 |~ |
|
|
42 |~ |
|
|
43 |~ |
|
|
44 |"file.txt" [New file] |
|
|
45 +---------------------------------------+
|
|
46 ('#" is the cursor position.)
|
|
47
|
|
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.
|
|
53
|
|
54
|
|
55 THE VIM COMMAND
|
|
56
|
|
57 The gvim command causes the editor to create a new window for editing. If you
|
|
58 use this command: >
|
|
59
|
|
60 vim file.txt
|
|
61
|
|
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.
|
|
68
|
|
69 ==============================================================================
|
|
70 *02.2* Inserting text
|
|
71
|
|
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: >
|
|
81
|
|
82 iA very intelligent turtle
|
|
83 Found programming UNIX a hurdle
|
|
84
|
|
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:
|
|
88
|
|
89 +---------------------------------------+
|
|
90 |A very intelligent turtle |
|
|
91 |Found programming UNIX a hurdle |
|
|
92 |~ |
|
|
93 |~ |
|
|
94 | |
|
|
95 +---------------------------------------+
|
|
96
|
|
97
|
|
98 WHAT IS THE MODE?
|
|
99
|
|
100 To be able to see what mode you are in, type this command: >
|
|
101
|
|
102 :set showmode
|
|
103
|
|
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.
|
|
110
|
|
111 +---------------------------------------+
|
|
112 |A very intelligent turtle |
|
|
113 |Found programming UNIX a hurdle |
|
|
114 |~ |
|
|
115 |~ |
|
|
116 |-- INSERT -- |
|
|
117 +---------------------------------------+
|
|
118
|
|
119 If you press <Esc> to go back to Normal mode the last line will be made blank.
|
|
120
|
|
121
|
|
122 GETTING OUT OF TROUBLE
|
|
123
|
|
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.
|
|
129
|
|
130 ==============================================================================
|
|
131 *02.3* Moving around
|
|
132
|
|
133 After you return to Normal mode, you can move around by using these keys:
|
|
134
|
|
135 h left *hjkl*
|
|
136 j down
|
|
137 k up
|
|
138 l right
|
|
139
|
|
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).
|
|
146
|
|
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.
|
|
156
|
|
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: >
|
|
159
|
|
160 k
|
|
161 h l
|
|
162 j
|
|
163
|
|
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.
|
|
168
|
|
169 For Japanese users, Hiroshi Iwatani suggested using this:
|
|
170
|
|
171 Komsomolsk
|
|
172 ^
|
|
173 |
|
|
174 Huan Ho <--- ---> Los Angeles
|
|
175 (Yellow river) |
|
|
176 v
|
|
177 Java (the island, not the programming language)
|
|
178
|
|
179 ==============================================================================
|
|
180 *02.4* Deleting characters
|
|
181
|
|
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:
|
|
187
|
|
188 +---------------------------------------+
|
|
189 |intelligent turtle |
|
|
190 |Found programming UNIX a hurdle |
|
|
191 |~ |
|
|
192 |~ |
|
|
193 | |
|
|
194 +---------------------------------------+
|
|
195
|
|
196 Now you can insert new text, for example by typing: >
|
|
197
|
|
198 iA young <Esc>
|
|
199
|
|
200 This begins an insert (the i), inserts the words "A young", and then exits
|
|
201 insert mode (the final <Esc>). The result:
|
|
202
|
|
203 +---------------------------------------+
|
|
204 |A young intelligent turtle |
|
|
205 |Found programming UNIX a hurdle |
|
|
206 |~ |
|
|
207 |~ |
|
|
208 | |
|
|
209 +---------------------------------------+
|
|
210
|
|
211
|
|
212 DELETING A LINE
|
|
213
|
|
214 To delete a whole line use the "dd" command. The following line will
|
|
215 then move up to fill the gap:
|
|
216
|
|
217 +---------------------------------------+
|
|
218 |Found programming UNIX a hurdle |
|
|
219 |~ |
|
|
220 |~ |
|
|
221 |~ |
|
|
222 | |
|
|
223 +---------------------------------------+
|
|
224
|
|
225
|
|
226 DELETING A LINE BREAK
|
|
227
|
|
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:
|
|
231
|
|
232 A young intelligent ~
|
|
233 turtle ~
|
|
234
|
|
235 Move the cursor to the first line and press "J":
|
|
236
|
|
237 A young intelligent turtle ~
|
|
238
|
|
239 ==============================================================================
|
|
240 *02.5* Undo and Redo
|
|
241
|
|
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:
|
|
246
|
|
247 A young intelligent turtle ~
|
|
248
|
|
249 Now type xxxxxxx to delete "A young". The result is as follows:
|
|
250
|
|
251 intelligent turtle ~
|
|
252
|
|
253 Type "u" to undo the last delete. That delete removed the g, so the undo
|
|
254 restores the character.
|
|
255
|
|
256 g intelligent turtle ~
|
|
257
|
|
258 The next u command restores the next-to-last character deleted:
|
|
259
|
|
260 ng intelligent turtle ~
|
|
261
|
|
262 The next u command gives you the u, and so on:
|
|
263
|
|
264 ung intelligent turtle ~
|
|
265 oung intelligent turtle ~
|
|
266 young intelligent turtle ~
|
|
267 young intelligent turtle ~
|
|
268 A young intelligent turtle ~
|
|
269
|
|
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.
|
|
277
|
|
278
|
|
279 REDO
|
|
280
|
|
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:
|
|
284
|
|
285 young intelligent turtle ~
|
|
286
|
|
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".
|
|
290
|
|
291 A very intelligent turtle ~
|
|
292 xxxx Delete very
|
|
293
|
|
294 A intelligent turtle ~
|
|
295 xxxxxx Delete turtle
|
|
296
|
|
297 A intelligent ~
|
|
298 Restore line with "U"
|
|
299 A very intelligent turtle ~
|
|
300 Undo "U" with "u"
|
|
301 A intelligent ~
|
|
302
|
|
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
|
799
|
305 can go to any of the situations you had. More about that in section ||.
|
7
|
306
|
|
307 ==============================================================================
|
|
308 *02.6* Other editing commands
|
|
309
|
|
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.
|
|
312
|
|
313
|
|
314 APPENDING
|
|
315
|
|
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
|
|
321
|
|
322 and that's not saying much for the turtle. ~
|
|
323 to
|
|
324 and that's not saying much for the turtle!!! ~
|
|
325
|
|
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 >
|
|
329
|
|
330 a!!!<Esc>
|
|
331
|
|
332 to append three exclamation points after the e in turtle:
|
|
333
|
|
334 and that's not saying much for the turtle!!! ~
|
|
335
|
|
336
|
|
337 OPENING UP A NEW LINE
|
|
338
|
|
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:
|
|
342
|
|
343 A very intelligent turtle ~
|
|
344 Found programming UNIX a hurdle ~
|
|
345
|
|
346 If you now use the "o" command and type new text: >
|
|
347
|
|
348 oThat liked using Vim<Esc>
|
|
349
|
|
350 The result is:
|
|
351
|
|
352 A very intelligent turtle ~
|
|
353 That liked using Vim ~
|
|
354 Found programming UNIX a hurdle ~
|
|
355
|
|
356 The "O" command (uppercase) opens a line above the cursor.
|
|
357
|
|
358
|
|
359 USING A COUNT
|
|
360
|
|
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.
|
|
368
|
|
369 ==============================================================================
|
|
370 *02.7* Getting out
|
|
371
|
|
372 To exit, use the "ZZ" command. This command writes the file and exits.
|
|
373
|
|
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|.
|
|
379
|
|
380
|
|
381 DISCARDING CHANGES
|
|
382
|
|
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: >
|
|
386
|
|
387 :q!
|
|
388
|
|
389 Don't forget to press <Enter> to finish the command.
|
|
390
|
|
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:
|
|
397
|
|
398 E37: No write since last change (use ! to override) ~
|
|
399
|
|
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."
|
|
402
|
|
403 If you want to continue editing with Vim: The ":e!" command reloads the
|
|
404 original version of the file.
|
|
405
|
|
406 ==============================================================================
|
|
407 *02.8* Finding help
|
|
408
|
|
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: >
|
|
412
|
|
413 :help
|
|
414
|
|
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.
|
|
424
|
|
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
|
236
|
428 system takes you to the indicated subject. (For reasons not discussed here,
|
7
|
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.
|
|
438
|
|
439 To get help on a given subject, use the following command: >
|
|
440
|
|
441 :help {subject}
|
|
442
|
|
443 To get help on the "x" command, for example, enter the following: >
|
|
444
|
|
445 :help x
|
|
446
|
|
447 To find out how to delete text, use this command: >
|
|
448
|
|
449 :help deleting
|
|
450
|
|
451 To get a complete index of all Vim commands, use the following command: >
|
|
452
|
|
453 :help index
|
|
454
|
|
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-". >
|
|
457
|
|
458 :help CTRL-A
|
|
459
|
|
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: >
|
|
463
|
|
464 :help CTRL-H
|
|
465
|
|
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: >
|
|
469
|
|
470 :help i_CTRL-H
|
|
471
|
|
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: >
|
|
475
|
|
476 :help -t
|
|
477
|
|
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: >
|
|
482
|
|
483 :help 'number'
|
|
484
|
|
485 The table with all mode prefixes can be found here: |help-context|.
|
|
486
|
236
|
487 Special keys are enclosed in angle brackets. To find help on the up-arrow key
|
7
|
488 in Insert mode, for instance, use this command: >
|
|
489
|
|
490 :help i_<Up>
|
|
491
|
|
492 If you see an error message that you don't understand, for example:
|
|
493
|
|
494 E37: No write since last change (use ! to override) ~
|
|
495
|
|
496 You can use the error ID at the start to find help about it: >
|
|
497
|
|
498 :help E37
|
|
499
|
|
500 ==============================================================================
|
|
501
|
|
502 Next chapter: |usr_03.txt| Moving around
|
|
503
|
|
504 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl:
|