annotate runtime/doc/motion.txt @ 34:e170173ecb68 current-release

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