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