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