Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | *usr_02.txt* For Vim version 7.0aa. Last change: 2004 Jun 08 |
| 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 |
| 305 | can go to any of the situations you had. |
| 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 |
| 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. |
| 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 | |
| 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: > |
| 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: |