1*usr_02.txt*	For Vim version 7.3.  Last change: 2010 Jul 20
2
3		     VIM USER MANUAL - by Bram Moolenaar
4
5			    The first steps in Vim
6
7
8This chapter provides just enough information to edit a file with Vim.  Not
9well or fast, but you can edit.  Take some time to practice with these
10commands, 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
23Table of contents: |usr_toc.txt|
24
25==============================================================================
26*02.1*	Running Vim for the First Time
27
28To start Vim, enter this command: >
29
30	gvim file.txt
31
32In UNIX you can type this at any command prompt.  If you are running Microsoft
33Windows, open an MS-DOS prompt window and enter the command.
34   In either case, Vim starts editing a file called file.txt.  Because this
35is a new file, you get a blank window. This is what your screen will look
36like:
37
38	+---------------------------------------+
39	|#					|
40	|~					|
41	|~					|
42	|~					|
43	|~					|
44	|"file.txt" [New file]			|
45	+---------------------------------------+
46		('#" is the cursor position.)
47
48The tilde (~) lines indicate lines not in the file.  In other words, when Vim
49runs out of file to display, it displays tilde lines.  At the bottom of the
50screen, a message line indicates the file is named file.txt and shows that you
51are creating a new file.  The message information is temporary and other
52information overwrites it.
53
54
55THE VIM COMMAND
56
57The gvim command causes the editor to create a new window for editing.  If you
58use this command: >
59
60	vim file.txt
61
62the editing occurs inside your command window.  In other words, if you are
63running inside an xterm, the editor uses your xterm window.  If you are using
64an MS-DOS command prompt window under Microsoft Windows, the editing occurs
65inside this window.  The text in the window will look the same for both
66versions, but with gvim you have extra features, like a menu bar.  More about
67that later.
68
69==============================================================================
70*02.2*	Inserting text
71
72The Vim editor is a modal editor.  That means that the editor behaves
73differently, depending on which mode you are in.  The two basic modes are
74called Normal mode and Insert mode.  In Normal mode the characters you type
75are 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
77mode you type the "i" command (i for Insert).  Then you can enter
78the text.  It will be inserted into the file.  Do not worry if you make
79mistakes; you can correct them later.  To enter the following programmer's
80limerick, this is what you type: >
81
82	iA very intelligent turtle
83	Found programming UNIX a hurdle
84
85After typing "turtle" you press the <Enter> key to start a new line.  Finally
86you press the <Esc> key to stop Insert mode and go back to Normal mode.  You
87now 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
98WHAT IS THE MODE?
99
100To be able to see what mode you are in, type this command: >
101
102	:set showmode
103
104You will notice that when typing the colon Vim moves the cursor to the last
105line of the window.  That's where you type colon commands (commands that start
106with a colon).  Finish this command by pressing the <Enter> key (all commands
107that start with a colon are finished this way).
108   Now, if you type the "i" command Vim will display --INSERT-- at the bottom
109of 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
119If you press <Esc> to go back to Normal mode the last line will be made blank.
120
121
122GETTING OUT OF TROUBLE
123
124One of the problems for Vim novices is mode confusion, which is caused by
125forgetting which mode you are in or by accidentally typing a command that
126switches modes.  To get back to Normal mode, no matter what mode you are in,
127press the <Esc> key.  Sometimes you have to press it twice.  If Vim beeps back
128at you, you already are in Normal mode.
129
130==============================================================================
131*02.3*	Moving around
132
133After 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
140At first, it may appear that these commands were chosen at random.  After all,
141who ever heard of using l for right?  But actually, there is a very good
142reason for these choices: Moving the cursor is the most common thing you do in
143an editor, and these keys are on the home row of your right hand.  In other
144words, 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
157One way to remember these commands is that h is on the left, l is on the
158right and j points down.  In a picture: >
159
160		       k
161		   h     l
162		     j
163
164The best way to learn these commands is by using them.  Use the "i" command to
165insert some more lines of text.  Then use the hjkl keys to move around and
166insert a word somewhere.  Don't forget to press <Esc> to go back to Normal
167mode.  The |vimtutor| is also a nice way to learn by doing.
168
169For 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
182To delete a character, move the cursor over it and type "x".  (This is a
183throwback to the old days of the typewriter, when you deleted things by typing
184xxxx over them.)  Move the cursor to the beginning of the first line, for
185example, and type xxxxxxx (seven x's) to delete "A very ".  The result should
186look like this:
187
188	+---------------------------------------+
189	|intelligent turtle			|
190	|Found programming UNIX a hurdle	|
191	|~					|
192	|~					|
193	|					|
194	+---------------------------------------+
195
196Now you can insert new text, for example by typing: >
197
198	iA young <Esc>
199
200This begins an insert (the i), inserts the words "A young", and then exits
201insert 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
212DELETING A LINE
213
214To delete a whole line use the "dd" command.  The following line will
215then move up to fill the gap:
216
217	+---------------------------------------+
218	|Found programming UNIX a hurdle	|
219	|~					|
220	|~					|
221	|~					|
222	|					|
223	+---------------------------------------+
224
225
226DELETING A LINE BREAK
227
228In Vim you can join two lines together, which means that the line break
229between them is deleted.  The "J" command does this.
230   Take these two lines:
231
232	A young intelligent ~
233	turtle ~
234
235Move the cursor to the first line and press "J":
236
237	A young intelligent turtle ~
238
239==============================================================================
240*02.5*	Undo and Redo
241
242Suppose you delete too much.  Well, you can type it in again, but an easier
243way exists.  The "u" command undoes the last edit.  Take a look at this in
244action: 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
249Now type xxxxxxx to delete "A young".  The result is as follows:
250
251	 intelligent turtle ~
252
253Type "u" to undo the last delete.  That delete removed the g, so the undo
254restores the character.
255
256	g intelligent turtle ~
257
258The next u command restores the next-to-last character deleted:
259
260	ng intelligent turtle ~
261
262The 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
279REDO
280
281If you undo too many times, you can press CTRL-R (redo) to reverse the
282preceding command.  In other words, it undoes the undo.  To see this in
283action, press CTRL-R twice.  The character A and the space after it disappear:
284
285	young intelligent turtle ~
286
287There's a special version of the undo command, the "U" (undo line) command.
288The undo line command undoes all the changes made on the last line that was
289edited.  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
303The "U" command is a change by itself, which the "u" command undoes and CTRL-R
304redoes.  This might be a bit confusing.  Don't worry, with "u" and CTRL-R you
305can go to any of the situations you had.  More about that in section |32.2|.
306
307==============================================================================
308*02.6*	Other editing commands
309
310Vim has a large number of commands to change the text.  See |Q_in| and below.
311Here are a few often used ones.
312
313
314APPENDING
315
316The "i" command inserts a character before the character under the cursor.
317That works fine; but what happens if you want to add stuff to the end of the
318line?  For that you need to insert text after the cursor.  This is done with
319the "a" (append) command.
320   For example, to change the line
321
322	and that's not saying much for the turtle. ~
323to
324	and that's not saying much for the turtle!!! ~
325
326move the cursor over to the dot at the end of the line. Then type "x" to
327delete the period.  The cursor is now positioned at the end of the line on the
328e in turtle.  Now type >
329
330	a!!!<Esc>
331
332to append three exclamation points after the e in turtle:
333
334	and that's not saying much for the turtle!!! ~
335
336
337OPENING UP A NEW LINE
338
339The "o" command creates a new, empty line below the cursor and puts Vim in
340Insert 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
346If you now use the "o" command and type new text: >
347
348	oThat liked using Vim<Esc>
349
350The result is:
351
352	A very intelligent turtle ~
353	That liked using Vim ~
354	Found programming UNIX a hurdle ~
355
356The "O" command (uppercase) opens a line above the cursor.
357
358
359USING A COUNT
360
361Suppose you want to move up nine lines.  You can type "kkkkkkkkk" or you can
362enter the command "9k".  In fact, you can precede many commands with a number.
363Earlier in this chapter, for instance, you added three exclamation points to
364the end of a line by typing "a!!!<Esc>".  Another way to do this is to use the
365command "3a!<Esc>".  The count of 3 tells the command that follows to triple
366its effect.  Similarly, to delete three characters, use the command "3x".  The
367count always comes before the command it applies to.
368
369==============================================================================
370*02.7*	Getting out
371
372To 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
381DISCARDING CHANGES
382
383Sometimes you will make a sequence of changes and suddenly realize you were
384better off before you started.  Not to worry; Vim has a
385quit-and-throw-things-away command.  It is: >
386
387	:q!
388
389Don't forget to press <Enter> to finish the command.
390
391For those of you interested in the details, the three parts of this command
392are the colon (:), which enters Command-line mode; the q command, which tells
393the editor to quit; and the override command modifier (!).
394   The override command modifier is needed because Vim is reluctant to throw
395away changes.  If you were to just type ":q", Vim would display an error
396message and refuse to exit:
397
398	E37: No write since last change (use ! to override) ~
399
400By specifying the override, you are in effect telling Vim, "I know that what
401I'm doing looks stupid, but I'm a big boy and really want to do this."
402
403If you want to continue editing with Vim: The ":e!" command reloads the
404original version of the file.
405
406==============================================================================
407*02.8*	Finding help
408
409Everything you always wanted to know can be found in the Vim help files.
410Don't be afraid to ask!
411   To get generic help use this command: >
412
413	:help
414
415You could also use the first function key <F1>.  If your keyboard has a <Help>
416key it might work as well.
417   If you don't supply a subject, ":help" displays the general help window.
418The creators of Vim did something very clever (or very lazy) with the help
419system: They made the help window a normal editing window.  You can use all
420the normal Vim commands to move through the help information.  Therefore h, j,
421k, 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
423the editor: "ZZ".  This will only close the help window, not exit Vim.
424
425As 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
427cursor anywhere between the bars and press CTRL-] (jump to tag), the help
428system takes you to the indicated subject.  (For reasons not discussed here,
429the Vim terminology for a hyperlink is tag.  So CTRL-] jumps to the location
430of 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
432back to the preceding position.  CTRL-O (jump to older position) also works
433nicely here.
434   At the top of the help screen, there is the notation *help.txt*.  This name
435between "*" characters is used by the help system to define a tag (hyperlink
436destination).
437   See |29.1| for details about using tags.
438
439To get help on a given subject, use the following command: >
440
441	:help {subject}
442
443To get help on the "x" command, for example, enter the following: >
444
445	:help x
446
447To find out how to delete text, use this command: >
448
449	:help deleting
450
451To get a complete index of all Vim commands, use the following command: >
452
453	:help index
454
455When you need to get help for a control character command (for example,
456CTRL-A), you need to spell it with the prefix "CTRL-". >
457
458	:help CTRL-A
459
460The Vim editor has many different modes.  By default, the help system displays
461the normal-mode commands.  For example, the following command displays help
462for the normal-mode CTRL-H command: >
463
464	:help CTRL-H
465
466To identify other modes, use a mode prefix.  If you want the help for the
467insert-mode version of a command, use "i_".  For CTRL-H this gives you the
468following command: >
469
470	:help i_CTRL-H
471
472When you start the Vim editor, you can use several command-line arguments.
473These all begin with a dash (-).  To find what the -t argument does, for
474example, use the command: >
475
476	:help -t
477
478The Vim editor has a number of options that enable you to configure and
479customize the editor.  If you want help for an option, you need to enclose it
480in single quotation marks.  To find out what the 'number' option does, for
481example, use the following command: >
482
483	:help 'number'
484
485The table with all mode prefixes can be found here: |help-context|.
486
487Special keys are enclosed in angle brackets.  To find help on the up-arrow key
488in Insert mode, for instance, use this command: >
489
490	:help i_<Up>
491
492If you see an error message that you don't understand, for example:
493
494	E37: No write since last change (use ! to override) ~
495
496You can use the error ID at the start to find help about it: >
497
498	:help E37
499
500
501Summary: 					*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
558
559
560==============================================================================
561
562Next chapter: |usr_03.txt|  Moving around
563
564Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
565