1*motion.txt* For Vim version 7.0aa. Last change: 2004 Jun 17 2 3 4 VIM REFERENCE MANUAL by Bram Moolenaar 5 6 7Cursor motions *cursor-motions* *navigation* 8 9These commands move the cursor position. If the new position is off of the 10screen, the screen is scrolled to show the cursor (see also 'scrolljump' and 11'scrolloff' options). 12 131. Motions and operators |operator| 142. Left-right motions |left-right-motions| 153. Up-down motions |up-down-motions| 164. Word motions |word-motions| 175. Text object motions |object-motions| 186. Text object selection |object-select| 197. Marks |mark-motions| 208. Jumps |jump-motions| 219. Various motions |various-motions| 22 23General remarks: 24 25If you want to know where you are in the file use the "CTRL-G" command 26|CTRL-G| or the "g CTRL-G" command |g_CTRL-G|. If you set the 'ruler' option, 27the cursor position is continuously shown in the status line (which slows down 28Vim a little). 29 30Experienced users prefer the hjkl keys because they are always right under 31their fingers. Beginners often prefer the arrow keys, because they do not 32know what the hjkl keys do. The mnemonic value of hjkl is clear from looking 33at the keyboard. Think of j as an arrow pointing downwards. 34 35The 'virtualedit' option can be set to make it possible to move the cursor to 36positions where there is no character or halfway a character. 37 38============================================================================== 391. Motions and operators *operator* 40 41The motion commands can be used after an operator command, to have the command 42operate on the text that was moved over. That is the text between the cursor 43position before and after the motion. Operators are generally used to delete 44or change text. The following operators are available: 45 46 |c| c change 47 |d| d delete 48 |y| y yank into register (does not change the text) 49 |~| ~ swap case (only if 'tildeop' is set) 50 |g~| g~ swap case 51 |gu| gu make lowercase 52 |gU| gU make uppercase 53 |!| ! filter through an external program 54 |=| = filter through 'equalprg' or C-indenting if empty 55 |gq| gq text formatting 56 |g?| g? ROT13 encoding 57 |>| > shift right 58 |<| < shift left 59 |zf| zf define a fold 60 61If the motion includes a count and the operator also had a count before it, 62the two counts are multiplied. For example: "2d3w" deletes six words. 63 64After applying the operator the cursor is mostly left at the start of the text 65that was operated upon. For example, "yfe" doesn't move the cursor, but "yFe" 66moves the cursor leftwards to the "e" where the yank started. 67 68 *linewise* *characterwise* 69The operator either affects whole lines, or the characters between the start 70and end position. Generally, motions that move between lines affect lines 71(are linewise), and motions that move within a line affect characters (are 72characterwise). However, there are some exceptions. 73 74 *exclusive* *inclusive* 75A character motion is either inclusive or exclusive. When inclusive, the start 76and end position of the motion are included in the operation. When exclusive, 77the last character towards the end of the buffer is not included. Linewise 78motions always include the start and end position. 79 80Which motions are linewise, inclusive or exclusive is mentioned below. There 81are however, two general exceptions: 821. If the motion is exclusive and the end of the motion is in column 1, the 83 end of the motion is moved to the end of the previous line and the motion 84 becomes inclusive. Example: "}" moves to the first line after a paragraph, 85 but "d}" will not include that line. 862. If the motion is exclusive, the end of the motion is in column 1 and the 87 start of the motion was at or before the first non-blank in the line, the 88 motion becomes linewise. Example: If a paragraph begins with some blanks 89 and you do "d}" while standing on the first non-blank, all the lines of 90 the paragraph are deleted, including the blanks. If you do a put now, the 91 deleted lines will be inserted below the cursor position. 92 93Note that when the operator is pending (the operator command is typed, but the 94motion isn't yet), a special set of mappings can be used. See |:omap|. 95 96Instead of first giving the operator and then a motion you can use Visual 97mode: mark the start of the text with "v", move the cursor to the end of the 98text that is to be affected and then hit the operator. The text between the 99start and the cursor position is highlighted, so you can see what text will 100be operated upon. This allows much more freedom, but requires more key 101strokes and has limited redo functionality. See the chapter on Visual mode 102|Visual-mode|. 103 104You can use a ":" command for a motion. For example "d:call FindEnd()". 105But this can't be redone with "." if the command is more than one line. 106This can be repeated: > 107 d:call search("f")<CR> 108This cannot be repeated: > 109 d:if 1<CR> 110 call search("f")<CR> 111 endif<CR> 112 113 114FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE 115 116When a motion is not of the type you would like to use, you can force another 117type by using "v", "V" or CTRL-V just after the operator. 118Example: > 119 dj 120deletes two lines > 121 dvj 122deletes from the cursor position until the character below the cursor > 123 d<C-V>j 124deletes the character under the cursor and the character below the cursor. > 125 126Be careful with forcing a linewise movement to be used characterwise or 127blockwise, the column may not always be defined. 128 129 *o_v* 130v When used after an operator, before the motion command: Force 131 the operator to work characterwise, also when the motion is 132 linewise. If the motion was linewise, it will become 133 |exclusive|. 134 If the motion already was characterwise, toggle 135 inclusive/exclusive. This can be used to make an exclusive 136 motion inclusive and an inclusive motion exclusive. 137 138 *o_V* 139V When used after an operator, before the motion command: Force 140 the operator to work linewise, also when the motion is 141 characterwise. 142 143 *o_CTRL-V* 144CTRL-V When used after an operator, before the motion command: Force 145 the operator to work blockwise. This works like Visual block 146 mode selection, with the corners defined by the cursor 147 position before and after the motion. 148 149============================================================================== 1502. Left-right motions *left-right-motions* 151 152h or *h* 153<Left> or *<Left>* 154CTRL-H or *CTRL-H* *<BS>* 155<BS> [count] characters to the left. |exclusive| motion. 156 Note: If you prefer <BS> to delete a character, use 157 the mapping: 158 :map CTRL-V<BS> X 159 (to enter "CTRL-V<BS>" type the CTRL-V key, followed 160 by the <BS> key) 161 See |:fixdel| if the <BS> key does not do what you 162 want. 163 164l or *l* 165<Right> or *<Right>* *<Space>* 166<Space> [count] characters to the right. |exclusive| motion. 167 168 *0* 1690 To the first character of the line. |exclusive| 170 motion. When moving up or down, stay in same screen 171 column (if possible). 172 173 *<Home>* *<kHome>* 174<Home> To the first character of the line. |exclusive| 175 motion. When moving up or down, stay in same text 176 column (if possible). Works like "1|", which differs 177 from "0" when the line starts with a <Tab>. {not in 178 Vi} 179 180 *^* 181^ To the first non-blank character of the line. 182 |exclusive| motion. 183 184 *$* *<End>* *<kEnd>* 185$ or <End> To the end of the line. When a count is given also go 186 [count - 1] lines downward |inclusive|. 187 In Visual mode the cursor goes to just after the last 188 character in the line. 189 When 'virtualedit' is active, "$" may move the cursor 190 back from past the end of the line to the last 191 character in the line. 192 193 *g_* 194g_ To the last non-blank character of the line and 195 [count - 1] lines downward |inclusive|. {not in Vi} 196 197 *g0* *g<Home>* 198g0 or g<Home> When lines wrap ('wrap' on): To the first character of 199 the screen line. |exclusive| motion. Differs from 200 "0" when a line is wider than the screen. 201 When lines don't wrap ('wrap' off): To the leftmost 202 character of the current line that is on the screen. 203 Differs from "0" when the first character of the line 204 is not on the screen. {not in Vi} 205 206 *g^* 207g^ When lines wrap ('wrap' on): To the first non-blank 208 character of the screen line. |exclusive| motion. 209 Differs from "^" when a line is wider than the screen. 210 When lines don't wrap ('wrap' off): To the leftmost 211 non-blank character of the current line that is on the 212 screen. Differs from "^" when the first non-blank 213 character of the line is not on the screen. {not in 214 Vi} 215 216 *gm* 217gm Like "g0", but half a screenwidth to the right (or as 218 much as possible). {not in Vi} 219 220 *g$* *g<End>* 221g$ or g<End> When lines wrap ('wrap' on): To the last character of 222 the screen line and [count - 1] screen lines downward 223 |inclusive|. Differs from "$" when a line is wider 224 than the screen. 225 When lines don't wrap ('wrap' off): To the rightmost 226 character of the current line that is visible on the 227 screen. Differs from "$" when the last character of 228 the line is not on the screen or when a count is used. 229 Additionally, vertical movements keep the column, 230 instead of going to the end of the line. 231 {not in Vi} 232 233 *bar* 234| To screen column [count] in the current line. 235 |exclusive| motion. 236 237 *f* 238f{char} To [count]'th occurrence of {char} to the right. The 239 cursor is placed on {char} |inclusive|. 240 {char} can be entered as a digraph |digraph-arg|. 241 When 'encoding' is set to Unicode, composing 242 characters may be used, see |utf-8-char-arg|. 243 |:lmap| mappings apply to {char}. The CTRL-^ command 244 in Insert mode can be used to switch this on/off 245 |i_CTRL-^|. 246 247 *F* 248F{char} To the [count]'th occurrence of {char} to the left. 249 The cursor is placed on {char} |inclusive|. 250 {char} can be entered like with the |f| command. 251 252 *t* 253t{char} Till before [count]'th occurrence of {char} to the 254 right. The cursor is placed on the character left of 255 {char} |inclusive|. 256 {char} can be entered like with the |f| command. 257 258 *T* 259T{char} Till after [count]'th occurrence of {char} to the 260 left. The cursor is placed on the character right of 261 {char} |inclusive|. 262 {char} can be entered like with the |f| command. 263 264 *;* 265; Repeat latest f, t, F or T [count] times. 266 267 *,* 268, Repeat latest f, t, F or T in opposite direction 269 [count] times. 270 271These commands move the cursor to the specified column in the current line. 272They stop at the first column and at the end of the line, except "$", which 273may move to one of the next lines. See 'whichwrap' option to make some of the 274commands move across line boundaries. 275 276============================================================================== 2773. Up-down motions *up-down-motions* 278 279k or *k* 280<Up> or *<Up>* *CTRL-P* 281CTRL-P [count] lines upward |linewise|. 282 283j or *j* 284<Down> or *<Down>* 285CTRL-J or *CTRL-J* 286<NL> or *<NL>* *CTRL-N* 287CTRL-N [count] lines downward |linewise|. 288 289gk or *gk* *g<Up>* 290g<Up> [count] display lines upward. |exclusive| motion. 291 Differs from 'k' when lines wrap, and when used with 292 an operator, because it's not linewise. {not in Vi} 293 294gj or *gj* *g<Down>* 295g<Down> [count] display lines downward. |exclusive| motion. 296 Differs from 'j' when lines wrap, and when used with 297 an operator, because it's not linewise. {not in Vi} 298 299 *-* 300- <minus> [count] lines upward, on the first non-blank 301 character |linewise|. 302 303+ or *+* 304CTRL-M or *CTRL-M* *<CR>* 305<CR> [count] lines downward, on the first non-blank 306 character |linewise|. 307 308 *_* 309_ <underscore> [count] - 1 lines downward, on the first non-blank 310 character |linewise|. 311 312 *G* 313G Goto line [count], default last line, on the first 314 non-blank character |linewise|. If 'startofline' not 315 set, keep the same column. 316 317 *<C-End>* 318<C-End> Goto line [count], default last line, on the last 319 character |inclusive|. {not in Vi} 320 321<C-Home> or *gg* *<C-Home>* 322gg Goto line [count], default first line, on the first 323 non-blank character |linewise|. If 'startofline' not 324 set, keep the same column. 325 326:[range] Set the cursor on the specified line number. If 327 there are several numbers, the last one is used. 328 329 *N%* 330{count}% Go to {count} percentage in the file, on the first 331 non-blank in the line |linewise|. To compute the new 332 line number this formula is used: 333 ({count} * number-of-lines + 99) / 100 334 See also 'startofline' option. {not in Vi} 335 336:[range]go[to] [count] *:go* *:goto* *go* 337[count]go Go to {count} byte in the buffer. Default [count] is 338 one, start of the file. When giving [range], the 339 last number in it used as the byte count. End-of-line 340 characters are counted depending on the current 341 'fileformat' setting. 342 {not in Vi} 343 {not available when compiled without the 344 |+byte_offset| feature} 345 346These commands move to the specified line. They stop when reaching the first 347or the last line. The first two commands put the cursor in the same column 348(if possible) as it was after the last command that changed the column, 349except after the "$" command, then the cursor will be put on the last 350character of the line. 351 352============================================================================== 3534. Word motions *word-motions* 354 355<S-Right> or *<S-Right>* *w* 356w [count] words forward. |exclusive| motion. 357 358<C-Right> or *<C-Right>* *W* 359W [count] WORDS forward. |exclusive| motion. 360 361 *e* 362e Forward to the end of word [count] |inclusive|. 363 364 *E* 365E Forward to the end of WORD [count] |inclusive|. 366 367<S-Left> or *<S-Left>* *b* 368b [count] words backward. |exclusive| motion. 369 370<C-Left> or *<C-Left>* *B* 371B [count] WORDS backward. |exclusive| motion. 372 373 *ge* 374ge Backward to the end of word [count] |inclusive|. 375 376 *gE* 377gE Backward to the end of WORD [count] |inclusive|. 378 379These commands move over words or WORDS. 380 *word* 381A word consists of a sequence of letters, digits and underscores, or a 382sequence of other non-blank characters, separated with white space (spaces, 383tabs, <EOL>). This can be changed with the 'iskeyword' option. 384 *WORD* 385A WORD consists of a sequence of non-blank characters, separated with white 386space. An empty line is also considered to be a word and a WORD. 387 388A sequence of folded lines is counted for one word of a single character. 389"w" and "W", "e" and "E" move to the start/end of the first word or WORD after 390a range of folded lines. "b" and "B" move to the start of the first word or 391WORD before the fold. 392 393Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is 394on a non-blank. This is because "cw" is interpreted as change-word, and a 395word does not include the following white space. {Vi: "cw" when on a blank 396followed by other blanks changes only the first blank; this is probably a 397bug, because "dw" deletes all the blanks} 398 399Another special case: When using the "w" motion in combination with an 400operator and the last word moved over is at the end of a line, the end of 401that word becomes the end of the operated text, not the first word in the 402next line. 403 404The original Vi implementation of "e" is buggy. For example, the "e" command 405will stop on the first character of a line if the previous line was empty. 406But when you use "2e" this does not happen. In Vim "ee" and "2e" are the 407same, which is more logical. However, this causes a small incompatibility 408between Vi and Vim. 409 410============================================================================== 4115. Text object motions *object-motions* 412 413 *(* 414( [count] sentences backward. |exclusive| motion. 415 416 *)* 417) [count] sentences forward. |exclusive| motion. 418 419 *{* 420{ [count] paragraphs backward. |exclusive| motion. 421 422 *}* 423} [count] paragraphs forward. |exclusive| motion. 424 425 *]]* 426]] [count] sections forward or to the next '{' in the 427 first column. When used after an operator, then the 428 '}' in the first column. |linewise| 429 430 *][* 431][ [count] sections forward or to the next '}' in the 432 first column. |linewise| 433 434 *[[* 435[[ [count] sections backward or to the previous '{' in 436 the first column. |linewise| 437 438 *[]* 439[] [count] sections backward or to the previous '}' in 440 the first column. |linewise| 441 442These commands move over three kinds of text objects. 443 444 *sentence* 445A sentence is defined as ending at a '.', '!' or '?' followed by either the 446end of a line, or by a space or tab. Any number of closing ')', ']', '"' 447and ''' characters may appear after the '.', '!' or '?' before the spaces, 448tabs or end of line. A paragraph and section boundary is also a sentence 449boundary. 450If the 'J' flag is present in 'cpoptions', at least two spaces have to 451follow the punctuation mark; <Tab>s are not recognized as white space. 452The definition of a sentence cannot be changed. 453 454 *paragraph* 455A paragraph begins after each empty line, and also at each of a set of 456paragraph macros, specified by the pairs of characters in the 'paragraphs' 457option. The default is "IPLPPPQPP LIpplpipbp", which corresponds to the 458macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in the 459first column). A section boundary is also a paragraph boundary. Note that 460this does not include a '{' or '}' in the first column. Also note that a 461blank line (only containing white space) is NOT a paragraph boundary. 462 463 *section* 464A section begins after a form-feed (<C-L>) in the first column and at each of 465a set of section macros, specified by the pairs of characters in the 466'sections' option. The default is "SHNHH HUnhsh", which defines a section to 467start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh". 468 469The "]" and "[" commands stop at the '{' or '}' in the first column. This is 470useful to find the start or end of a function in a C program. Note that the 471first character of the command determines the search direction and the 472second character the type of brace found. 473 474If your '{' or '}' are not in the first column, and you would like to use "[[" 475and "]]" anyway, try these mappings: > 476 :map [[ ?{<CR>w99[{ 477 :map ][ /}<CR>b99]} 478 :map ]] j0[[%/{<CR> 479 :map [] k$][%?}<CR> 480[type these literally, see |<>|] 481 482============================================================================== 4836. Text object selection *object-select* *text-objects* 484 *v_a* *v_i* 485 486This is a series of commands that can only be used while in Visual mode or 487after an operator. The commands that start with "a" select "a"n object 488including white space, the commands starting with "i" select an "inner" object 489without white space, or just the white space. Thus the "inner" commands 490always select less text than the "a" commands. 491 492These commands are {not in Vi}. 493These commands are not available when the |+textobjects| feature has been 494disabled at compile time. 495 *v_aw* *aw* 496aw "a word", select [count] words (see |word|). 497 Leading or trailing white space is included, but not 498 counted. 499 When used in Visual linewise mode "aw" switches to 500 Visual characterwise mode. 501 502 *v_iw* *iw* 503iw "inner word", select [count] words (see |word|). 504 White space between words is counted too. 505 When used in Visual linewise mode "iw" switches to 506 Visual characterwise mode. 507 508 *v_aW* *aW* 509aW "a WORD", select [count] WORDs (see |WORD|). 510 Leading or trailing white space is included, but not 511 counted. 512 When used in Visual linewise mode "aW" switches to 513 Visual characterwise mode. 514 515 *v_iW* *iW* 516iW "inner WORD", select [count] WORDs (see |WORD|). 517 White space between words is counted too. 518 When used in Visual linewise mode "iW" switches to 519 Visual characterwise mode. 520 521 *v_as* *as* 522as "a sentence", select [count] sentences (see 523 |sentence|). 524 When used in Visual mode it is made characterwise. 525 526 *v_is* *is* 527is "inner sentence", select [count] sentences (see 528 |sentence|). 529 When used in Visual mode it is made characterwise. 530 531 *v_ap* *ap* 532ap "a paragraph", select [count] paragraphs (see 533 |paragraph|). 534 Exception: a blank line (only containing white space) 535 is also a paragraph boundary. 536 When used in Visual mode it is made linewise. 537 538 *v_ip* *ip* 539ip "inner paragraph", select [count] paragraphs (see 540 |paragraph|). 541 Exception: a blank line (only containing white space) 542 is also a paragraph boundary. 543 When used in Visual mode it is made linewise. 544 545a] *v_a]* *v_a[* *a]* *a[* 546a[ "a [] block", select [count] '[' ']' blocks. This 547 goes backwards to the [count] unclosed '[', and finds 548 the matching ']'. The enclosed text is selected, 549 including the '[' and ']'. 550 When used in Visual mode it is made characterwise. 551 552i] *v_i]* *v_i[* *i]* *i[* 553i[ "inner [] block", select [count] '[' ']' blocks. This 554 goes backwards to the [count] unclosed '[', and finds 555 the matching ']'. The enclosed text is selected, 556 excluding the '[' and ']'. 557 When used in Visual mode it is made characterwise. 558 559a) *v_a)* *a)* *a(* 560a( *v_ab* *v_a(* *ab* 561ab "a block", select [count] blocks, from "[count] [(" to 562 the matching ')', including the '(' and ')' (see 563 |[(|). Does not include white space outside of the 564 parenthesis. 565 When used in Visual mode it is made characterwise. 566 567i) *v_i)* *i)* *i(* 568i( *v_ib* *v_i(* *ib* 569ib "inner block", select [count] blocks, from "[count] [(" 570 to the matching ')', excluding the '(' and ')' (see 571 |[(|). 572 When used in Visual mode it is made characterwise. 573 574a> *v_a>* *v_a<* *a>* *a<* 575a< "a <> block", select [count] <> blocks, from the 576 [count]'th unmatched '<' backwards to the matching 577 '>', including the '<' and '>'. 578 When used in Visual mode it is made characterwise. 579 580i> *v_i>* *v_i<* *i>* *i<* 581i< "inner <> block", select [count] <> blocks, from 582 the [count]'th unmatched '<' backwards to the matching 583 '>', excluding the '<' and '>'. 584 When used in Visual mode it is made characterwise. 585 586a} *v_a}* *a}* *a{* 587a{ *v_aB* *v_a{* *aB* 588aB "a Block", select [count] Blocks, from "[count] [{" to 589 the matching '}', including the '{' and '}' (see 590 |[{|). 591 When used in Visual mode it is made characterwise. 592 593i} *v_i}* *i}* *i{* 594i{ *v_iB* *v_i{* *iB* 595iB "inner Block", select [count] Blocks, from "[count] [{" 596 to the matching '}', excluding the '{' and '}' (see 597 |[{|). 598 When used in Visual mode it is made characterwise. 599 600When used after an operator: 601For non-block objects: 602 For the "a" commands: The operator applies to the object and the white 603 space after the object. If there is no white space after the object 604 or when the cursor was in the white space before the object, the white 605 space before the object is included. 606 For the "inner" commands: If the cursor was on the object, the 607 operator applies to the object. If the cursor was on white space, the 608 operator applies to the white space. 609For a block object: 610 The operator applies to the block where the cursor is in, or the block 611 on which the cursor is on one of the braces. For the "inner" commands 612 the surrounding braces are excluded. For the "a" commands, the braces 613 are included. 614 615When used in Visual mode: 616When start and end of the Visual area are the same (just after typing "v"): 617 One object is selected, the same as for using an operator. 618When start and end of the Visual area are not the same: 619 For non-block objects the area is extended by one object or the white 620 space up to the next object, or both for the "a" objects. The 621 direction in which this happens depends on which side of the Visual 622 area the cursor is. For the block objects the block is extended one 623 level outwards. 624 625For illustration, here is a list of delete commands, grouped from small to big 626objects. Note that for a single character and a whole line the existing vi 627movement commands are used. 628 "dl" delete character (alias: "x") |dl| 629 "diw" delete inner word *diw* 630 "daw" delete a word *daw* 631 "diW" delete inner WORD (see |WORD|) *diW* 632 "daW" delete a WORD (see |WORD|) *daW* 633 "dd" delete one line |dd| 634 "dis" delete inner sentence *dis* 635 "das" delete a sentence *das* 636 "dib" delete inner '(' ')' block *dib* 637 "dab" delete a '(' ')' block *dab* 638 "dip" delete inner paragraph *dip* 639 "dap" delete a paragraph *dap* 640 "diB" delete inner '{' '}' block *diB* 641 "daB" delete a '{' '}' block *daB* 642 643Note the difference between using a movement command and an object. The 644movement command operates from here (cursor position) to where the movement 645takes us. When using an object the whole object is operated upon, no matter 646where on the object the cursor is. For example, compare "dw" and "daw": "dw" 647deletes from the cursor position to the start of the next word, "daw" deletes 648the word under the cursor and the space after or before it. 649 650============================================================================== 6517. Marks *mark-motions* *E20* *E78* 652 653Jumping to a mark can be done in two ways: 6541. With ` (backtick): The cursor is positioned at the specified location 655 and the motion is |exclusive|. 6562. With ' (single quote): The cursor is positioned on the first non-blank 657 character in the line of the specified location and 658 the motion is linewise. 659 660 *m* *mark* *Mark* 661m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move 662 the cursor, this is not a motion command). 663 664 *m'* *m`* 665m' or m` Set the previous context mark. This can be jumped to 666 with the "''" or "``" command (does not move the 667 cursor, this is not a motion command). 668 669 *m[* *m]* 670m[ or m] Set the |'[| or |']| mark. Useful when an operator is 671 to be simulated by multiple commands. (does not move 672 the cursor, this is not a motion command). 673 674 *:ma* *:mark* *E191* 675:[range]ma[rk] {a-zA-Z'} 676 Set mark {a-zA-Z'} at last line number in [range], 677 column 0. Default is cursor line. 678 679 *:k* 680:[range]k{a-zA-Z'} Same as :mark, but the space before the mark name can 681 be omitted. 682 683 *'* *'a* *`* *`a* 684'{a-z} `{a-z} Jump to the mark {a-z}. 685 686 *'A* *'0* *`A* *`0* 687'{A-Z0-9} `{A-Z0-9} To the mark {A-Z0-9} in the correct file (not a motion 688 command when in another file). {not in Vi} 689 690 *g'* *g'a* *g`* *g`a* 691g'{mark} g`{mark} 692 Jump to the {mark}, but don't change the jumplist when 693 jumping within the current buffer. Example: > 694 g`" 695< jumps to the last known position in a file. See 696 $VIMRUNTIME/vimrc_example.vim. 697 Also see |:keepjumps|. 698 {not in Vi} 699 700 *:marks* 701:marks List all the current marks (not a motion command). 702 The |'(|, |')|, |'{| and |'}| marks are not listed. 703 {not in Vi} 704 *E283* 705:marks {arg} List the marks that are mentioned in {arg} (not a 706 motion command). For example: > 707 :marks aB 708< to list marks 'a' and 'B'. {not in Vi} 709 710A mark is not visible in any way. It is just a position in the file that is 711remembered. Do not confuse marks with named registers, they are totally 712unrelated. 713 714'a - 'z lowercase marks, valid within one file 715'A - 'Z uppercase marks, also called file marks, valid between files 716'0 - '9 numbered marks, set from .viminfo file 717 718Lowercase marks 'a to 'z are remembered as long as the file remains in the 719buffer list. If you remove the file from the buffer list, all its marks are 720lost. If you delete a line that contains a mark, that mark is erased. 721 722To delete a mark: Create a new line, position the mark there, delete the line. 723E.g.: "o<Esc>mxdd". This does change the file though. Using "u" won't work, 724it also restores marks. 725 726Lowercase marks can be used in combination with operators. For example: "d't" 727deletes the lines from the cursor position to mark 't'. Hint: Use mark 't' for 728Top, 'b' for Bottom, etc.. Lowercase marks are restored when using undo and 729redo. 730 731Uppercase marks 'A to 'Z include the file name. {Vi: no uppercase marks} You 732can use them to jump from file to file. You can only use an uppercase mark 733with an operator if the mark is in the current file. The line number of the 734mark remains correct, even if you insert/delete lines or edit another file for 735a moment. When the 'viminfo' option is not empty, uppercase marks are kept in 736the .viminfo file. See |viminfo-file-marks|. 737 738Numbered marks '0 to '9 are quite different. They can not be set directly. 739They are only present when using a viminfo file |viminfo-file|. Basically '0 740is the location of the cursor when you last exited Vim, '1 the last but one 741time, etc. Use the "r" flag in 'viminfo' to specify files for which no 742Numbered mark should be stored. See |viminfo-file-marks|. 743 744 745 *'[* *`[* 746'[ `[ To the first character of the previously changed 747 or yanked text. {not in Vi} 748 749 *']* *`]* 750'] `] To the last character of the previously changed or 751 yanked text. {not in Vi} 752 753After executing an operator the Cursor is put at the beginning of the text 754that was operated upon. After a put command ("p" or "P") the cursor is 755sometimes placed at the first inserted line and sometimes on the last inserted 756character. The four commands above put the cursor at either end. Example: 757After yanking 10 lines you want to go to the last one of them: "10Y']". After 758inserting several lines with the "p" command you want to jump to the lowest 759inserted line: "p']". This also works for text that has been inserted. 760 761Note: After deleting text, the start and end positions are the same, except 762when using blockwise Visual mode. These commands do not work when no change 763was made yet in the current file. 764 765 *'<* *`<* 766'< `< To the first character of the last selected Visual 767 area in the current buffer. {not in Vi}. 768 769 *'>* *`>* 770'> `> To the last character of the last selected Visual 771 area in the current buffer. {not in Vi}. 772 773 *''* *``* 774'' `` To the position before latest jump, or where the last 775 "m'" or "m`" command was given. Not set when the 776 |:keepjumps| command modifier was used. 777 Also see |restore-position|. 778 779 *'quote* *`quote* 780'" `" To the cursor position when last exiting the current 781 buffer. Defaults to the first character of the first 782 line. See |last-position-jump| for how to use this 783 for each opened file. 784 Only one position is remembered per buffer, not one 785 for each window. As long as the buffer is visible in 786 a window the position won't be changed. 787 {not in Vi}. 788 789 *'^* *`^* 790'^ `^ To the position where the cursor was the last time 791 when Insert mode was stopped This is used by the |gi| 792 command. Not set when the |:keepjumps| command 793 modifier was used. {not in Vi} 794 795 *'.* *`.* 796'. `. To the position where the last change was made. The 797 position is at or near where the change started. 798 Sometimes a command is executed as several changes, 799 then the position can be near the end of what the 800 command changed. For example when inserting a word, 801 the position will be on the last character. 802 {not in Vi} 803 804 *'(* *`(* 805'( `( To the start of the current sentence, like the |(| 806 command. {not in Vi} 807 808 *')* *`)* 809') `) To the end of the current sentence, like the |)| 810 command. {not in Vi} 811 812 *'{* *`{* 813'{ `{ To the start of the current paragraph, like the |{| 814 command. {not in Vi} 815 816 *'}* *`}* 817'} `} To the end of the current paragraph, like the |}| 818 command. {not in Vi} 819 820These commands are not marks themselves, but jump to a mark: 821 822 *]'* 823]' [count] times to next line with a lowercase mark below 824 the cursor, on the first non-blank character in the 825 line. {not in Vi} 826 827 *]`* 828]` [count] times to lowercase mark after the cursor. {not 829 in Vi} 830 831 *['* 832[' [count] times to previous line with a lowercase mark 833 before the cursor, on the first non-blank character in 834 the line. {not in Vi} 835 836 *[`* 837[` [count] times to lowercase mark before the cursor. 838 {not in Vi} 839 840 841:loc[kmarks] {command} *:loc* *:lockmarks* 842 Execute {command} without adjusting marks. This is 843 useful when changing text in a way that the line count 844 will be the same when the change has completed. 845 WARNING: When the line count does change, marks below 846 the change will keep their line number, thus move to 847 another text line. 848 These items will not be adjusted for deleted/inserted 849 lines: 850 - lower case letter marks 'a - 'z 851 - upper case letter marks 'A - 'Z 852 - numbered marks '0 - '9 853 - last insert position '^ 854 - last change position '. 855 - the Visual area '< and '> 856 - line numbers in placed signs 857 - line numbers in quickfix positions 858 - positions in the |jumplist| 859 - positions in the |tagstack| 860 These items will still be adjusted: 861 - previous context mark '' 862 - the cursor position 863 - the view of a window on a buffer 864 - folds 865 - diffs 866 867:kee[pmarks] {command} *:kee* *:keepmarks* 868 Currently only has effect for the filter command 869 |:range!|: 870 - When the number of lines after filtering is equal to 871 or larger than before, all marks are kept at the 872 same line number. 873 - When the number of lines decreases, the marks in the 874 lines that disappeared are deleted. 875 In any case the marks below the filtered text have 876 their line numbers adjusted, thus stick to the text, 877 as usual. 878 When the 'R' flag is missing from 'cpoptions' this has 879 the same effect as using ":keepmarks". 880 881 *:keepj* *:keepjumps* 882:keepj[umps] {command} 883 Moving around in {command} does not change the |''|, 884 |'.| and |'^| marks, the |jumplist| or the 885 |changelist|. 886 Useful when making a change or inserting text 887 automatically and the user doesn't want to go to this 888 position. E.g., when updating a "Last change" 889 timestamp in the first line: > 890 891 :let lnum = getline(".") 892 :keepjumps normal gg 893 :call SetLastChange() 894 :keepjumps exe "normal " . lnum . "G" 895< 896 Note that ":keepjumps" must be used for every command. 897 When invoking a function the commands in that function 898 can still change the jumplist. 899 900============================================================================== 9018. Jumps *jump-motions* 902 903A "jump" is one of the following commands: "'", "`", "G", "/", "?", "n", 904"N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", "H" and 905the commands that start editing a new file. If you make the cursor "jump" 906with one of these commands, the position of the cursor before the jump is 907remembered. You can return to that position with the "''" and "``" command, 908unless the line containing that position was changed or deleted. 909 910 *CTRL-O* 911CTRL-O Go to [count] Older cursor position in jump list 912 (not a motion command). {not in Vi} 913 {not available without the +jumplist feature} 914 915<Tab> or *CTRL-I* *<Tab>* 916CTRL-I Go to [count] newer cursor position in jump list 917 (not a motion command). 918 In a |quickfix-window| it takes you to the position of 919 the error under the cursor. 920 {not in Vi} 921 {not available without the +jumplist feature} 922 923 *:ju* *:jumps* 924:ju[mps] Print the jump list (not a motion command). {not in 925 Vi} {not available without the +jumplist feature} 926 927 *jumplist* 928Jumps are remembered in a jump list. With the CTRL-O and CTRL-I command you 929can go to cursor positions before older jumps, and back again. Thus you can 930move up and down the list. There is a separate jump list for each window. 931The maximum number of entries is fixed at 100. 932{not available without the +jumplist feature} 933 934For example, after three jump commands you have this jump list: 935 936 jump line col file/line ~ 937 3 1 0 some text ~ 938 2 70 0 another line ~ 939 1 1154 23 end. ~ 940 > ~ 941 942The "file/line" column shows the file name, or the text at the jump if it is 943in the current file (an indent is removed and a long line is truncated to fit 944in the window). 945 946You are currently in line 1167. If you then use the CTRL-O command, the 947cursor is put in line 1154. This results in: 948 949 jump line col file/line ~ 950 2 1 0 some text ~ 951 1 70 0 another line ~ 952 > 0 1154 23 end. ~ 953 1 1167 0 foo bar ~ 954 955The pointer will be set at the last used jump position. The next CTRL-O 956command will use the entry above it, the next CTRL-I command will use the 957entry below it. If the pointer is below the last entry, this indicates that 958you did not use a CTRL-I or CTRL-O before. In this case the CTRL-O command 959will cause the cursor position to be added to the jump list, so you can get 960back to the position before the CTRL-O. In this case this is line 1167. 961 962With more CTRL-O commands you will go to lines 70 and 1. If you use CTRL-I 963you can go back to 1154 and 1167 again. Note that the number in the "jump" 964column indicates the count for the CTRL-O or CTRL-I command that takes you to 965this position. 966 967If you use a jump command, the current line number is inserted at the end of 968the jump list. If the same line was already in the jump list, it is removed. 969The result is that when repeating CTRL-O you will get back to old positions 970only once. 971 972When the |:keepjumps| command modifier is used, jumps are not stored in the 973jumplist. 974 975After the CTRL-O command that got you into line 1154 you could give another 976jump command (e.g., "G"). The jump list would then become: 977 978 jump line col file/line ~ 979 4 1 0 some text ~ 980 3 70 0 another line ~ 981 2 1167 0 foo bar ~ 982 1 1154 23 end. ~ 983 > ~ 984 985The line numbers will be adjusted for deleted and inserted lines. This fails 986if you stop editing a file without writing, like with ":n!". 987 988When you split a window, the jumplist will be copied to the new window. 989 990If you have included the ' item in the 'viminfo' option the jumplist will be 991stored in the viminfo file and restored when starting Vim. 992 993 994CHANGE LIST JUMPS *changelist* *change-list-jumps* *E664* 995 996When making a change the cursor position is remembered. One position is 997remembered for every change that can be undone, unless it is close to a 998previous change. Two commands can be used to jump to positions of changes, 999also those that have been undone: 1000 1001 *g;* *E662* 1002g; Go to [count] older position in change list. 1003 If [count] is larger than the number of older change 1004 positions go to the oldest change. 1005 If there is no older change an error message is given. 1006 (not a motion command) 1007 {not in Vi} 1008 {not available without the +jumplist feature} 1009 1010 *g,* *E663* 1011g, Go to [count] newer cursor position in change list. 1012 Just like "g;| but in the opposite direction. 1013 (not a motion command) 1014 {not in Vi} 1015 {not available without the +jumplist feature} 1016 1017When using a count you jump as far back or forward as possible. Thus you can 1018use "999g;" to go to the first change for which the position is still 1019remembered. The number of entries in the change list is fixed and is the same 1020as for the |jumplist|. 1021 1022When two undo-able changes are in the same line and at a column position less 1023than 'textwidth' apart only the last one is remembered. This avoids that a 1024sequence of small changes in a line, for example "xxxxx", adds many positions 1025to the change list. When 'textwidth' is zero 'wrapmargin' is used. When that 1026also isn't set a fixed number of 79 is used. Detail: For the computations 1027bytes are used, not characters, to avoid a speed penalty (this only matters 1028for multi-byte encodings). 1029 1030Note that when text has been inserted or deleted the cursor position might be 1031a bit different from the position of the change. Especially when lines have 1032been deleted. 1033 1034When the |:keepjumps| command modifier is used the position of a change is not 1035remembered. 1036 1037 *:changes* 1038:changes Print the change list. A ">" character indicates the 1039 current position. Just after a change it is below the 1040 newest entry, indicating that "g;" takes you to the 1041 newest entry position. The first column indicates the 1042 count needed to take you to this position. Example: 1043 1044 change line col text ~ 1045 3 9 8 bla bla bla 1046 2 11 57 foo is a bar 1047 1 14 54 the latest changed line 1048 > 1049 1050 The "3g;" command takes you to line 9. Then the 1051 output of ":changes is: 1052 1053 change line col text ~ 1054 > 0 9 8 bla bla bla 1055 1 11 57 foo is a bar 1056 2 14 54 the latest changed line 1057 1058 Now you can use "g," to go to line 11 and "2g," to go 1059 to line 14. 1060 1061============================================================================== 10629. Various motions *various-motions* 1063 1064 *%* 1065% Find the next item in this line after or under the 1066 cursor and jump to its match. |inclusive| motion. 1067 Items can be: 1068 ([{}]) parenthesis or (curly/square) brackets 1069 (this can be changed with the 1070 'matchpairs' option) 1071 /* */ start or end of C-style comment 1072 #if, #ifdef, #else, #elif, #endif 1073 C preprocessor conditionals (when the 1074 cursor is on the # or no ([{ 1075 following) 1076 For other items the matchit plugin can be used, see 1077 |matchit-install|. 1078 1079 When 'cpoptions' contains "M" |cpo-M| backslashes 1080 before parens and braces are ignored. Without "M" the 1081 number of backslashes matters: an even number doesn't 1082 match with an odd number. Thus in "( \) )" and "\( ( 1083 \)" the first and last parenthesis match. 1084 When the '%' character is not present in 'cpoptions' 1085 |cpo-%|, parens and braces inside double quotes are 1086 ignored, unless the number of parens/braces in a line 1087 is uneven and this line and the previous one does not 1088 end in a backslash. '(', '{', '[', ']', '}' and ')' 1089 are also ignored (parens and braces inside single 1090 quotes). Note that this works fine for C, but not for 1091 Perl, where single quotes are used for strings. 1092 No count is allowed ({count}% jumps to a line {count} 1093 percentage down the file |N%|). Using '%' on 1094 #if/#else/#endif makes the movement linewise. 1095 1096 *[(* 1097[( go to [count] previous unmatched '('. 1098 |exclusive| motion. {not in Vi} 1099 1100 *[{* 1101[{ go to [count] previous unmatched '{'. 1102 |exclusive| motion. {not in Vi} 1103 1104 *])* 1105]) go to [count] next unmatched ')'. 1106 |exclusive| motion. {not in Vi} 1107 1108 *]}* 1109]} go to [count] next unmatched '}'. 1110 |exclusive| motion. {not in Vi} 1111 1112The above four commands can be used to go to the start or end of the current 1113code block. It is like doing "%" on the '(', ')', '{' or '}' at the other 1114end of the code block, but you can do this from anywhere in the code block. 1115Very useful for C programs. Example: When standing on "case x:", "[{" will 1116bring you back to the switch statement. 1117 1118 *]m* 1119]m Go to [count] next start of a method (for Java or 1120 similar structured language). When not before the 1121 start of a method, jump to the start or end of the 1122 class. When no '{' is found after the cursor, this is 1123 an error. |exclusive| motion. {not in Vi} 1124 *]M* 1125]M Go to [count] next end of a method (for Java or 1126 similar structured language). When not before the end 1127 of a method, jump to the start or end of the class. 1128 When no '}' is found after the cursor, this is an 1129 error. |exclusive| motion. {not in Vi} 1130 *[m* 1131[m Go to [count] previous start of a method (for Java or 1132 similar structured language). When not after the 1133 start of a method, jump to the start or end of the 1134 class. When no '{' is found before the cursor this is 1135 an error. |exclusive| motion. {not in Vi} 1136 *[M* 1137[M Go to [count] previous end of a method (for Java or 1138 similar structured language). When not after the 1139 end of a method, jump to the start or end of the 1140 class. When no '}' is found before the cursor this is 1141 an error. |exclusive| motion. {not in Vi} 1142 1143The above two commands assume that the file contains a class with methods. 1144The class definition is surrounded in '{' and '}'. Each method in the class 1145is also surrounded with '{' and '}'. This applies to the Java language. The 1146file looks like this: > 1147 1148 // comment 1149 class foo { 1150 int method_one() { 1151 body_one(); 1152 } 1153 int method_two() { 1154 body_two(); 1155 } 1156 } 1157Starting with the cursor on "body_two()", using "[m" will jump to the '{' at 1158the start of "method_two()" (obviously this is much more useful when the 1159method is long!). Using "2[m" will jump to the start of "method_one()". 1160Using "3[m" will jump to the start of the class. 1161 1162 *[#* 1163[# go to [count] previous unmatched "#if" or "#else". 1164 |exclusive| motion. {not in Vi} 1165 1166 *]#* 1167]# go to [count] next unmatched "#else" or "#endif". 1168 |exclusive| motion. {not in Vi} 1169 1170These two commands work in C programs that contain #if/#else/#endif 1171constructs. It brings you to the start or end of the #if/#else/#endif where 1172the current line is included. You can then use "%" to go to the matching line. 1173 1174 *[star* *[/* 1175[* or [/ go to [count] previous start of a C comment "/*". 1176 |exclusive| motion. {not in Vi} 1177 1178 *]star* *]/* 1179]* or ]/ go to [count] next end of a C comment "*/". 1180 |exclusive| motion. {not in Vi} 1181 1182 1183 *H* 1184H To line [count] from top (Home) of window (default: 1185 first line on the window) on the first non-blank 1186 character |linewise|. See also 'startofline' option. 1187 Cursor is adjusted for 'scrolloff' option. 1188 1189 *M* 1190M To Middle line of window, on the first non-blank 1191 character |linewise|. See also 'startofline' option. 1192 1193 *L* 1194L To line [count] from bottom of window (default: Last 1195 line on the window) on the first non-blank character 1196 |linewise|. See also 'startofline' option. 1197 Cursor is adjusted for 'scrolloff' option. 1198 1199<LeftMouse> Moves to the position on the screen where the mouse 1200 click is |inclusive|. See also |<LeftMouse>|. If the 1201 position is in a status line, that window is made the 1202 active window and the cursor is not moved. {not in Vi} 1203 1204 vim:tw=78:ts=8:ft=help:norl: 1205