1*usr_02.txt* For Vim version 8.2. Last change: 2021 Apr 24 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 a Command Prompt 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-Windows command prompt window, the editing occurs inside this window. 65The text in the window will look the same for both versions, but with gvim you 66have extra features, like a menu bar. More about that later. 67 68============================================================================== 69*02.2* Inserting text 70 71The Vim editor is a modal editor. That means that the editor behaves 72differently, depending on which mode you are in. The two basic modes are 73called Normal mode and Insert mode. In Normal mode the characters you type 74are commands. In Insert mode the characters are inserted as text. 75 Since you have just started Vim it will be in Normal mode. To start Insert 76mode you type the "i" command (i for Insert). Then you can enter 77the text. It will be inserted into the file. Do not worry if you make 78mistakes; you can correct them later. To enter the following programmer's 79limerick, this is what you type: > 80 81 iA very intelligent turtle 82 Found programming UNIX a hurdle 83 84After typing "turtle" you press the <Enter> key to start a new line. Finally 85you press the <Esc> key to stop Insert mode and go back to Normal mode. You 86now have two lines of text in your Vim window: 87 88 +---------------------------------------+ 89 |A very intelligent turtle | 90 |Found programming UNIX a hurdle | 91 |~ | 92 |~ | 93 | | 94 +---------------------------------------+ 95 96 97WHAT IS THE MODE? 98 99To be able to see what mode you are in, type this command: > 100 101 :set showmode 102 103You will notice that when typing the colon Vim moves the cursor to the last 104line of the window. That's where you type colon commands (commands that start 105with a colon). Finish this command by pressing the <Enter> key (all commands 106that start with a colon are finished this way). 107 Now, if you type the "i" command Vim will display --INSERT-- at the bottom 108of the window. This indicates you are in Insert mode. 109 110 +---------------------------------------+ 111 |A very intelligent turtle | 112 |Found programming UNIX a hurdle | 113 |~ | 114 |~ | 115 |-- INSERT -- | 116 +---------------------------------------+ 117 118If you press <Esc> to go back to Normal mode the last line will be made blank. 119 120 121GETTING OUT OF TROUBLE 122 123One of the problems for Vim novices is mode confusion, which is caused by 124forgetting which mode you are in or by accidentally typing a command that 125switches modes. To get back to Normal mode, no matter what mode you are in, 126press the <Esc> key. Sometimes you have to press it twice. If Vim beeps back 127at you, you already are in Normal mode. 128 129============================================================================== 130*02.3* Moving around 131 132After you return to Normal mode, you can move around by using these keys: 133 134 h left *hjkl* 135 j down 136 k up 137 l right 138 139At first, it may appear that these commands were chosen at random. After all, 140who ever heard of using l for right? But actually, there is a very good 141reason for these choices: Moving the cursor is the most common thing you do in 142an editor, and these keys are on the home row of your right hand. In other 143words, these commands are placed where you can type them the fastest 144(especially when you type with ten fingers). 145 146 Note: 147 You can also move the cursor by using the arrow keys. If you do, 148 however, you greatly slow down your editing because to press the arrow 149 keys, you must move your hand from the text keys to the arrow keys. 150 Considering that you might be doing it hundreds of times an hour, this 151 can take a significant amount of time. 152 Also, there are keyboards which do not have arrow keys, or which 153 locate them in unusual places; therefore, knowing the use of the hjkl 154 keys helps in those situations. 155 156One way to remember these commands is that h is on the left, l is on the 157right and j points down. In a picture: > 158 159 k 160 h l 161 j 162 163The best way to learn these commands is by using them. Use the "i" command to 164insert some more lines of text. Then use the hjkl keys to move around and 165insert a word somewhere. Don't forget to press <Esc> to go back to Normal 166mode. The |vimtutor| is also a nice way to learn by doing. 167 168For Japanese users, Hiroshi Iwatani suggested using this: 169 170 Komsomolsk 171 ^ 172 | 173 Huan Ho <--- ---> Los Angeles 174 (Yellow river) | 175 v 176 Java (the island, not the programming language) 177 178============================================================================== 179*02.4* Deleting characters 180 181To delete a character, move the cursor over it and type "x". (This is a 182throwback to the old days of the typewriter, when you deleted things by typing 183xxxx over them.) Move the cursor to the beginning of the first line, for 184example, and type xxxxxxx (seven x's) to delete "A very ". The result should 185look like this: 186 187 +---------------------------------------+ 188 |intelligent turtle | 189 |Found programming UNIX a hurdle | 190 |~ | 191 |~ | 192 | | 193 +---------------------------------------+ 194 195Now you can insert new text, for example by typing: > 196 197 iA young <Esc> 198 199This begins an insert (the i), inserts the words "A young", and then exits 200insert mode (the final <Esc>). The result: 201 202 +---------------------------------------+ 203 |A young intelligent turtle | 204 |Found programming UNIX a hurdle | 205 |~ | 206 |~ | 207 | | 208 +---------------------------------------+ 209 210 211DELETING A LINE 212 213To delete a whole line use the "dd" command. The following line will 214then move up to fill the gap: 215 216 +---------------------------------------+ 217 |Found programming UNIX a hurdle | 218 |~ | 219 |~ | 220 |~ | 221 | | 222 +---------------------------------------+ 223 224 225DELETING A LINE BREAK 226 227In Vim you can join two lines together, which means that the line break 228between them is deleted. The "J" command does this. 229 Take these two lines: 230 231 A young intelligent ~ 232 turtle ~ 233 234Move the cursor to the first line and press "J": 235 236 A young intelligent turtle ~ 237 238============================================================================== 239*02.5* Undo and Redo 240 241Suppose you delete too much. Well, you can type it in again, but an easier 242way exists. The "u" command undoes the last edit. Take a look at this in 243action: After using "dd" to delete the first line, "u" brings it back. 244 Another one: Move the cursor to the A in the first line: 245 246 A young intelligent turtle ~ 247 248Now type xxxxxxx to delete "A young". The result is as follows: 249 250 intelligent turtle ~ 251 252Type "u" to undo the last delete. That delete removed the g, so the undo 253restores the character. 254 255 g intelligent turtle ~ 256 257The next "u" command restores the next-to-last character deleted: 258 259 ng intelligent turtle ~ 260 261The next "u" command gives you the u, and so on: 262 263 ung intelligent turtle ~ 264 oung intelligent turtle ~ 265 young intelligent turtle ~ 266 young intelligent turtle ~ 267 A young intelligent turtle ~ 268 269 Note: 270 If you type "u" twice, and the result is that you get the same text 271 back, you have Vim configured to work Vi compatible. Look here to fix 272 this: |not-compatible|. 273 This text assumes you work "The Vim Way". You might prefer to use 274 the good old Vi way, but you will have to watch out for small 275 differences in the text then. 276 277 278REDO 279 280If you undo too many times, you can press CTRL-R (redo) to reverse the 281preceding command. In other words, it undoes the undo. To see this in 282action, press CTRL-R twice. The character A and the space after it disappear: 283 284 young intelligent turtle ~ 285 286There's a special version of the undo command, the "U" (undo line) command. 287The undo line command undoes all the changes made on the last line that was 288edited. Typing this command twice cancels the preceding "U". 289 290 A very intelligent turtle ~ 291 xxxx Delete very 292 293 A intelligent turtle ~ 294 xxxxxx Delete turtle 295 296 A intelligent ~ 297 Restore line with "U" 298 A very intelligent turtle ~ 299 Undo "U" with "u" 300 A intelligent ~ 301 302The "U" command is a change by itself, which the "u" command undoes and CTRL-R 303redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you 304can go to any of the situations you had. More about that in section |32.2|. 305 306============================================================================== 307*02.6* Other editing commands 308 309Vim has a large number of commands to change the text. See |Q_in| and below. 310Here are a few often used ones. 311 312 313APPENDING 314 315The "i" command inserts a character before the character under the cursor. 316That works fine; but what happens if you want to add stuff to the end of the 317line? For that you need to insert text after the cursor. This is done with 318the "a" (append) command. 319 For example, to change the line 320 321 and that's not saying much for the turtle. ~ 322to 323 and that's not saying much for the turtle!!! ~ 324 325move the cursor over to the dot at the end of the line. Then type "x" to 326delete the period. The cursor is now positioned at the end of the line on the 327e in turtle. Now type > 328 329 a!!!<Esc> 330 331to append three exclamation points after the e in turtle: 332 333 and that's not saying much for the turtle!!! ~ 334 335 336OPENING UP A NEW LINE 337 338The "o" command creates a new, empty line below the cursor and puts Vim in 339Insert mode. Then you can type the text for the new line. 340 Suppose the cursor is somewhere in the first of these two lines: 341 342 A very intelligent turtle ~ 343 Found programming UNIX a hurdle ~ 344 345If you now use the "o" command and type new text: > 346 347 oThat liked using Vim<Esc> 348 349The result is: 350 351 A very intelligent turtle ~ 352 That liked using Vim ~ 353 Found programming UNIX a hurdle ~ 354 355The "O" command (uppercase) opens a line above the cursor. 356 357 358USING A COUNT 359 360Suppose you want to move up nine lines. You can type "kkkkkkkkk" or you can 361enter the command "9k". In fact, you can precede many commands with a number. 362Earlier in this chapter, for instance, you added three exclamation points to 363the end of a line by typing "a!!!<Esc>". Another way to do this is to use the 364command "3a!<Esc>". The count of 3 tells the command that follows to triple 365its effect. Similarly, to delete three characters, use the command "3x". The 366count always comes before the command it applies to. 367 368============================================================================== 369*02.7* Getting out 370 371To exit, use the "ZZ" command. This command writes the file and exits. 372 373 Note: 374 Unlike many other editors, Vim does not automatically make a backup 375 file. If you type "ZZ", your changes are committed and there's no 376 turning back. You can configure the Vim editor to produce backup 377 files; see |07.4|. 378 379 380DISCARDING CHANGES 381 382Sometimes you will make a sequence of changes and suddenly realize you were 383better off before you started. Not to worry; Vim has a 384quit-and-throw-things-away command. It is: > 385 386 :q! 387 388Don't forget to press <Enter> to finish the command. 389 390For those of you interested in the details, the three parts of this command 391are the colon (:), which enters Command-line mode; the q command, which tells 392the editor to quit; and the override command modifier (!). 393 The override command modifier is needed because Vim is reluctant to throw 394away changes. If you were to just type ":q", Vim would display an error 395message and refuse to exit: 396 397 E37: No write since last change (use ! to override) ~ 398 399By specifying the override, you are in effect telling Vim, "I know that what 400I'm doing looks stupid, but I really want to do this." 401 402If you want to continue editing with Vim: The ":e!" command reloads the 403original version of the file. 404 405============================================================================== 406*02.8* Finding help 407 408Everything you always wanted to know can be found in the Vim help files. 409Don't be afraid to ask! 410 411If you know what you are looking for, it is usually easier to search for it 412using the help system, instead of using Google. Because the subjects follow 413a certain style guide. 414 415Also the help has the advantage of belonging to your particular Vim version. 416You won't see help for commands added later. These would not work for you. 417 418To get generic help use this command: > 419 420 :help 421 422You could also use the first function key <F1>. If your keyboard has a <Help> 423key it might work as well. 424 If you don't supply a subject, ":help" displays the general help window. 425The creators of Vim did something very clever (or very lazy) with the help 426system: They made the help window a normal editing window. You can use all 427the normal Vim commands to move through the help information. Therefore h, j, 428k, and l move left, down, up and right. 429 To get out of the help window, use the same command you use to get out of 430the editor: "ZZ". This will only close the help window, not exit Vim. 431 432As you read the help text, you will notice some text enclosed in vertical bars 433(for example, |help|). This indicates a hyperlink. If you position the 434cursor anywhere between the bars and press CTRL-] (jump to tag), the help 435system takes you to the indicated subject. (For reasons not discussed here, 436the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location 437of the tag given by the word under the cursor.) 438 After a few jumps, you might want to go back. CTRL-T (pop tag) takes you 439back to the preceding position. CTRL-O (jump to older position) also works 440nicely here. 441 At the top of the help screen, there is the notation *help.txt*. This name 442between "*" characters is used by the help system to define a tag (hyperlink 443destination). 444 See |29.1| for details about using tags. 445 446To get help on a given subject, use the following command: > 447 448 :help {subject} 449 450To get help on the "x" command, for example, enter the following: > 451 452 :help x 453 454To find out how to delete text, use this command: > 455 456 :help deleting 457 458To get a complete index of all Vim commands, use the following command: > 459 460 :help index 461 462When you need to get help for a control character command (for example, 463CTRL-A), you need to spell it with the prefix "CTRL-". > 464 465 :help CTRL-A 466 467The Vim editor has many different modes. By default, the help system displays 468the normal-mode commands. For example, the following command displays help 469for the normal-mode CTRL-H command: > 470 471 :help CTRL-H 472 473To identify other modes, use a mode prefix. If you want the help for the 474insert-mode version of a command, use "i_". For CTRL-H this gives you the 475following command: > 476 477 :help i_CTRL-H 478 479When you start the Vim editor, you can use several command-line arguments. 480These all begin with a dash (-). To find what the -t argument does, for 481example, use the command: > 482 483 :help -t 484 485The Vim editor has a number of options that enable you to configure and 486customize the editor. If you want help for an option, you need to enclose it 487in single quotation marks. To find out what the 'number' option does, for 488example, use the following command: > 489 490 :help 'number' 491 492The table with all mode prefixes can be found below: |help-summary|. 493 494Special keys are enclosed in angle brackets. To find help on the up-arrow key 495in Insert mode, for instance, use this command: > 496 497 :help i_<Up> 498 499If you see an error message that you don't understand, for example: 500 501 E37: No write since last change (use ! to override) ~ 502 503You can use the error ID at the start to find help about it: > 504 505 :help E37 506 507 508Summary: *help-summary* > 509 5101) Use Ctrl-D after typing a topic and let Vim show all available topics. 511 Or press Tab to complete: > 512 :help some<Tab> 513< More information on how to use the help: > 514 :help helphelp 515 5162) Follow the links in bars to related help. You can go from the detailed 517 help to the user documentation, which describes certain commands more from 518 a user perspective and less detailed. E.g. after: > 519 :help pattern.txt 520< You can see the user guide topics |03.9| and |usr_27.txt| in the 521 introduction. 522 5233) Options are enclosed in single apostrophes. To go to the help topic for the 524 list option: > 525 :help 'list' 526< If you only know you are looking for a certain option, you can also do: > 527 :help options.txt 528< to open the help page which describes all option handling and then search 529 using regular expressions, e.g. textwidth. 530 Certain options have their own namespace, e.g.: > 531 :help cpo-<letter> 532< for the corresponding flag of the 'cpoptions' settings, substitute <letter> 533 by a specific flag, e.g.: > 534 :help cpo-; 535< And for the 'guioptions' flags: > 536 :help go-<letter> 537 5384) Normal mode commands do not have a prefix. To go to the help page for the 539 "gt" command: > 540 :help gt 541 5425) Insert mode commands start with i_. Help for deleting a word: > 543 :help i_CTRL-W 544 5456) Visual mode commands start with v_. Help for jumping to the other side of 546 the Visual area: > 547 :help v_o 548 5497) Command line editing and arguments start with c_. Help for using the 550 command argument %: > 551 :help c_% 552 5538) Ex-commands always start with ":", so to go to the ":s" command help: > 554 :help :s 555 5569) Commands specifically for debugging start with ">". To go to the help 557 for the "cont" debug command: > 558 :help >cont 559 56010) Key combinations. They usually start with a single letter indicating 561 the mode for which they can be used. E.g.: > 562 :help i_CTRL-X 563< takes you to the family of CTRL-X commands for insert mode which can be 564 used to auto-complete different things. Note, that certain keys will 565 always be written the same, e.g. Control will always be CTRL. 566 For normal mode commands there is no prefix and the topic is available at 567 :h CTRL-<Letter>. E.g. > 568 :help CTRL-W 569< In contrast > 570 :help c_CTRL-R 571< will describe what the CTRL-R does when entering commands in the Command 572 line and > 573 :help v_CTRL-A 574< talks about incrementing numbers in visual mode and > 575 :help g_CTRL-A 576< talks about the "g<C-A>" command (e.g. you have to press "g" then 577 <CTRL-A>). Here the "g" stands for the normal command "g" which always 578 expects a second key before doing something similar to the commands 579 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 Vim 598 script. 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< which goes to chapter 10.1 in |usr_10.txt| and talks about recording 651 macros. 652 65319) Highlighting groups. Always start with hl-groupname. E.g. > 654 :help hl-WarningMsg 655< talks about the WarningMsg highlighting group. 656 65720) Syntax highlighting is namespaced to :syn-topic. E.g. > 658 :help :syn-conceal 659< talks about the conceal argument for the ":syn" command. 660 66121) Quickfix commands usually start with :c while location list commands 662 usually start with :l 663 66422) Autocommand events can be found by their name: > 665 :help BufWinLeave 666< To see all possible events: > 667 :help autocommand-events 668 66923) Command-line switches always start with "-". So for the help of the -f 670 command switch of Vim use: > 671 :help -f 672 67324) Optional features always start with "+". To find out about the 674 conceal feature use: > 675 :help +conceal 676 67725) Documentation for included filetype specific functionality is usually 678 available in the form ft-<filetype>-<functionality>. So > 679 :help ft-c-syntax 680< talks about the C syntax file and the option it provides. Sometimes, 681 additional sections for omni completion > 682 :help ft-php-omni 683< or filetype plugins > 684 :help ft-tex-plugin 685< are available. 686 68726) Error and Warning codes can be looked up directly in the help. So > 688 :help E297 689< takes you exactly to the description of the swap error message and > 690 :help W10 691< talks about the warning "Changing a readonly file". 692 Sometimes, however, those error codes are not described, but rather are 693 listed at the Vim command that usually causes this. So: > 694 :help E128 695< takes you to the |:function| command 696 697 698============================================================================== 699 700Next chapter: |usr_03.txt| Moving around 701 702Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: 703