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