Mercurial > vim
annotate runtime/doc/usr_03.txt @ 20221:ec0ace1ddc20 v8.2.0666
patch 8.2.0666: Ruby test fails on MS-Windows
Commit: https://github.com/vim/vim/commit/88e6cc253903c86d06abb59b35c85e6aef0152f3
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Apr 30 19:19:29 2020 +0200
patch 8.2.0666: Ruby test fails on MS-Windows
Problem: Ruby test fails on MS-Windows.
Solution: Remove the "maintainer" line. (Ken Takata, closes https://github.com/vim/vim/issues/6015)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 30 Apr 2020 19:30:04 +0200 |
parents | d4deb2e50667 |
children | d4c7b3e9cd17 |
rev | line source |
---|---|
19574 | 1 *usr_03.txt* For Vim version 8.2. Last change: 2020 Feb 29 |
7 | 2 |
3 VIM USER MANUAL - by Bram Moolenaar | |
4 | |
5 Moving around | |
6 | |
7 | |
8 Before you can insert or delete text the cursor has to be moved to the right | |
9 place. Vim has a large number of commands to position the cursor. This | |
10 chapter shows you how to use the most important ones. You can find a list of | |
11 these commands below |Q_lr|. | |
12 | |
13 |03.1| Word movement | |
14 |03.2| Moving to the start or end of a line | |
15 |03.3| Moving to a character | |
164 | 16 |03.4| Matching a parenthesis |
7 | 17 |03.5| Moving to a specific line |
18 |03.6| Telling where you are | |
19 |03.7| Scrolling around | |
20 |03.8| Simple searches | |
21 |03.9| Simple search patterns | |
22 |03.10| Using marks | |
23 | |
24 Next chapter: |usr_04.txt| Making small changes | |
25 Previous chapter: |usr_02.txt| The first steps in Vim | |
26 Table of contents: |usr_toc.txt| | |
27 | |
28 ============================================================================== | |
29 *03.1* Word movement | |
30 | |
31 To move the cursor forward one word, use the "w" command. Like most Vim | |
32 commands, you can use a numeric prefix to move past multiple words. For | |
33 example, "3w" moves three words. This figure shows how it works: | |
34 | |
35 This is a line with example text ~ | |
36 --->-->->-----------------> | |
37 w w w 3w | |
38 | |
39 Notice that "w" moves to the start of the next word if it already is at the | |
40 start of a word. | |
41 The "b" command moves backward to the start of the previous word: | |
42 | |
43 This is a line with example text ~ | |
44 <----<--<-<---------<--- | |
45 b b b 2b b | |
46 | |
47 There is also the "e" command that moves to the next end of a word and "ge", | |
48 which moves to the previous end of a word: | |
49 | |
50 This is a line with example text ~ | |
51 <- <--- -----> ----> | |
52 ge ge e e | |
53 | |
54 If you are at the last word of a line, the "w" command will take you to the | |
55 first word in the next line. Thus you can use this to move through a | |
56 paragraph, much faster than using "l". "b" does the same in the other | |
57 direction. | |
58 | |
59 A word ends at a non-word character, such as a ".", "-" or ")". To change | |
7384
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
60 what Vim considers to be a word, see the 'iskeyword' option. If you try this |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
61 out in the help directly, 'iskeyword' needs to be reset for the examples to |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
62 work: > |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
63 :set iskeyword& |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
64 It is also possible to move by white-space separated WORDs. This is not a |
7 | 65 word in the normal sense, that's why the uppercase is used. The commands for |
66 moving by WORDs are also uppercase, as this figure shows: | |
67 | |
68 ge b w e | |
69 <- <- ---> ---> | |
70 This is-a line, with special/separated/words (and some more). ~ | |
71 <----- <----- --------------------> -----> | |
72 gE B W E | |
73 | |
74 With this mix of lowercase and uppercase commands, you can quickly move | |
75 forward and backward through a paragraph. | |
76 | |
77 ============================================================================== | |
78 *03.2* Moving to the start or end of a line | |
79 | |
80 The "$" command moves the cursor to the end of a line. If your keyboard has | |
81 an <End> key it will do the same thing. | |
82 | |
83 The "^" command moves to the first non-blank character of the line. The "0" | |
18719 | 84 command (zero) moves to the very first character of the line, and the <Home> |
85 key does the same thing. In a picture: | |
7 | 86 |
87 ^ | |
88 <------------ | |
89 .....This is a line with example text ~ | |
90 <----------------- ---------------> | |
91 0 $ | |
92 | |
93 (the "....." indicates blanks here) | |
94 | |
95 The "$" command takes a count, like most movement commands. But moving to | |
96 the end of the line several times doesn't make sense. Therefore it causes the | |
97 editor to move to the end of another line. For example, "1$" moves you to | |
98 the end of the first line (the one you're on), "2$" to the end of the next | |
99 line, and so on. | |
100 The "0" command doesn't take a count argument, because the "0" would be | |
101 part of the count. Unexpectedly, using a count with "^" doesn't have any | |
102 effect. | |
103 | |
104 ============================================================================== | |
105 *03.3* Moving to a character | |
106 | |
107 One of the most useful movement commands is the single-character search | |
108 command. The command "fx" searches forward in the line for the single | |
109 character x. Hint: "f" stands for "Find". | |
110 For example, you are at the beginning of the following line. Suppose you | |
111 want to go to the h of human. Just execute the command "fh" and the cursor | |
112 will be positioned over the h: | |
113 | |
114 To err is human. To really foul up you need a computer. ~ | |
115 ---------->---------------> | |
116 fh fy | |
117 | |
118 This also shows that the command "fy" moves to the end of the word really. | |
119 You can specify a count; therefore, you can go to the "l" of "foul" with | |
120 "3fl": | |
121 | |
122 To err is human. To really foul up you need a computer. ~ | |
123 ---------------------> | |
124 3fl | |
125 | |
126 The "F" command searches to the left: | |
127 | |
128 To err is human. To really foul up you need a computer. ~ | |
129 <--------------------- | |
130 Fh | |
131 | |
132 The "tx" command works like the "fx" command, except it stops one character | |
133 before the searched character. Hint: "t" stands for "To". The backward | |
134 version of this command is "Tx". | |
135 | |
136 To err is human. To really foul up you need a computer. ~ | |
137 <------------ -------------> | |
138 Th tn | |
139 | |
140 These four commands can be repeated with ";". "," repeats in the other | |
141 direction. The cursor is never moved to another line. Not even when the | |
142 sentence continues. | |
143 | |
144 Sometimes you will start a search, only to realize that you have typed the | |
145 wrong command. You type "f" to search backward, for example, only to realize | |
146 that you really meant "F". To abort a search, press <Esc>. So "f<Esc>" is an | |
147 aborted forward search and doesn't do anything. Note: <Esc> cancels most | |
148 operations, not just searches. | |
149 | |
150 ============================================================================== | |
164 | 151 *03.4* Matching a parenthesis |
7 | 152 |
153 When writing a program you often end up with nested () constructs. Then the | |
154 "%" command is very handy: It moves to the matching paren. If the cursor is | |
155 on a "(" it will move to the matching ")". If it's on a ")" it will move to | |
156 the matching "(". | |
157 | |
158 % | |
159 <-----> | |
160 if (a == (b * c) / d) ~ | |
161 <----------------> | |
162 % | |
163 | |
164 This also works for [] and {} pairs. (This can be defined with the | |
165 'matchpairs' option.) | |
166 | |
167 When the cursor is not on a useful character, "%" will search forward to find | |
168 one. Thus if the cursor is at the start of the line of the previous example, | |
169 "%" will search forward and find the first "(". Then it moves to its match: | |
170 | |
171 if (a == (b * c) / d) ~ | |
172 ---+----------------> | |
173 % | |
174 | |
175 ============================================================================== | |
176 *03.5* Moving to a specific line | |
177 | |
178 If you are a C or C++ programmer, you are familiar with error messages such as | |
179 the following: | |
180 | |
181 prog.c:33: j undeclared (first use in this function) ~ | |
182 | |
183 This tells you that you might want to fix something on line 33. So how do you | |
184 find line 33? One way is to do "9999k" to go to the top of the file and "32j" | |
10895
c391bfbdb452
Updated runtime files.
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
185 to go down thirty-two lines. It is not a good way, but it works. A much |
7 | 186 better way of doing things is to use the "G" command. With a count, this |
187 command positions you at the given line number. For example, "33G" puts you | |
188 on line 33. (For a better way of going through a compiler's error list, see | |
189 |usr_30.txt|, for information on the :make command.) | |
190 With no argument, "G" positions you at the end of the file. A quick way to | |
191 go to the start of a file use "gg". "1G" will do the same, but is a tiny bit | |
192 more typing. | |
193 | |
194 | first line of a file ^ | |
195 | text text text text | | |
196 | text text text text | gg | |
197 7G | text text text text | | |
198 | text text text text | |
199 | text text text text | |
200 V text text text text | | |
201 text text text text | G | |
202 text text text text | | |
203 last line of a file V | |
204 | |
205 Another way to move to a line is using the "%" command with a count. For | |
206 example "50%" moves you to halfway the file. "90%" goes to near the end. | |
207 | |
208 The previous assumes that you want to move to a line in the file, no matter if | |
209 it's currently visible or not. What if you want to move to one of the lines | |
210 you can see? This figure shows the three commands you can use: | |
211 | |
212 +---------------------------+ | |
213 H --> | text sample text | | |
214 | sample text | | |
215 | text sample text | | |
216 | sample text | | |
217 M --> | text sample text | | |
218 | sample text | | |
219 | text sample text | | |
220 | sample text | | |
221 L --> | text sample text | | |
222 +---------------------------+ | |
223 | |
18719 | 224 Hints: "H" stands for Home, "M" for Middle and "L" for Last. Alternatively, |
225 "H" for high, "M" for Middle and "L" for low. | |
7 | 226 |
227 ============================================================================== | |
228 *03.6* Telling where you are | |
229 | |
230 To see where you are in a file, there are three ways: | |
231 | |
232 1. Use the CTRL-G command. You get a message like this (assuming the 'ruler' | |
233 option is off): | |
234 | |
235 "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ | |
236 | |
237 This shows the name of the file you are editing, the line number where the | |
238 cursor is, the total number of lines, the percentage of the way through | |
239 the file and the column of the cursor. | |
240 Sometimes you will see a split column number. For example, "col 2-9". | |
241 This indicates that the cursor is positioned on the second character, but | |
242 because character one is a tab, occupying eight spaces worth of columns, | |
243 the screen column is 9. | |
244 | |
245 2. Set the 'number' option. This will display a line number in front of | |
246 every line: > | |
247 | |
248 :set number | |
249 < | |
250 To switch this off again: > | |
251 | |
252 :set nonumber | |
253 < | |
254 Since 'number' is a boolean option, prepending "no" to its name has the | |
255 effect of switching it off. A boolean option has only these two values, | |
256 it is either on or off. | |
257 Vim has many options. Besides the boolean ones there are options with | |
258 a numerical value and string options. You will see examples of this where | |
259 they are used. | |
260 | |
261 3. Set the 'ruler' option. This will display the cursor position in the | |
262 lower right corner of the Vim window: > | |
263 | |
264 :set ruler | |
265 | |
266 Using the 'ruler' option has the advantage that it doesn't take much room, | |
267 thus there is more space for your text. | |
268 | |
269 ============================================================================== | |
270 *03.7* Scrolling around | |
271 | |
272 The CTRL-U command scrolls down half a screen of text. Think of looking | |
273 through a viewing window at the text and moving this window up by half the | |
274 height of the window. Thus the window moves up over the text, which is | |
275 backward in the file. Don't worry if you have a little trouble remembering | |
276 which end is up. Most users have the same problem. | |
277 The CTRL-D command moves the viewing window down half a screen in the file, | |
278 thus scrolls the text up half a screen. | |
279 | |
280 +----------------+ | |
281 | some text | | |
282 | some text | | |
283 | some text | | |
284 +---------------+ | some text | | |
285 | some text | CTRL-U --> | | | |
286 | | | 123456 | | |
287 | 123456 | +----------------+ | |
288 | 7890 | | |
289 | | +----------------+ | |
290 | example | CTRL-D --> | 7890 | | |
291 +---------------+ | | | |
292 | example | | |
293 | example | | |
294 | example | | |
295 | example | | |
296 +----------------+ | |
297 | |
298 To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down). | |
299 Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible | |
300 key mappings CTRL-Y will redo a change instead of scroll.) | |
301 | |
18719 | 302 To scroll forward by a whole screen (except for two lines) use CTRL-F. To |
303 scroll backwards, use CTRL-B. These should be easy to remember: F for | |
304 Forwards and B for Backwards. | |
7 | 305 |
306 A common issue is that after moving down many lines with "j" your cursor is at | |
307 the bottom of the screen. You would like to see the context of the line with | |
308 the cursor. That's done with the "zz" command. | |
309 | |
310 +------------------+ +------------------+ | |
18719 | 311 | earlier text | | earlier text | |
312 | earlier text | | earlier text | | |
313 | earlier text | | earlier text | | |
314 | earlier text | zz --> | line with cursor | | |
315 | earlier text | | later text | | |
316 | earlier text | | later text | | |
317 | line with cursor | | later text | | |
7 | 318 +------------------+ +------------------+ |
319 | |
320 The "zt" command puts the cursor line at the top, "zb" at the bottom. There | |
321 are a few more scrolling commands, see |Q_sc|. To always keep a few lines of | |
322 context around the cursor, use the 'scrolloff' option. | |
323 | |
324 ============================================================================== | |
325 *03.8* Simple searches | |
326 | |
327 To search for a string, use the "/string" command. To find the word include, | |
328 for example, use the command: > | |
329 | |
330 /include | |
331 | |
332 You will notice that when you type the "/" the cursor jumps to the last line | |
333 of the Vim window, like with colon commands. That is where you type the word. | |
334 You can press the backspace key (backarrow or <BS>) to make corrections. Use | |
335 the <Left> and <Right> cursor keys when necessary. | |
336 Pressing <Enter> executes the command. | |
337 | |
338 Note: | |
236 | 339 The characters .*[]^%/\?~$ have special meanings. If you want to use |
7 | 340 them in a search you must put a \ in front of them. See below. |
341 | |
342 To find the next occurrence of the same string use the "n" command. Use this | |
343 to find the first #include after the cursor: > | |
344 | |
345 /#include | |
346 | |
347 And then type "n" several times. You will move to each #include in the text. | |
348 You can also use a count if you know which match you want. Thus "3n" finds | |
19574 | 349 the third match. You can also use a count with "/": "4/the" goes to the |
350 fourth match of "the". | |
7 | 351 |
352 The "?" command works like "/" but searches backwards: > | |
353 | |
354 ?word | |
355 | |
356 The "N" command repeats the last search the opposite direction. Thus using | |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10895
diff
changeset
|
357 "N" after a "/" command searches backwards, using "N" after "?" searches |
18719 | 358 forwards. |
7 | 359 |
360 | |
361 IGNORING CASE | |
362 | |
363 Normally you have to type exactly what you want to find. If you don't care | |
364 about upper or lowercase in a word, set the 'ignorecase' option: > | |
365 | |
366 :set ignorecase | |
367 | |
368 If you now search for "word", it will also match "Word" and "WORD". To match | |
369 case again: > | |
370 | |
371 :set noignorecase | |
372 | |
373 | |
374 HISTORY | |
375 | |
376 Suppose you do three searches: > | |
377 | |
378 /one | |
379 /two | |
380 /three | |
381 | |
382 Now let's start searching by typing a simple "/" without pressing <Enter>. If | |
383 you press <Up> (the cursor key), Vim puts "/three" on the command line. | |
384 Pressing <Enter> at this point searches for three. If you do not press | |
385 <Enter>, but press <Up> instead, Vim changes the prompt to "/two". Another | |
386 press of <Up> moves you to "/one". | |
387 You can also use the <Down> cursor key to move through the history of | |
388 search commands in the other direction. | |
389 | |
390 If you know what a previously used pattern starts with, and you want to use it | |
391 again, type that character before pressing <Up>. With the previous example, | |
392 you can type "/o<Up>" and Vim will put "/one" on the command line. | |
393 | |
394 The commands starting with ":" also have a history. That allows you to recall | |
395 a previous command and execute it again. These two histories are separate. | |
396 | |
397 | |
398 SEARCHING FOR A WORD IN THE TEXT | |
399 | |
400 Suppose you see the word "TheLongFunctionName" in the text and you want to | |
401 find the next occurrence of it. You could type "/TheLongFunctionName", but | |
402 that's a lot of typing. And when you make a mistake Vim won't find it. | |
403 There is an easier way: Position the cursor on the word and use the "*" | |
404 command. Vim will grab the word under the cursor and use it as the search | |
405 string. | |
406 The "#" command does the same in the other direction. You can prepend a | |
407 count: "3*" searches for the third occurrence of the word under the cursor. | |
408 | |
409 | |
410 SEARCHING FOR WHOLE WORDS | |
411 | |
412 If you type "/the" it will also match "there". To only find words that end | |
413 in "the" use: > | |
414 | |
415 /the\> | |
416 | |
417 The "\>" item is a special marker that only matches at the end of a word. | |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7384
diff
changeset
|
418 Similarly "\<" only matches at the beginning of a word. Thus to search for |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7384
diff
changeset
|
419 the word "the" only: > |
7 | 420 |
421 /\<the\> | |
422 | |
423 This does not match "there" or "soothe". Notice that the "*" and "#" commands | |
424 use these start-of-word and end-of-word markers to only find whole words (you | |
425 can use "g*" and "g#" to match partial words). | |
426 | |
427 | |
428 HIGHLIGHTING MATCHES | |
429 | |
430 While editing a program you see a variable called "nr". You want to check | |
431 where it's used. You could move the cursor to "nr" and use the "*" command | |
432 and press "n" to go along all the matches. | |
433 There is another way. Type this command: > | |
434 | |
435 :set hlsearch | |
436 | |
437 If you now search for "nr", Vim will highlight all matches. That is a very | |
438 good way to see where the variable is used, without the need to type commands. | |
439 To switch this off: > | |
440 | |
441 :set nohlsearch | |
442 | |
443 Then you need to switch it on again if you want to use it for the next search | |
444 command. If you only want to remove the highlighting, use this command: > | |
445 | |
446 :nohlsearch | |
447 | |
448 This doesn't reset the option. Instead, it disables the highlighting. As | |
449 soon as you execute a search command, the highlighting will be used again. | |
450 Also for the "n" and "N" commands. | |
451 | |
452 | |
453 TUNING SEARCHES | |
454 | |
455 There are a few options that change how searching works. These are the | |
456 essential ones: | |
457 > | |
458 :set incsearch | |
459 | |
460 This makes Vim display the match for the string while you are still typing it. | |
461 Use this to check if the right match will be found. Then press <Enter> to | |
462 really jump to that location. Or type more to change the search string. | |
463 > | |
464 :set nowrapscan | |
465 | |
466 This stops the search at the end of the file. Or, when you are searching | |
18719 | 467 backwards, it stops the search at the start of the file. The 'wrapscan' |
468 option is on by default, thus searching wraps around the end of the file. | |
7 | 469 |
470 | |
471 INTERMEZZO | |
472 | |
473 If you like one of the options mentioned before, and set it each time you use | |
474 Vim, you can put the command in your Vim startup file. | |
475 Edit the file, as mentioned at |not-compatible|. Or use this command to | |
476 find out where it is: > | |
477 | |
478 :scriptnames | |
479 | |
480 Edit the file, for example with: > | |
481 | |
482 :edit ~/.vimrc | |
483 | |
484 Then add a line with the command to set the option, just like you typed it in | |
485 Vim. Example: > | |
486 | |
487 Go:set hlsearch<Esc> | |
488 | |
489 "G" moves to the end of the file. "o" starts a new line, where you type the | |
18719 | 490 ":set" command. You end insert mode with <Esc>. Then write and close the |
491 file: > | |
7 | 492 |
493 ZZ | |
494 | |
495 If you now start Vim again, the 'hlsearch' option will already be set. | |
496 | |
497 ============================================================================== | |
498 *03.9* Simple search patterns | |
499 | |
500 The Vim editor uses regular expressions to specify what to search for. | |
501 Regular expressions are an extremely powerful and compact way to specify a | |
502 search pattern. Unfortunately, this power comes at a price, because regular | |
503 expressions are a bit tricky to specify. | |
504 In this section we mention only a few essential ones. More about search | |
18719 | 505 patterns and commands can be found in chapter 27 |usr_27.txt|. You can find |
506 the full explanation here: |pattern|. | |
7 | 507 |
508 | |
509 BEGINNING AND END OF A LINE | |
510 | |
511 The ^ character matches the beginning of a line. On an English-US keyboard | |
512 you find it above the 6. The pattern "include" matches the word include | |
513 anywhere on the line. But the pattern "^include" matches the word include | |
514 only if it is at the beginning of a line. | |
515 The $ character matches the end of a line. Therefore, "was$" matches the | |
516 word was only if it is at the end of a line. | |
517 | |
11763
21f3930dfe6e
Documentation updates.
Christian Brabandt <cb@256bit.org>
parents:
10895
diff
changeset
|
518 Let's mark the places where "/the" matches in this example line with "x"s: |
7 | 519 |
520 the solder holding one of the chips melted and the ~ | |
521 xxx xxx xxx | |
522 | |
523 Using "/the$" we find this match: | |
524 | |
525 the solder holding one of the chips melted and the ~ | |
526 xxx | |
527 | |
528 And with "/^the" we find this one: | |
529 the solder holding one of the chips melted and the ~ | |
530 xxx | |
531 | |
18719 | 532 You can try searching with "/^the$"; it will only match a single line |
533 consisting entirely of "the". White space does matter here, thus if a line | |
534 contains a space after the word, like "the ", the pattern will not match. | |
7 | 535 |
536 | |
537 MATCHING ANY SINGLE CHARACTER | |
538 | |
539 The . (dot) character matches any existing character. For example, the | |
540 pattern "c.m" matches a string whose first character is a c, whose second | |
6530 | 541 character is anything, and whose third character is m. Example: |
7 | 542 |
543 We use a computer that became the cummin winter. ~ | |
544 xxx xxx xxx | |
545 | |
546 | |
547 MATCHING SPECIAL CHARACTERS | |
548 | |
549 If you really want to match a dot, you must avoid its special meaning by | |
550 putting a backslash before it. | |
551 If you search for "ter.", you will find these matches: | |
552 | |
553 We use a computer that became the cummin winter. ~ | |
554 xxxx xxxx | |
555 | |
556 Searching for "ter\." only finds the second match. | |
557 | |
558 ============================================================================== | |
559 *03.10* Using marks | |
560 | |
561 When you make a jump to a position with the "G" command, Vim remembers the | |
562 position from before this jump. This position is called a mark. To go back | |
563 where you came from, use this command: > | |
564 | |
565 `` | |
566 | |
567 This ` is a backtick or open single-quote character. | |
568 If you use the same command a second time you will jump back again. That's | |
18719 | 569 because the "`" command is a jump itself, and the position from before this |
570 jump is remembered. | |
7 | 571 |
572 Generally, every time you do a command that can move the cursor further than | |
573 within the same line, this is called a jump. This includes the search | |
574 commands "/" and "n" (it doesn't matter how far away the match is). But not | |
575 the character searches with "fx" and "tx" or the word movements "w" and "e". | |
18719 | 576 Also, "j" and "k" are not considered to be a jump, even when you use a |
7 | 577 count to make them move the cursor quite a long way away. |
578 | |
18719 | 579 The "``" command jumps back and forth, between two points. The CTRL-O command |
7 | 580 jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer |
18719 | 581 positions (Hint: for many common keyboard layouts, I is just next to O). |
582 Consider this sequence of commands: > | |
7 | 583 |
584 33G | |
585 /^The | |
586 CTRL-O | |
587 | |
588 You first jump to line 33, then search for a line that starts with "The". | |
589 Then with CTRL-O you jump back to line 33. Another CTRL-O takes you back to | |
590 where you started. If you now use CTRL-I you jump to line 33 again. And | |
591 to the match for "The" with another CTRL-I. | |
592 | |
593 | |
594 | example text ^ | | |
595 33G | example text | CTRL-O | CTRL-I | |
596 | example text | | | |
597 V line 33 text ^ V | |
598 | example text | | | |
599 /^The | example text | CTRL-O | CTRL-I | |
600 V There you are | V | |
601 example text | |
602 | |
603 Note: | |
604 CTRL-I is the same as <Tab>. | |
605 | |
606 The ":jumps" command gives a list of positions you jumped to. The entry which | |
607 you used last is marked with a ">". | |
608 | |
609 | |
255 | 610 NAMED MARKS *bookmark* |
7 | 611 |
612 Vim enables you to place your own marks in the text. The command "ma" marks | |
613 the place under the cursor as mark a. You can place 26 marks (a through z) in | |
614 your text. You can't see them, it's just a position that Vim remembers. | |
1121 | 615 To go to a mark, use the command `{mark}, where {mark} is the mark letter. |
7 | 616 Thus to move to the a mark: |
617 > | |
618 `a | |
619 | |
18719 | 620 The command "'mark" (single quotation mark, or apostrophe) moves you to the |
621 beginning of the line containing the mark. This differs from the "`mark" | |
622 command, which also moves you to the marked column. | |
7 | 623 |
624 The marks can be very useful when working on two related parts in a file. | |
625 Suppose you have some text near the start of the file you need to look at, | |
626 while working on some text near the end of the file. | |
627 Move to the text at the start and place the s (start) mark there: > | |
628 | |
629 ms | |
630 | |
1121 | 631 Then move to the text you want to work on and put the e (end) mark there: > |
7 | 632 |
633 me | |
634 | |
635 Now you can move around, and when you want to look at the start of the file, | |
636 you use this to jump there: > | |
637 | |
638 's | |
639 | |
640 Then you can use '' to jump back to where you were, or 'e to jump to the text | |
641 you were working on at the end. | |
642 There is nothing special about using s for start and e for end, they are | |
643 just easy to remember. | |
644 | |
645 You can use this command to get a list of marks: > | |
646 | |
647 :marks | |
648 | |
649 You will notice a few special marks. These include: | |
650 | |
651 ' The cursor position before doing a jump | |
652 " The cursor position when last editing the file | |
653 [ Start of the last change | |
654 ] End of the last change | |
655 | |
656 ============================================================================== | |
657 | |
658 Next chapter: |usr_04.txt| Making small changes | |
659 | |
14519 | 660 Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: |