"Fossies" - the Fresh Open Source Software Archive

Member "vim-8.2.1354/runtime/doc/motion.txt" (2 Aug 2020, 51125 Bytes) of package /linux/misc/vim-8.2.1354.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "motion.txt" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 8.1_vs_8.2.

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