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