1*usr_02.txt* For Vim version 8.1. Last change: 2017 Mar 14 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 412If you know what you are looking for, it is usually easier to search for it 413using the help system, instead of using Google. Because the subjects follow 414a certain style guide. 415 416Also the help has the advantage of belonging to your particular Vim version. 417You won't see help for commands added later. These would not work for you. 418 419To get generic help use this command: > 420 421 :help 422 423You could also use the first function key <F1>. If your keyboard has a <Help> 424key it might work as well. 425 If you don't supply a subject, ":help" displays the general help window. 426The creators of Vim did something very clever (or very lazy) with the help 427system: They made the help window a normal editing window. You can use all 428the normal Vim commands to move through the help information. Therefore h, j, 429k, and l move left, down, up and right. 430 To get out of the help window, use the same command you use to get out of 431the editor: "ZZ". This will only close the help window, not exit Vim. 432 433As you read the help text, you will notice some text enclosed in vertical bars 434(for example, |help|). This indicates a hyperlink. If you position the 435cursor anywhere between the bars and press CTRL-] (jump to tag), the help 436system takes you to the indicated subject. (For reasons not discussed here, 437the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location 438of the tag given by the word under the cursor.) 439 After a few jumps, you might want to go back. CTRL-T (pop tag) takes you 440back to the preceding position. CTRL-O (jump to older position) also works 441nicely here. 442 At the top of the help screen, there is the notation *help.txt*. This name 443between "*" characters is used by the help system to define a tag (hyperlink 444destination). 445 See |29.1| for details about using tags. 446 447To get help on a given subject, use the following command: > 448 449 :help {subject} 450 451To get help on the "x" command, for example, enter the following: > 452 453 :help x 454 455To find out how to delete text, use this command: > 456 457 :help deleting 458 459To get a complete index of all Vim commands, use the following command: > 460 461 :help index 462 463When you need to get help for a control character command (for example, 464CTRL-A), you need to spell it with the prefix "CTRL-". > 465 466 :help CTRL-A 467 468The Vim editor has many different modes. By default, the help system displays 469the normal-mode commands. For example, the following command displays help 470for the normal-mode CTRL-H command: > 471 472 :help CTRL-H 473 474To identify other modes, use a mode prefix. If you want the help for the 475insert-mode version of a command, use "i_". For CTRL-H this gives you the 476following command: > 477 478 :help i_CTRL-H 479 480When you start the Vim editor, you can use several command-line arguments. 481These all begin with a dash (-). To find what the -t argument does, for 482example, use the command: > 483 484 :help -t 485 486The Vim editor has a number of options that enable you to configure and 487customize the editor. If you want help for an option, you need to enclose it 488in single quotation marks. To find out what the 'number' option does, for 489example, use the following command: > 490 491 :help 'number' 492 493The table with all mode prefixes can be found below: |help-summary|. 494 495Special keys are enclosed in angle brackets. To find help on the up-arrow key 496in Insert mode, for instance, use this command: > 497 498 :help i_<Up> 499 500If you see an error message that you don't understand, for example: 501 502 E37: No write since last change (use ! to override) ~ 503 504You can use the error ID at the start to find help about it: > 505 506 :help E37 507 508 509Summary: *help-summary* > 510 5111) Use Ctrl-D after typing a topic and let Vim show all available topics. 512 Or press Tab to complete: > 513 :help some<Tab> 514< More information on how to use the help: > 515 :help helphelp 516 5172) Follow the links in bars to related help. You can go from the detailed 518 help to the user documentation, which describes certain commands more from 519 a user perspective and less detailed. E.g. after: > 520 :help pattern.txt 521< You can see the user guide topics |03.9| and |usr_27.txt| in the 522 introduction. 523 5243) Options are enclosed in single apostrophes. To go to the help topic for the 525 list option: > 526 :help 'list' 527< If you only know you are looking for a certain option, you can also do: > 528 :help options.txt 529< to open the help page which describes all option handling and then search 530 using regular expressions, e.g. textwidth. 531 Certain options have their own namespace, e.g.: > 532 :help cpo-<letter> 533< for the corresponding flag of the 'cpoptions' settings, substitute <letter> 534 by a specific flag, e.g.: > 535 :help cpo-; 536< And for the guioption flags: > 537 :help go-<letter> 538 5394) Normal mode commands do not have a prefix. To go to the help page for the 540 "gt" command: > 541 :help gt 542 5435) Insert mode commands start with i_. Help for deleting a word: > 544 :help i_CTRL-W 545 5466) Visual mode commands start with v_. Help for jumping to the other side of 547 the Visual area: > 548 :help v_o 549 5507) Command line editing and arguments start with c_. Help for using the 551 command argument %: > 552 :help c_% 553 5548) Ex-commands always start with ":", so to go to the :s command help: > 555 :help :s 556 5579) Commands specifically for debugging start with ">". To go to the help 558 for the "cont" debug command: > 559 :help >cont 560 56110) Key combinations. They usually start with a single letter indicating 562 the mode for which they can be used. E.g.: > 563 :help i_CTRL-X 564< takes you to the family of Ctrl-X commands for insert mode which can be 565 used to auto complete different things. Note, that certain keys will 566 always be written the same, e.g. Control will always be CTRL. 567 For normal mode commands there is no prefix and the topic is available at 568 :h CTRL-<Letter>. E.g. > 569 :help CTRL-W 570< In contrast > 571 :help c_CTRL-R 572< will describe what the Ctrl-R does when entering commands in the Command 573 line and > 574 :help v_Ctrl-A 575< talks about incrementing numbers in visual mode and > 576 :help g_CTRL-A 577< talks about the g<C-A> command (e.g. you have to press "g" then <Ctrl-A>). 578 Here the "g" stand for the normal command "g" which always expects a second 579 key before doing something similar to the commands starting with "z" 580 58111) Regexp items always start with /. So to get help for the "\+" quantifier 582 in Vim regexes: > 583 :help /\+ 584< If you need to know everything about regular expressions, start reading 585 at: > 586 :help pattern.txt 587 58812) Registers always start with "quote". To find out about the special ":" 589 register: > 590 :help quote: 591 59213) Vim script is available at > 593 :help eval.txt 594< Certain aspects of the language are available at :h expr-X where "X" is a 595 single letter. E.g. > 596 :help expr-! 597< will take you to the topic describing the "!" (Not) operator for 598 VimScript. 599 Also important is > 600 :help function-list 601< to find a short description of all functions available. Help topics for 602 Vim script functions always include the "()", so: > 603 :help append() 604< talks about the append Vim script function rather than how to append text 605 in the current buffer. 606 60714) Mappings are talked about in the help page :h |map.txt|. Use > 608 :help mapmode-i 609< to find out about the |:imap| command. Also use :map-topic 610 to find out about certain subtopics particular for mappings. e.g: > 611 :help :map-local 612< for buffer-local mappings or > 613 :help map-bar 614< for how the '|' is handled in mappings. 615 61615) Command definitions are talked about :h command-topic, so use > 617 :help command-bar 618< to find out about the '!' argument for custom commands. 619 62016) Window management commands always start with CTRL-W, so you find the 621 corresponding help at :h CTRL-W_letter. E.g. > 622 :help CTRL-W_p 623< for moving the previous accessed window. You can also access > 624 :help windows.txt 625< and read your way through if you are looking for window handling 626 commands. 627 62817) Use |:helpgrep| to search in all help pages (and also of any installed 629 plugins). See |:helpgrep| for how to use it. 630 To search for a topic: > 631 :helpgrep topic 632< This takes you to the first match. To go to the next one: > 633 :cnext 634< All matches are available in the quickfix window which can be opened 635 with: > 636 :copen 637< Move around to the match you like and press Enter to jump to that help. 638 63918) The user manual. This describes help topics for beginners in a rather 640 friendly way. Start at |usr_toc.txt| to find the table of content (as you 641 might have guessed): > 642 :help usr_toc.txt 643< Skim over the contents to find interesting topics. The "Digraphs" and 644 "Entering special characters" items are in chapter 24, so to go to that 645 particular help page: > 646 :help usr_24.txt 647< Also if you want to access a certain chapter in the help, the chapter 648 number can be accessed directly like this: > 649 :help 10.1 650< goes to chapter 10.1 in |usr_10.txt| and talks about recording macros. 651 65219) Highlighting groups. Always start with hl-groupname. E.g. > 653 :help hl-WarningMsg 654< talks about the WarningMsg highlighting group. 655 65620) Syntax highlighting is namespaced to :syn-topic e.g. > 657 :help :syn-conceal 658< talks about the conceal argument for the :syn command. 659 66021) Quickfix commands usually start with :c while location list commands 661 usually start with :l 662 66322) Autocommand events can be found by their name: > 664 :help BufWinLeave 665< To see all possible events: > 666 :help autocommand-events 667 66823) Command-line switches always start with "-". So for the help of the -f 669 command switch of Vim use: > 670 :help -f 671 67224) Optional features always start with "+". To find out about the 673 conceal feature use: > 674 :help +conceal 675 67625) Documentation for included filetype specific functionality is usually 677 available in the form ft-<filetype>-<functionality>. So > 678 :help ft-c-syntax 679< talks about the C syntax file and the option it provides. Sometimes, 680 additional sections for omni completion > 681 :help ft-php-omni 682< or filetype plugins > 683 :help ft-tex-plugin 684< are available. 685 68626) Error and Warning codes can be looked up directly in the help. So > 687 :help E297 688< takes you exactly to the description of the swap error message and > 689 :help W10 690< talks about the warning "Changing a readonly file". 691 Sometimes however, those error codes are not described, but rather are 692 listed at the Vim command that usually causes this. So: > 693 :help E128 694< takes you to the |:function| command 695 696 697============================================================================== 698 699Next chapter: |usr_03.txt| Moving around 700 701Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: 702