565 lines
18 KiB
Text
565 lines
18 KiB
Text
|
*usr_02.txt* For Vim version 7.4. Last change: 2010 Jul 20
|
||
|
|
||
|
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.2|.
|
||
|
|
||
|
==============================================================================
|
||
|
*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:
|