Mercurial > vim
comparison runtime/doc/motion.txt @ 7:3fc0f57ecb91 v7.0001
updated for version 7.0001
author | vimboss |
---|---|
date | Sun, 13 Jun 2004 20:20:40 +0000 |
parents | |
children | 4102fb4ea781 |
comparison
equal
deleted
inserted
replaced
6:c2daee826b8f | 7:3fc0f57ecb91 |
---|---|
1 *motion.txt* For Vim version 7.0aa. Last change: 2004 May 13 | |
2 | |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Cursor motions *cursor-motions* *navigation* | |
8 | |
9 These commands move the cursor position. If the new position is off of the | |
10 screen, the screen is scrolled to show the cursor (see also 'scrolljump' and | |
11 'scrolloff' options). | |
12 | |
13 1. Motions and operators |operator| | |
14 2. Left-right motions |left-right-motions| | |
15 3. Up-down motions |up-down-motions| | |
16 4. Word motions |word-motions| | |
17 5. Text object motions |object-motions| | |
18 6. Text object selection |object-select| | |
19 7. Marks |mark-motions| | |
20 8. Jumps |jump-motions| | |
21 9. Various motions |various-motions| | |
22 | |
23 General remarks: | |
24 | |
25 If 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, | |
27 the cursor position is continuously shown in the status line (which slows down | |
28 Vim a little). | |
29 | |
30 Experienced users prefer the hjkl keys because they are always right under | |
31 their fingers. Beginners often prefer the arrow keys, because they do not | |
32 know what the hjkl keys do. The mnemonic value of hjkl is clear from looking | |
33 at the keyboard. Think of j as an arrow pointing downwards. | |
34 | |
35 The 'virtualedit' option can be set to make it possible to move the cursor to | |
36 positions where there is no character or halfway a character. | |
37 | |
38 ============================================================================== | |
39 1. Motions and operators *operator* | |
40 | |
41 The motion commands can be used after an operator command, to have the command | |
42 operate on the text that was moved over. That is the text between the cursor | |
43 position before and after the motion. Operators are generally used to delete | |
44 or 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 | |
61 If the motion includes a count and the operator also had a count before it, | |
62 the two counts are multiplied. For example: "2d3w" deletes six words. | |
63 | |
64 After applying the operator the cursor is mostly left at the start of the text | |
65 that was operated upon. For example, "yfe" doesn't move the cursor, but "yFe" | |
66 moves the cursor leftwards to the "e" where the yank started. | |
67 | |
68 *linewise* *characterwise* | |
69 The operator either affects whole lines, or the characters between the start | |
70 and end position. Generally, motions that move between lines affect lines | |
71 (are linewise), and motions that move within a line affect characters (are | |
72 characterwise). However, there are some exceptions. | |
73 | |
74 *exclusive* *inclusive* | |
75 A character motion is either inclusive or exclusive. When inclusive, the start | |
76 and end position of the motion are included in the operation. When exclusive, | |
77 the last character towards the end of the buffer is not included. Linewise | |
78 motions always include the start and end position. | |
79 | |
80 Which motions are linewise, inclusive or exclusive is mentioned below. There | |
81 are however, two general exceptions: | |
82 1. 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. | |
86 2. 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 | |
93 Note that when the operator is pending (the operator command is typed, but the | |
94 motion isn't yet), a special set of mappings can be used. See |:omap|. | |
95 | |
96 Instead of first giving the operator and then a motion you can use Visual | |
97 mode: mark the start of the text with "v", move the cursor to the end of the | |
98 text that is to be affected and then hit the operator. The text between the | |
99 start and the cursor position is highlighted, so you can see what text will | |
100 be operated upon. This allows much more freedom, but requires more key | |
101 strokes and has limited redo functionality. See the chapter on Visual mode | |
102 |Visual-mode|. | |
103 | |
104 You can use a ":" command for a motion. For example "d:call FindEnd()". | |
105 But this can't be redone with "." if the command is more than one line. | |
106 This can be repeated: > | |
107 d:call search("f")<CR> | |
108 This cannot be repeated: > | |
109 d:if 1<CR> | |
110 call search("f")<CR> | |
111 endif<CR> | |
112 | |
113 | |
114 FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE | |
115 | |
116 When a motion is not of the type you would like to use, you can force another | |
117 type by using "v", "V" or CTRL-V just after the operator. | |
118 Example: > | |
119 dj | |
120 deletes two lines > | |
121 dvj | |
122 deletes from the cursor position until the character below the cursor > | |
123 d<C-V>j | |
124 deletes the character under the cursor and the character below the cursor. > | |
125 | |
126 Be careful with forcing a linewise movement to be used characterwise or | |
127 blockwise, the column may not always be defined. | |
128 | |
129 *o_v* | |
130 v 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* | |
139 V 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* | |
144 CTRL-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 ============================================================================== | |
150 2. Left-right motions *left-right-motions* | |
151 | |
152 h or *h* | |
153 <Left> or *<Left>* | |
154 CTRL-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 | |
164 l or *l* | |
165 <Right> or *<Right>* *<Space>* | |
166 <Space> [count] characters to the right. |exclusive| motion. | |
167 | |
168 *0* | |
169 0 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_* | |
194 g_ To the last non-blank character of the line and | |
195 [count - 1] lines downward |inclusive|. {not in Vi} | |
196 | |
197 *g0* *g<Home>* | |
198 g0 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^* | |
207 g^ 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* | |
217 gm Like "g0", but half a screenwidth to the right (or as | |
218 much as possible). {not in Vi} | |
219 | |
220 *g$* *g<End>* | |
221 g$ 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* | |
238 f{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* | |
248 F{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* | |
253 t{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* | |
259 T{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 | |
271 These commands move the cursor to the specified column in the current line. | |
272 They stop at the first column and at the end of the line, except "$", which | |
273 may move to one of the next lines. See 'whichwrap' option to make some of the | |
274 commands move across line boundaries. | |
275 | |
276 ============================================================================== | |
277 3. Up-down motions *up-down-motions* | |
278 | |
279 k or *k* | |
280 <Up> or *<Up>* *CTRL-P* | |
281 CTRL-P [count] lines upward |linewise|. | |
282 | |
283 j or *j* | |
284 <Down> or *<Down>* | |
285 CTRL-J or *CTRL-J* | |
286 <NL> or *<NL>* *CTRL-N* | |
287 CTRL-N [count] lines downward |linewise|. | |
288 | |
289 gk or *gk* *g<Up>* | |
290 g<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 | |
294 gj or *gj* *g<Down>* | |
295 g<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 *+* | |
304 CTRL-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* | |
313 G 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>* | |
322 gg 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 | |
346 These commands move to the specified line. They stop when reaching the first | |
347 or 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, | |
349 except after the "$" command, then the cursor will be put on the last | |
350 character of the line. | |
351 | |
352 ============================================================================== | |
353 4. Word motions *word-motions* | |
354 | |
355 <S-Right> or *<S-Right>* *w* | |
356 w [count] words forward. |exclusive| motion. | |
357 | |
358 <C-Right> or *<C-Right>* *W* | |
359 W [count] WORDS forward. |exclusive| motion. | |
360 | |
361 *e* | |
362 e Forward to the end of word [count] |inclusive|. | |
363 | |
364 *E* | |
365 E Forward to the end of WORD [count] |inclusive|. | |
366 | |
367 <S-Left> or *<S-Left>* *b* | |
368 b [count] words backward. |exclusive| motion. | |
369 | |
370 <C-Left> or *<C-Left>* *B* | |
371 B [count] WORDS backward. |exclusive| motion. | |
372 | |
373 *ge* | |
374 ge Backward to the end of word [count] |inclusive|. | |
375 | |
376 *gE* | |
377 gE Backward to the end of WORD [count] |inclusive|. | |
378 | |
379 These commands move over words or WORDS. | |
380 *word* | |
381 A word consists of a sequence of letters, digits and underscores, or a | |
382 sequence of other non-blank characters, separated with white space (spaces, | |
383 tabs, <EOL>). This can be changed with the 'iskeyword' option. | |
384 *WORD* | |
385 A WORD consists of a sequence of non-blank characters, separated with white | |
386 space. An empty line is also considered to be a word and a WORD. | |
387 | |
388 A 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 | |
390 a range of folded lines. "b" and "B" move to the start of the first word or | |
391 WORD before the fold. | |
392 | |
393 Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is | |
394 on a non-blank. This is because "cw" is interpreted as change-word, and a | |
395 word does not include the following white space. {Vi: "cw" when on a blank | |
396 followed by other blanks changes only the first blank; this is probably a | |
397 bug, because "dw" deletes all the blanks} | |
398 | |
399 Another special case: When using the "w" motion in combination with an | |
400 operator and the last word moved over is at the end of a line, the end of | |
401 that word becomes the end of the operated text, not the first word in the | |
402 next line. | |
403 | |
404 The original Vi implementation of "e" is buggy. For example, the "e" command | |
405 will stop on the first character of a line if the previous line was empty. | |
406 But when you use "2e" this does not happen. In Vim "ee" and "2e" are the | |
407 same, which is more logical. However, this causes a small incompatibility | |
408 between Vi and Vim. | |
409 | |
410 ============================================================================== | |
411 5. 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 | |
442 These commands move over three kinds of text objects. | |
443 | |
444 *sentence* | |
445 A sentence is defined as ending at a '.', '!' or '?' followed by either the | |
446 end of a line, or by a space or tab. Any number of closing ')', ']', '"' | |
447 and ''' characters may appear after the '.', '!' or '?' before the spaces, | |
448 tabs or end of line. A paragraph and section boundary is also a sentence | |
449 boundary. | |
450 If the 'J' flag is present in 'cpoptions', at least two spaces have to | |
451 follow the punctuation mark; <Tab>s are not recognized as white space. | |
452 The definition of a sentence cannot be changed. | |
453 | |
454 *paragraph* | |
455 A paragraph begins after each empty line, and also at each of a set of | |
456 paragraph macros, specified by the pairs of characters in the 'paragraphs' | |
457 option. The default is "IPLPPPQPP LIpplpipbp", which corresponds to the | |
458 macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in the | |
459 first column). A section boundary is also a paragraph boundary. Note that | |
460 this does not include a '{' or '}' in the first column. Also note that a | |
461 blank line (only containing white space) is NOT a paragraph boundary. | |
462 | |
463 *section* | |
464 A section begins after a form-feed (<C-L>) in the first column and at each of | |
465 a 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 | |
467 start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh". | |
468 | |
469 The "]" and "[" commands stop at the '{' or '}' in the first column. This is | |
470 useful to find the start or end of a function in a C program. Note that the | |
471 first character of the command determines the search direction and the | |
472 second character the type of brace found. | |
473 | |
474 If your '{' or '}' are not in the first column, and you would like to use "[[" | |
475 and "]]" 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 ============================================================================== | |
483 6. Text object selection *object-select* *text-objects* | |
484 *v_a* *v_i* | |
485 | |
486 This is a series of commands that can only be used while in Visual mode or | |
487 after an operator. The commands that start with "a" select "a"n object | |
488 including white space, the commands starting with "i" select an "inner" object | |
489 without white space, or just the white space. Thus the "inner" commands | |
490 always select less text than the "a" commands. | |
491 | |
492 These commands are {not in Vi}. | |
493 These commands are not available when the |+textobjects| feature has been | |
494 disabled at compile time. | |
495 *v_aw* *aw* | |
496 aw "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* | |
503 iw "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* | |
509 aW "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* | |
516 iW "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* | |
522 as "a sentence", select [count] sentences (see | |
523 |sentence|). | |
524 When used in Visual mode it is made characterwise. | |
525 | |
526 *v_is* *is* | |
527 is "inner sentence", select [count] sentences (see | |
528 |sentence|). | |
529 When used in Visual mode it is made characterwise. | |
530 | |
531 *v_ap* *ap* | |
532 ap "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* | |
539 ip "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 | |
545 a] *v_a]* *v_a[* *a]* *a[* | |
546 a[ "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 | |
552 i] *v_i]* *v_i[* *i]* *i[* | |
553 i[ "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 | |
559 a) *v_a)* *a)* *a(* | |
560 a( *v_ab* *v_a(* *ab* | |
561 ab "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 | |
567 i) *v_i)* *i)* *i(* | |
568 i( *v_ib* *v_i(* *ib* | |
569 ib "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 | |
574 a> *v_a>* *v_a<* *a>* *a<* | |
575 a< "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 | |
580 i> *v_i>* *v_i<* *i>* *i<* | |
581 i< "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 | |
586 a} *v_a}* *a}* *a{* | |
587 a{ *v_aB* *v_a{* *aB* | |
588 aB "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 | |
593 i} *v_i}* *i}* *i{* | |
594 i{ *v_iB* *v_i{* *iB* | |
595 iB "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 | |
600 When used after an operator: | |
601 For 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. | |
609 For 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 | |
615 When used in Visual mode: | |
616 When 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. | |
618 When 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 | |
625 For illustration, here is a list of delete commands, grouped from small to big | |
626 objects. Note that for a single character and a whole line the existing vi | |
627 movement 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 | |
643 Note the difference between using a movement command and an object. The | |
644 movement command operates from here (cursor position) to where the movement | |
645 takes us. When using an object the whole object is operated upon, no matter | |
646 where on the object the cursor is. For example, compare "dw" and "daw": "dw" | |
647 deletes from the cursor position to the start of the next word, "daw" deletes | |
648 the word under the cursor and the space after or before it. | |
649 | |
650 ============================================================================== | |
651 7. Marks *mark-motions* *E20* *E78* | |
652 | |
653 Jumping to a mark can be done in two ways: | |
654 1. With ` (backtick): The cursor is positioned at the specified location | |
655 and the motion is |exclusive|. | |
656 2. 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* | |
661 m{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`* | |
665 m' 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]* | |
670 m[ 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} Set mark {a-zA-Z} at last line number in [range], | |
676 column 0. Default is cursor line. | |
677 | |
678 *:k* | |
679 :[range]k{a-zA-Z} Same as :mark, but the space before the mark name can | |
680 be omitted. | |
681 | |
682 *'* *'a* *`* *`a* | |
683 '{a-z} `{a-z} Jump to the mark {a-z}. | |
684 | |
685 *'A* *'0* *`A* *`0* | |
686 '{A-Z0-9} `{A-Z0-9} To the mark {A-Z0-9} in the correct file (not a motion | |
687 command when in another file). {not in Vi} | |
688 | |
689 *g'* *g'a* *g`* *g`a* | |
690 g'{mark} g`{mark} | |
691 Jump to the {mark}, but don't change the jumplist when | |
692 jumping within the current buffer. Example: > | |
693 g`" | |
694 < jumps to the last known position in a file. See | |
695 $VIMRUNTIME/vimrc_example.vim. {not in Vi} | |
696 | |
697 *:marks* | |
698 :marks List all the current marks (not a motion command). | |
699 The |'(|, |')|, |'{| and |'}| marks are not listed. | |
700 {not in Vi} | |
701 *E283* | |
702 :marks {arg} List the marks that are mentioned in {arg} (not a | |
703 motion command). For example: > | |
704 :marks aB | |
705 < to list marks 'a' and 'B'. {not in Vi} | |
706 | |
707 A mark is not visible in any way. It is just a position in the file that is | |
708 remembered. Do not confuse marks with named registers, they are totally | |
709 unrelated. | |
710 | |
711 'a - 'z lowercase marks, valid within one file | |
712 'A - 'Z uppercase marks, also called file marks, valid between files | |
713 '0 - '9 numbered marks, set from .viminfo file | |
714 | |
715 Lowercase marks 'a to 'z are remembered as long as the file remains in the | |
716 buffer list. If you remove the file from the buffer list, all its marks are | |
717 lost. If you delete a line that contains a mark, that mark is erased. | |
718 | |
719 To delete a mark: Create a new line, position the mark there, delete the line. | |
720 E.g.: "o<Esc>mxdd". This does change the file though. Using "u" won't work, | |
721 it also restores marks. | |
722 | |
723 Lowercase marks can be used in combination with operators. For example: "d't" | |
724 deletes the lines from the cursor position to mark 't'. Hint: Use mark 't' for | |
725 Top, 'b' for Bottom, etc.. Lowercase marks are restored when using undo and | |
726 redo. | |
727 | |
728 Uppercase marks 'A to 'Z include the file name. {Vi: no uppercase marks} You | |
729 can use them to jump from file to file. You can only use an uppercase mark | |
730 with an operator if the mark is in the current file. The line number of the | |
731 mark remains correct, even if you insert/delete lines or edit another file for | |
732 a moment. When the 'viminfo' option is not empty, uppercase marks are kept in | |
733 the .viminfo file. See |viminfo-file-marks|. | |
734 | |
735 Numbered marks '0 to '9 are quite different. They can not be set directly. | |
736 They are only present when using a viminfo file |viminfo-file|. Basically '0 | |
737 is the location of the cursor when you last exited Vim, '1 the last but one | |
738 time, etc. Use the "r" flag in 'viminfo' to specify files for which no | |
739 Numbered mark should be stored. See |viminfo-file-marks|. | |
740 | |
741 | |
742 *'[* *`[* | |
743 '[ `[ To the first character of the previously changed | |
744 or yanked text. {not in Vi} | |
745 | |
746 *']* *`]* | |
747 '] `] To the last character of the previously changed or | |
748 yanked text. {not in Vi} | |
749 | |
750 After executing an operator the Cursor is put at the beginning of the text | |
751 that was operated upon. After a put command ("p" or "P") the cursor is | |
752 sometimes placed at the first inserted line and sometimes on the last inserted | |
753 character. The four commands above put the cursor at either end. Example: | |
754 After yanking 10 lines you want to go to the last one of them: "10Y']". After | |
755 inserting several lines with the "p" command you want to jump to the lowest | |
756 inserted line: "p']". This also works for text that has been inserted. | |
757 | |
758 Note: After deleting text, the start and end positions are the same, except | |
759 when using blockwise Visual mode. These commands do not work when no change | |
760 was made yet in the current file. | |
761 | |
762 *'<* *`<* | |
763 '< `< To the first character of the last selected Visual | |
764 area in the current buffer. {not in Vi}. | |
765 | |
766 *'>* *`>* | |
767 '> `> To the last character of the last selected Visual | |
768 area in the current buffer. {not in Vi}. | |
769 | |
770 *''* *``* | |
771 '' `` To the position before latest jump, or where the last | |
772 "m'" or "m`" command was given. Not set when the | |
773 |:keepjumps| command modifier was used. | |
774 Also see |restore-position|. | |
775 | |
776 *'quote* *`quote* | |
777 '" `" To the cursor position when last exiting the current | |
778 buffer. Defaults to the first character of the first | |
779 line. See |last-position-jump| for how to use this | |
780 for each opened file. | |
781 Only one position is remembered per buffer, not one | |
782 for each window. As long as the buffer is visible in | |
783 a window the position won't be changed. | |
784 {not in Vi}. | |
785 | |
786 *'^* *`^* | |
787 '^ `^ To the position where the cursor was the last time | |
788 when Insert mode was stopped This is used by the |gi| | |
789 command. Not set when the |:keepjumps| command | |
790 modifier was used. {not in Vi} | |
791 | |
792 *'.* *`.* | |
793 '. `. To the position where the last change was made. The | |
794 position is at or near where the change started. | |
795 Sometimes a command is executed as several changes, | |
796 then the position can be near the end of what the | |
797 command changed. For example when inserting a word, | |
798 the position will be on the last character. | |
799 {not in Vi} | |
800 | |
801 *'(* *`(* | |
802 '( `( To the start of the current sentence, like the |(| | |
803 command. {not in Vi} | |
804 | |
805 *')* *`)* | |
806 ') `) To the end of the current sentence, like the |)| | |
807 command. {not in Vi} | |
808 | |
809 *'{* *`{* | |
810 '{ `{ To the start of the current paragraph, like the |{| | |
811 command. {not in Vi} | |
812 | |
813 *'}* *`}* | |
814 '} `} To the end of the current paragraph, like the |}| | |
815 command. {not in Vi} | |
816 | |
817 These commands are not marks themselves, but jump to a mark: | |
818 | |
819 *]'* | |
820 ]' [count] times to next line with a lowercase mark below | |
821 the cursor, on the first non-blank character in the | |
822 line. {not in Vi} | |
823 | |
824 *]`* | |
825 ]` [count] times to lowercase mark after the cursor. {not | |
826 in Vi} | |
827 | |
828 *['* | |
829 [' [count] times to previous line with a lowercase mark | |
830 before the cursor, on the first non-blank character in | |
831 the line. {not in Vi} | |
832 | |
833 *[`* | |
834 [` [count] times to lowercase mark before the cursor. | |
835 {not in Vi} | |
836 | |
837 | |
838 :loc[kmarks] {command} *:loc* *:lockmarks* | |
839 Execute {command} without adjusting marks. This is | |
840 useful when changing text in a way that the line count | |
841 will be the same when the change has completed. | |
842 WARNING: When the line count does change, marks below | |
843 the change will keep their line number, thus move to | |
844 another text line. | |
845 These items will not be adjusted for deleted/inserted | |
846 lines: | |
847 - lower case letter marks 'a - 'z | |
848 - upper case letter marks 'A - 'Z | |
849 - numbered marks '0 - '9 | |
850 - last insert position '^ | |
851 - last change position '. | |
852 - the Visual area '< and '> | |
853 - line numbers in placed signs | |
854 - line numbers in quickfix positions | |
855 - positions in the |jumplist| | |
856 - positions in the |tagstack| | |
857 These items will still be adjusted: | |
858 - previous context mark '' | |
859 - the cursor position | |
860 - the view of a window on a buffer | |
861 - folds | |
862 - diffs | |
863 | |
864 :kee[pmarks] {command} *:kee* *:keepmarks* | |
865 Currently only has effect for the filter command | |
866 |:range!|: | |
867 - When the number of lines after filtering is equal to | |
868 or larger than before, all marks are kept at the | |
869 same line number. | |
870 - When the number of lines decreases, the marks in the | |
871 ilnes that disappeared are deleted. | |
872 In any case the marks below the filtered text have | |
873 their line numbers adjusted, thus stick to the text, | |
874 as usual. | |
875 When the 'R' flag is missing from 'cpoptions' this has | |
876 the same effect as using ":keepmarks". | |
877 | |
878 *:keepj* *:keepjumps* | |
879 :keepj[umps] {command} | |
880 Do not change the |''|, |'.| and |'^| marks, the | |
881 |jumplist| or the |changelist|. Useful when making a | |
882 change or inserting text automatically and the user | |
883 doesn't want to go to this position. E.g., when | |
884 updating a "Last change" timestamp: > | |
885 autocmd BufWritePre,FileWritePre *.abc keepjumps call SetLastChange() | |
886 | |
887 ============================================================================== | |
888 8. Jumps *jump-motions* | |
889 | |
890 A "jump" is one of the following commands: "'", "`", "G", "/", "?", "n", | |
891 "N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", "H" and | |
892 the commands that start editing a new file. If you make the cursor "jump" | |
893 with one of these commands, the position of the cursor before the jump is | |
894 remembered. You can return to that position with the "''" and "``" command, | |
895 unless the line containing that position was changed or deleted. | |
896 | |
897 *CTRL-O* | |
898 CTRL-O Go to [count] Older cursor position in jump list | |
899 (not a motion command). {not in Vi} | |
900 {not available without the +jumplist feature} | |
901 | |
902 <Tab> or *CTRL-I* *<Tab>* | |
903 CTRL-I Go to [count] newer cursor position in jump list | |
904 (not a motion command). | |
905 In a |quickfix-window| it takes you to the position of | |
906 the error under the cursor. | |
907 {not in Vi} | |
908 {not available without the +jumplist feature} | |
909 | |
910 *:ju* *:jumps* | |
911 :ju[mps] Print the jump list (not a motion command). {not in | |
912 Vi} {not available without the +jumplist feature} | |
913 | |
914 *jumplist* | |
915 Jumps are remembered in a jump list. With the CTRL-O and CTRL-I command you | |
916 can go to cursor positions before older jumps, and back again. Thus you can | |
917 move up and down the list. There is a separate jump list for each window. | |
918 The maximum number of entries is fixed at 100. | |
919 {not available without the +jumplist feature} | |
920 | |
921 For example, after three jump commands you have this jump list: | |
922 | |
923 jump line col file/line ~ | |
924 3 1 0 some text ~ | |
925 2 70 0 another line ~ | |
926 1 1154 23 end. ~ | |
927 > ~ | |
928 | |
929 The "file/line" column shows the file name, or the text at the jump if it is | |
930 in the current file (an indent is removed and a long line is truncated to fit | |
931 in the window). | |
932 | |
933 You are currently in line 1167. If you then use the CTRL-O command, the | |
934 cursor is put in line 1154. This results in: | |
935 | |
936 jump line col file/line ~ | |
937 2 1 0 some text ~ | |
938 1 70 0 another line ~ | |
939 > 0 1154 23 end. ~ | |
940 1 1167 0 foo bar ~ | |
941 | |
942 The pointer will be set at the last used jump position. The next CTRL-O | |
943 command will use the entry above it, the next CTRL-I command will use the | |
944 entry below it. If the pointer is below the last entry, this indicates that | |
945 you did not use a CTRL-I or CTRL-O before. In this case the CTRL-O command | |
946 will cause the cursor position to be added to the jump list, so you can get | |
947 back to the position before the CTRL-O. In this case this is line 1167. | |
948 | |
949 With more CTRL-O commands you will go to lines 70 and 1. If you use CTRL-I | |
950 you can go back to 1154 and 1167 again. Note that the number in the "jump" | |
951 column indicates the count for the CTRL-O or CTRL-I command that takes you to | |
952 this position. | |
953 | |
954 If you use a jump command, the current line number is inserted at the end of | |
955 the jump list. If the same line was already in the jump list, it is removed. | |
956 The result is that when repeating CTRL-O you will get back to old positions | |
957 only once. | |
958 | |
959 When the |:keepjumps| command modifier is used, jumps are not stored in the | |
960 jumplist. | |
961 | |
962 After the CTRL-O command that got you into line 1154 you could give another | |
963 jump command (e.g., "G"). The jump list would then become: | |
964 | |
965 jump line col file/line ~ | |
966 4 1 0 some text ~ | |
967 3 70 0 another line ~ | |
968 2 1167 0 foo bar ~ | |
969 1 1154 23 end. ~ | |
970 > ~ | |
971 | |
972 The line numbers will be adjusted for deleted and inserted lines. This fails | |
973 if you stop editing a file without writing, like with ":n!". | |
974 | |
975 When you split a window, the jumplist will be copied to the new window. | |
976 | |
977 If you have included the ' item in the 'viminfo' option the jumplist will be | |
978 stored in the viminfo file and restored when starting Vim. | |
979 | |
980 | |
981 CHANGE LIST JUMPS *changelist* *change-list-jumps* *E664* | |
982 | |
983 When making a change the cursor position is remembered. One position is | |
984 remembered for every change that can be undone, unless it is close to a | |
985 previous change. Two commands can be used to jump to positions of changes, | |
986 also those that have been undone: | |
987 | |
988 *g;* *E662* | |
989 g; Go to [count] older position in change list. | |
990 If [count] is larger than the number of older change | |
991 positions go to the oldest change. | |
992 If there is no older change an error message is given. | |
993 (not a motion command) | |
994 {not in Vi} | |
995 {not available without the +jumplist feature} | |
996 | |
997 *g,* *E663* | |
998 g, Go to [count] newer cursor position in change list. | |
999 Just like "g;| but in the opposite direction. | |
1000 (not a motion command) | |
1001 {not in Vi} | |
1002 {not available without the +jumplist feature} | |
1003 | |
1004 When using a count you jump as far back or forward as possible. Thus you can | |
1005 use "999g;" to go to the first change for which the position is still | |
1006 remembered. The number of entries in the change list is fixed and is the same | |
1007 as for the |jumplist|. | |
1008 | |
1009 When two undo-able changes are in the same line and at a column position less | |
1010 than 'textwidth' apart only the last one is remembered. This avoids that a | |
1011 sequence of small changes in a line, for example "xxxxx", adds many positions | |
1012 to the change list. When 'textwidth' is zero 'wrapmargin' is used. When that | |
1013 also isn't set a fixed number of 79 is used. Detail: For the computations | |
1014 bytes are used, not characters, to avoid a speed penalty (this only matters | |
1015 for multi-byte encodings). | |
1016 | |
1017 Note that when text has been inserted or deleted the cursor position might be | |
1018 a bit different from the position of the change. Especially when lines have | |
1019 been deleted. | |
1020 | |
1021 When the |:keepjumps| command modifier is used the position of a change is not | |
1022 remembered. | |
1023 | |
1024 *:changes* | |
1025 :changes Print the change list. A ">" character indicates the | |
1026 current position. Just after a change it is below the | |
1027 newest entry, indicating that "g;" takes you to the | |
1028 newest entry position. The first column indicates the | |
1029 count needed to take you to this position. Example: | |
1030 | |
1031 change line col text ~ | |
1032 3 9 8 bla bla bla | |
1033 2 11 57 foo is a bar | |
1034 1 14 54 the latest changed line | |
1035 > | |
1036 | |
1037 The "3g;" command takes you to line 9. Then the | |
1038 output of ":changes is: | |
1039 | |
1040 change line col text ~ | |
1041 > 0 9 8 bla bla bla | |
1042 1 11 57 foo is a bar | |
1043 2 14 54 the latest changed line | |
1044 | |
1045 Now you can use "g," to go to line 11 and "2g," to go | |
1046 to line 14. | |
1047 | |
1048 ============================================================================== | |
1049 9. Various motions *various-motions* | |
1050 | |
1051 *%* | |
1052 % Find the next item in this line after or under the | |
1053 cursor and jump to its match. |inclusive| motion. | |
1054 Items can be: | |
1055 ([{}]) parenthesis or (curly/square) brackets | |
1056 (this can be changed with the | |
1057 'matchpairs' option) | |
1058 /* */ start or end of C-style comment | |
1059 #if, #ifdef, #else, #elif, #endif | |
1060 C preprocessor conditionals (when the | |
1061 cursor is on the # or no ([{ | |
1062 following) | |
1063 For other items the matchit plugin can be used, see | |
1064 |matchit-install|. | |
1065 | |
1066 When 'cpoptions' contains "M" |cpo-M| backslashes | |
1067 before parens and braces are ignored. Without "M" the | |
1068 number of backslashes matters: an even number doesn't | |
1069 match with an odd number. Thus in "( \) )" and "\( ( | |
1070 \)" the first and last parenthesis match. | |
1071 When the '%' character is not present in 'cpoptions' | |
1072 |cpo-%|, parens and braces inside double quotes are | |
1073 ignored, unless the number of parens/braces in a line | |
1074 is uneven and this line and the previous one does not | |
1075 end in a backslash. '(', '{', '[', ']', '}' and ')' | |
1076 are also ignored (parens and braces inside single | |
1077 quotes). Note that this works fine for C, but not for | |
1078 Perl, where single quotes are used for strings. | |
1079 No count is allowed ({count}% jumps to a line {count} | |
1080 percentage down the file |N%|). Using '%' on | |
1081 #if/#else/#endif makes the movement linewise. | |
1082 | |
1083 *[(* | |
1084 [( go to [count] previous unmatched '('. | |
1085 |exclusive| motion. {not in Vi} | |
1086 | |
1087 *[{* | |
1088 [{ go to [count] previous unmatched '{'. | |
1089 |exclusive| motion. {not in Vi} | |
1090 | |
1091 *])* | |
1092 ]) go to [count] next unmatched ')'. | |
1093 |exclusive| motion. {not in Vi} | |
1094 | |
1095 *]}* | |
1096 ]} go to [count] next unmatched '}'. | |
1097 |exclusive| motion. {not in Vi} | |
1098 | |
1099 The above four commands can be used to go to the start or end of the current | |
1100 code block. It is like doing "%" on the '(', ')', '{' or '}' at the other | |
1101 end of the code block, but you can do this from anywhere in the code block. | |
1102 Very useful for C programs. Example: When standing on "case x:", "[{" will | |
1103 bring you back to the switch statement. | |
1104 | |
1105 *]m* | |
1106 ]m Go to [count] next start of a method (for Java or | |
1107 similar structured language). When not before the | |
1108 start of a method, jump to the start or end of the | |
1109 class. When no '{' is found after the cursor, this is | |
1110 an error. |exclusive| motion. {not in Vi} | |
1111 *]M* | |
1112 ]M Go to [count] next end of a method (for Java or | |
1113 similar structured language). When not before the end | |
1114 of a method, jump to the start or end of the class. | |
1115 When no '}' is found after the cursor, this is an | |
1116 error. |exclusive| motion. {not in Vi} | |
1117 *[m* | |
1118 [m Go to [count] previous start of a method (for Java or | |
1119 similar structured language). When not after the | |
1120 start of a method, jump to the start or end of the | |
1121 class. When no '{' is found before the cursor this is | |
1122 an error. |exclusive| motion. {not in Vi} | |
1123 *[M* | |
1124 [M Go to [count] previous end of a method (for Java or | |
1125 similar structured language). When not after the | |
1126 end of a method, jump to the start or end of the | |
1127 class. When no '}' is found before the cursor this is | |
1128 an error. |exclusive| motion. {not in Vi} | |
1129 | |
1130 The above two commands assume that the file contains a class with methods. | |
1131 The class definition is surrounded in '{' and '}'. Each method in the class | |
1132 is also surrounded with '{' and '}'. This applies to the Java language. The | |
1133 file looks like this: > | |
1134 | |
1135 // comment | |
1136 class foo { | |
1137 int method_one() { | |
1138 body_one(); | |
1139 } | |
1140 int method_two() { | |
1141 body_two(); | |
1142 } | |
1143 } | |
1144 Starting with the cursor on "body_two()", using "[m" will jump to the '{' at | |
1145 the start of "method_two()" (obviously this is much more useful when the | |
1146 method is long!). Using "2[m" will jump to the start of "method_one()". | |
1147 Using "3[m" will jump to the start of the class. | |
1148 | |
1149 *[#* | |
1150 [# go to [count] previous unmatched "#if" or "#else". | |
1151 |exclusive| motion. {not in Vi} | |
1152 | |
1153 *]#* | |
1154 ]# go to [count] next unmatched "#else" or "#endif". | |
1155 |exclusive| motion. {not in Vi} | |
1156 | |
1157 These two commands work in C programs that contain #if/#else/#endif | |
1158 constructs. It brings you to the start or end of the #if/#else/#endif where | |
1159 the current line is included. You can then use "%" to go to the matching line. | |
1160 | |
1161 *[star* *[/* | |
1162 [* or [/ go to [count] previous start of a C comment "/*". | |
1163 |exclusive| motion. {not in Vi} | |
1164 | |
1165 *]star* *]/* | |
1166 ]* or ]/ go to [count] next end of a C comment "*/". | |
1167 |exclusive| motion. {not in Vi} | |
1168 | |
1169 | |
1170 *H* | |
1171 H To line [count] from top (Home) of window (default: | |
1172 first line on the window) on the first non-blank | |
1173 character |linewise|. See also 'startofline' option. | |
1174 Cursor is adjusted for 'scrolloff' option. | |
1175 | |
1176 *M* | |
1177 M To Middle line of window, on the first non-blank | |
1178 character |linewise|. See also 'startofline' option. | |
1179 | |
1180 *L* | |
1181 L To line [count] from bottom of window (default: Last | |
1182 line on the window) on the first non-blank character | |
1183 |linewise|. See also 'startofline' option. | |
1184 Cursor is adjusted for 'scrolloff' option. | |
1185 | |
1186 <LeftMouse> Moves to the position on the screen where the mouse | |
1187 click is |inclusive|. See also |<LeftMouse>|. If the | |
1188 position is in a status line, that window is made the | |
1189 active window and the cursor is not moved. {not in Vi} | |
1190 | |
1191 vim:tw=78:ts=8:ft=help:norl: |