diff options
Diffstat (limited to 'contrib/nvi/docs/tutorial/vi.beginner')
-rw-r--r-- | contrib/nvi/docs/tutorial/vi.beginner | 741 |
1 files changed, 0 insertions, 741 deletions
diff --git a/contrib/nvi/docs/tutorial/vi.beginner b/contrib/nvi/docs/tutorial/vi.beginner deleted file mode 100644 index 3bf35ac..0000000 --- a/contrib/nvi/docs/tutorial/vi.beginner +++ /dev/null @@ -1,741 +0,0 @@ -Section 1: {^F} {ZZ} - -To get out of this tutorial, type: ZZ (two capital Z's). - -Learning a new computer system implies learning a new text editor. These -tutorial lessons were created by Dain Samples to help you come to grips with -UC Berkeley's screen oriented editor called vi (for VIsual). This tutorial -uses the vi editor itself as the means of presentation. - -For best use of this tutorial, read all of a screen before performing any of -the indicated actions. This tutorial (or, at least, the first half of it) has -been designed to systematically present the vi commands IF THE INSTRUCTIONS -ARE FOLLOWED! If you are too adventuresome, you may find yourself lost. If -you ever find yourself stuck, remember the first line of this section. - -OK, now find the control key on your keyboard; it usually has CTL or CTRL -written on its upper surface. Your first assignment is to hold the control -key down while you press the 'F' key on your keyboard. Please do so now. - - - -Section 2: {^F} {^B} -Many of vi's commands use the control key and some other key in combination, -as with the control and the 'F' key above. This is abbreviated CTL-F, or ^F. - -As you have probably guessed by now, ^F (CTL-F) moves you forward a fixed -number of lines in the file. Throughout the remainder of the tutorial when -you are ready to advance to the next section of text, hit ^F. - -The opposite command is ^B. Just for fun, you might want to try a ^B to see -the previous section again. Be sure to do a ^F to return you here. - -Determine what the cursor looks like on your screen. Whatever it is (a box, -an underscore, blinking, flashing, inverse, etc.) it should now be positioned -in the upper left-hand corner of your screen under or on the S of Section. -Become familiar with your cursor: to use vi correctly it is important to -always know where the cursor is. - -Did you notice that when you do a ^F the cursor is left at the top of the -screen, and a ^B leaves the cursor near the bottom of the screen? Try the two -commands ^B^F again. And now do another ^F to see the next section. - -Section 3: {^F} {^B} -You now have two basic commands for examining a file, both forwards (^F) and -backwards (^B). - -Note that these are vi text editing commands: they are not commands for the -tutorial. Indeed, this tutorial is nothing but a text file which you are now -editing. Everything you do and learn in this tutorial will be applicable to -editing text files. - -Therefore, when you are editing a file and are ready to see more of the text, -entering ^F will get you to the next section of the file. Entering ^B will -show you the previous section. - -Time for you to do another ^F. - - - - - - - -Section 4: {^F} {^B} {^M} (return key) -We will adopt the notation of putting commands in curly braces so we can write -them unambiguously. For example, if you are to type the command sequence -"control B control F" (as we asked you to do above) it would appear as {^B^F}. -This allows clear delineation of the command strings from the text. Remember -that the curly braces are NOT part of the command string you are to type. Do -NOT type the curly braces. - -Sometimes, the command string in the curly braces will be rather long, and may -be such that the first couple of characters of the command will erase from -the screen the string you are trying to read and type. It is suggested that -you write down the longer commands BEFORE you type them so you won't forget -them once they disappear. - -Now locate the return key on your keyboard: it is usually marked 'RETURN', -indicate hitting the return key. In fact, the control-M key sequence is -exactly the same as if you hit the return key, and vice versa. - -Now type {^F}. - - -Section 5: {:q!} {ZZ} {^M} (return key) -Recognize that this tutorial is nothing more than a text file that you -are editing. This means that if you do something wrong, it is possible -for you to destroy the information in this file. Don't worry. If this -happens, type {ZZ} (two capital Z's) or {:q!^M} to leave the tutorial. -Restart the tutorial. Once in the tutorial, you can then page forward -with {^F} until you are back to where you want to be. (There are -easier ways to do this, some of which will be discussed later, but this -is the most straightforward.) - -You may want to write these commands down in a convenient place for quick -reference: {:q!^M} and {ZZ} - -We will assume that you now know to do a {^F} to advance the file - - - - - - - -Section 6: {m} {G} {'} {z} -Now that you know how to get around in the file via ^F and ^B let's look at -other ways of examining a text file. Sometimes it is necessary, in the midst -of editing a file, to examine another part of the file. You are then faced -with the problem of remembering your place in the file, looking at the other -text, and then getting back to your original location. Vi has a 'mark' -command, m. Type {mp}. You have just 'marked' your current location in the -file and given it the name 'p'. The command string below will do three -things: position you at the beginning of the file (line 1), then return you to -the location 'p' that you just marked with the 'm' command, and, since the -screen will not look exactly the same as it does right now, the 'z' command -will reposition the screen. (You may want to write the string down before -typing it: once you type {1G} it will no longer be on the screen.) - -So now type {1G'pz^M} - a one followed by a capital G, followed by the quote -mark, followed by a lower case 'p', then a lower case 'z', then a return -(which is the same as a ^M). The {1G} moves you to line 1, i.e. the beginning -of the file. The {'p} moves you to the location you marked with {mp}. The -{z^M} command will repaint the screen putting the cursor at the top of the -screen. (Now {^F}.) - -Section 7: {m} {G} {'} {z} -Let's look at some variations on those commands. If you wanted to look at -line 22 in the file and return to this location you could type {mp22G'p}. Do -so now, observing that {22G} puts your cursor at the beginning of section 2 in -the middle of the screen. - -Also note that, without the {z^M} command, the line with 'Section 7' on it is -now in the MIDDLE of the screen, and not at the top. Our cursor is on the -correct line (where we did the {mp} command) but the line is not where we -might like it to be on the screen. That is the function of the {z^M} command. -(Remember, ^M is the same as the 'return' key on your keyboard.) Type {z^M} -now and observe the effect. - -As you can see, the 'Section 7' line is now at the top of the screen with the -cursor happily under the capital S. If you would like the cursor line (i.e. -the line which the cursor is on) in the middle of the screen again, you would -type {z.}. If you wanted the cursor line to be at the BOTTOM of the screen, -type {z-}. Try typing {z-z.z^M} and watch what happens. - -{^F} - -Section 8: {z} {m} {'} - -Note that the z command does not change the position of our cursor in the file -itself, it simply moves the cursor around on the screen by moving the contents -of the file around on the screen. The cursor stays on the same line of the -file when using the z command. - -This brings up an important point. There are two questions that the users of -vi continually need to know the answer to: "Where am I in the file?" and -"Where am I on the screen?" The cursor on your terminal shows the answer to -both questions. Some commands will move you around in the file, usually -changing the location of the cursor on the screen as well. Other commands -move the cursor around on the screen without changing your location in the -file. - -Now type {ma}. Your location in the file has been given the name 'a'. If you -type {'p'a} you will see the previous location we marked in section 7, and -then will be returned to the current location. (You will want to do a {z^M} -to repaint the screen afterwards.) Try it. -{^F} - -Section 9: {m} {''} -Now we can move about in our file pretty freely. By using the {m} command we -can give the current cursor position a lower-case-character name, like 'p', -'a', 'e', 'm', or 'b'. Using the {G} command preceded by a line number we can -look at any line in the file we like. Using the single quote command {'} -followed by a character used in an {m} command, we can return to any location -in the file we have marked. - -However, try {m3}, or {mM}. You should hear a beep, or bell. Only lower-case -letters are acceptable to the {m} and {'} commands: numbers, upper-case -letters, and special characters are not acceptable. - -If you type the {'} command with a character that is lower-case alphabetic but -that has not been used in an {m} command, or for which the 'marked' text has -been deleted, you will also get a beep. Try {'i}. You should get a beep -because the command {mi} has never been issued. (Unless you've been -experimenting.) - -The command {''} attempts to return you to the location at which you last -modified some part of your file. However, my experience has been that it is -difficult to predict exactly where you will end up. -Section 10: {^M} {-} -Now do {ma}, marking your position at the top of the screen. Now hit {^M} (or -return) until the cursor is right ... -* <- here, over/under the asterisk. Now -type {mb'a'b} and watch the cursor move from the asterisk to the top of the -screen and back again. - -The {^M} command moves the cursor to the beginning of the next line. Now type -{^M} until the cursor is right ... -* <- here. The command to move the cursor to the beginning of the -previous line is {-}. Practice moving the cursor around on the screen by using -{^M} and {-}. BE CAREFUL to not move the cursor OFF the screen just yet. If -you do, type {'az^M}. - -Now we can move to any line within the screen. Practice moving around in the -file using the {^F}, {^B}, {-}, {^M}, {z}, and {'} commands. When you are -fairly confident that you can get to where you need to be in the file, and -position the cursor on the screen where you want it type {'az^M^F} (which, of -course, moves you back to the beginning of this section, repositions the -cursor at the top of the screen, and advances you to the next section). - -Section 11: scrolling: {^M} -The cursor should now be on the S of 'Section 11', and this should be on the -first line of the screen. If it is not, do {^M} or {-} as appropriate to put -the cursor on the section line, and type {z^M}. - -Type {mc} to mark your place. - -Now type {^M} until the cursor is on the last line of this screen. Now do one -more {^M} and observe the result. This is called scrolling. When you -attempted to move to a line not displayed on the screen, the line at the top of -the screen was 'scrolled off', and a line at the bottom of the screen was -'scrolled on'. The top line with 'Section 11' should no longer be visible. - -Now type {'cz^M} to reset the screen and type {^F} for the next section. - - - - - - - -Section 12: {-} {z} - -The {-} command moves the cursor to the previous line in the file. Now type -{-}, which attempts to move the cursor to the previous line in this file. -However, that line is not on the screen. The resulting action will depend on -your terminal. (Do a {^Mz^M} to reposition the file). On intelligent -terminals (e.g. VT100s, Z19s, Concept 100s), a top line is 'scrolled on' and -the bottom line is 'scrolled off'. Other terminals, however, may not have -this 'reverse scrolling' feature. They will simply repaint the screen with -the cursor line in the middle of the screen. On such terminals it is -necessary to type {z^M} to get the cursor line back to the top of the screen. - - - - - - - - - - -Section 13: -Up until this point, the tutorial has always tried to make sure that the first -line of each screen has on it the section number and a list of the commands -covered in that section. This will no longer be strictly maintained. If you -want the section line at the top of the screen, you now know enough commands to -do it easily: do {^M} or {-} until the cursor is on the section line and -then {z^M}. Also, from this point on, it may not be the case that a {^F} will -put you at the beginning of the next section. Therefore, be aware of where you -are in the file as we look at other commands. You may have to find your way -back to a particular section without any help from the tutorial. If you do not -feel comfortable with this, then it is suggested that you practice moving from -section 1 to section 13, back and forth, using {^M}, {-}, {^F}, and {^B} -commands for a while. - -Also make liberal use of the mark command {m}: if, for example, you make a -habit of using {mz} to mark your current location in the file, then you will -always be able to return to that location with {'z} if the editor does -something strange and you have no idea where you are or what happened. - -And finally, the proscription against experimentation is hereby lifted: play -with the editor. Feel free to try out variations on the commands and move -around in the file. By this time you should be able to recover from any gross -errors. - -Section 14: {^E} {^Y} {^D} {^U} -Let us now look at a few other commands for moving around in the file, and -moving the file around on the screen. Note that the commands we have already -looked at are sufficient: you really don't need any more commands for looking -in a file. The following commands are not absolutely necessary. However, -they can make editing more convenient, and you should take note of their -existence. But it would be perfectly valid to decide to ignore them on this -first pass: you can learn them later when you see a need for them, if you ever -do. - -First, let's clear up some potentially confusing language. In at least one -place in the official document ('An Introduction to Display Editing with Vi' -by William Joy, and Mark Horton, September 1980), the expression "to scroll -down text" means that the cursor is moved down in your file. However, note -that this may result in the text on the screen moving UP. This use of the -word 'scroll' refers to the action of the cursor within the file. However, -another legitimate use of the word refers to the action of the text on the -screen. That is, if the lines on your screen move up toward the top of the -screen, this would be 'scrolling the screen up'. If the lines move down -toward the bottom of the screen, this would be refered to as scrolling down. - -I have tried to maintain the following jargon: 'scrolling' refers to what the -text does on the screen, not to what the cursor does within the file. For the -latter I will refer to the cursor 'moving', or to 'moving the cursor'. I -realize that this is not necessarily consistent with Joy and Horton, but they -were wrong. - -{^E} scrolls the whole screen up one line, keeping the cursor on the same line, -if possible. However, if the cursor line is the first line on the screen, then -the cursor is moved to the next line in the file. Try typing {^E}. - -{^Y} scrolls the screen down one line, keeping the cursor on the same line, if -possible. However, if the cursor line is the last line on the screen, then the -cursor is moved to the previous line in the file. Try it. - -{^D} moves the cursor down into the file, scrolling the screen up. - -{^U} moves the cursor up into the file, also scrolling the screen if the -terminal you are on has the reverse scroll capability. Otherwise the -screen is repainted. - -Note that {^E} and {^Y} move the cursor on the screen while trying to keep the -cursor at the same place in the file (if possible: however, the cursor can -never move off screen), while {^D} and {^U} keep the cursor at the same place -on the screen while moving the cursor within the file. - -Section 15: {/ .. /^M} - -Another way to position yourself in the file is by giving the editor a string -to search for. Type the following: {/Here 1/^M} and the cursor should end up -right ...........................here ^. Now type {/Section 15:/^M} and the -cursor will end up over/on .....................here ^. Now type {//^M} and -observe that the cursor is now over the capital S five lines above this line. -Typing {//^M} several more times will bounce the cursor back and forth between -the two occurrences of the string. In other words, when you type a string -between the two slashes, it is searched for. Typing the slashes with nothing -between them acts as if you had typed the previous string again. - -Observe that the string you type between the two slashes is entered on the -bottom line of the screen. Now type {/Search for x /^M} except replace the 'x' -in the string with some other character, say 'b'. The message "Pattern not -found" should appear on the bottom of the screen. If you hadn't replaced the -'x', then you would have found the string. Try it. - -Section 16: {? .. ?^M} {n} (search strings: ^ $) - -When you surround the sought-for string with slashes as in {/Search/}, the -file is searched beginning from your current position in the file. If the -string is not found by the end of the file, searching is restarted at the -beginning of the file. However, if you do want the search to find the -PREVIOUS rather than the NEXT occurrence of the string, surround the string -with question marks instead of slash marks. - -Below are several occurrences of the same string. -Here 2 Here 2 Here 2 - Here 2 Here 2. -Observe the effect of the following search commands (try them in the -sequence shown): -{/Here 2/^M} {//^M} {??^M} -{/^Here 2/^M} {//^M} {??^M} -{/Here 2$/^M} {//^M} {??^M} - -The first command looks for the next occurrence of the string 'Here 2'. -However the second line of commands looks for an occurrence of 'Here 2' that -is at the beginning of the line. When the up-arrow is the first character of -a search string it stands for the beginning of the line. When the dollar-sign -is the last character of the search string it stands for the end of the line. -Therefore, the third line of commands searches for the string only when it is -at the end of the line. Since there is only one place the string begins a -line, and only one place the string ends the line, subsequent {//^M} and -{??^M} will find those same strings over and over. - -The {n} command will find the next occurrence of the / or ? search -string. Try {/Here 2/^M} followed by several {n} and observe the -effect. Then try {??^M} followed by several {n}. The {n} command -remembers the direction of the last search. It is just a way to save a -few keystrokes. - -Section 17: \ and magic-characters in search strings - -Now type {/Here 3$/^M}. You might expect the cursor to end up -right......^ here. However, you will get "Pattern not found" at the bottom of -the screen. Remember that the dollar-sign stands for the end of the line. -Somehow, you must tell vi that you do not want the end of the line, but a -dollar-sign. In other words, you must take away the special meaning that the -dollar-sign has for the search mechanism. You do this (for any special -character, including the up-arrow ^) by putting a back-slash ('\', not '/') in -front of the character. - -Now try {/Here 3\$/^M} and you should end up nine lines above this one. Try -{//^M} and note that it returns you to the same place, and not to the first -line of this paragraph: the back-slash character is not part of the search -string and will not be found. To find the string in the first line of this -paragraph, type {/Here 3\\\$/^M}. There are three back-slashes: the first takes -away the special meaning from the second, and the third takes away the special -meaning from the dollar-sign. - -Following is a list of the characters that have special meanings in search -strings. If you wish to find a string containing one of these characters, you -will have to be precede the character with a backslash. These characters are -called magic characters because of the fun and games you can have with them -and they can have with you, if you aren't aware of what they do. - - ^ - (up-arrow) beginning of a line - $ - (dollar-sign) end of a line - . - (period) matches any character - \ - (backslant) the escape character itself - [ - (square bracket) for finding patterns (see section #SEARCH) - ] - (square bracket) ditto - * - (asterisk) ditto - -Without trying to explain it here, note that {:set nomagic^M} turns off the -special meanings of all but the ^ up-arrow, $ dollar-sign, and backslash -characters. - -Section 18: {: (colon commands)} {ZZ} - -In this section we will discuss getting into and out of the editor in more -detail. If you are editing a file and wish to save the results the command -sequence {:w^M} writes the current contents of the file out to disk, using the -file name you used when you invoked the editor. That is, if you are at the -command level in Unix, and you invoke vi with {vi foo} where foo is the name -of the file you wish to edit, then foo is the name of the file used by the -{:w^M} command. - -If you are done, the write and quit commands can be combined into a single -command {:wq^M}. An even simpler way is the command {ZZ} (two capital Z's). - -If, for some reason, you wish to exit without saving any changes you have made, -{:q!^M} does the trick. If you have not made any changes, the exclamation -point is not necessary: {:q^M}. Vi is pretty good about not letting you -get out without warning you that you haven't saved your file. - -We have mentioned before that you are currently in the vi editor, editing a -file. If you wish to start the tutorial over from the very beginning, you -could {ZZ}, and then type {vi.tut beginner} in response to the Unix prompt. -This will create a fresh copy of this file for you, which might be necessary -if you accidentally destroyed the copy you were working with. Just do a -search for the last section you were in: e.g. {/Section 18:/^Mz^M}. - -Section 19: {H} {M} {L} - -Here are a few more commands that will move you around on the screen. Again, -they are not absolutely necessary, but they can make screen positioning easier: - -{H} - puts the cursor at the top of the screen (the 'home' position) - -{M} - puts the cursor in the middle of the screen - -{L} - puts the cursor at the bottom of the screen. - -Try typing {HML} and watch the cursor. - -Try typing {5HM5L} and note that 5H puts you five lines from the top of the -screen, and 5L puts you five lines from the bottom of the screen. - -Section 20: {w} {b} {0} {W} {B} {e} {E} {'} {`} - -Up to this point we have concentrated on positioning in the file, and -positioning on the screen. Now let's look at positioning in a line. Put the -cursor at the beginning of the following line and type {z^M}: - -This is a test line: your cursor should initially be at its beginning. - -The test line should now be at the top of your screen. Type {w} several times. -Note that it moves you forward to the beginning of the next word. Now type -{b} (back to the beginning of the word) several times till you are at the -beginning of the line. (If you accidentally type too many {b}, type {w} until -you are on the beginning of the line again.) Type {wwwww} (five w's) and note -that the cursor is now on the colon in the sentence. The lower-case w command -moves you forward one word, paying attention to certain characters such as -colon and period as delimiters and counting them as words themselves. Now -type {0} (zero, not o 'oh'): this moves you to the beginning of the current -line. Now type {5w} and notice that this has the effect of repeating {w} five -times and that you are now back on the colon. Type {0} (zero) again. To -ignore the delimiters and to move to the beginning of the next word using only -blanks, tabs and carriage-returns (these are called white-space characters) to -delimit the words, use the {W} command: upper-case W. {B} takes you back a -word using white-space characters as word delimiters. - -Note that the commands {wbWB} do not stop at the beginning or end of a line: -they will continue to the next word on the next line in the direction specified -(a blank line counts as a word). - -If you are interested in the END of the word, and not the BEGINNING, then use -the {e} and {E} commands. These commands only move forward and there are no -corresponding 'reverse search' commands for the end of a word. - -Also, we have been using the {'} command to move the cursor to a position that -we have previously marked with the {m} command. However, position the cursor -in the middle of a line (any line, just pick one) and type {mk}, marking that -position with the letter k. Now type a few returns {^M} and type {'k}. -Observe that the cursor is now at the beginning of the line that you marked. -Now try {`k}: note that this is the reverse apostrophe, or back-quote, or grave -accent, or whatever you want to call it. Also note that it moves you to the -character that was marked, not just to the line that was marked. - -In addition, the {``} command works just like the {''} command except that you -are taken to the exact character, not just to the line. (I'm still not -sure which exact character, just as I'm still not sure which line.) - -Section 21: {l} {k} {j} {h} - -There are several commands to move around on the screen on a character by -character basis: - -l - moves the cursor one character to the RIGHT -k - moves the cursor UP one line -j - moves the cursor DOWN one line -h - moves the cursor one character to the LEFT - -Section 22: {i} {a} {I} {A} {o} {O} ^[ (escape key) - -For this and following sections you will need to use the ESCAPE key on your -terminal. It is usually marked ESC. Since the escape key is the same as -typing {^[} we will use ^[ for the escape key. - -Probably the most often used command in an editor is the insert command. Below -are two lines of text, the first correct, the second incorrect. Position your -cursor at the beginning of Line 1 and type {z^M}. - -Line 1: This is an example of the insert command. -Line 2: This is an of the insert command. - -To make line 2 look like line 1, we are going to insert the characters -'example ' before the word 'of'. So, now move the cursor so that it is -positioned on the 'o' of 'of'. (You can do this by typing {^M} to move -to the beginning of line 2, followed by {6w} or {wwwwww} to position the cursor -on the word 'of'.) - -Now carefully type the following string and observe the effects: - {iexample ^[} (remember: ^[ is the escape key)} -The {i} begins the insert mode, and 'example ' is inserted into the line: -be sure to notice the blank in 'example '. The ^[ ends insertion mode, -and the line is updated to include the new string. Line 1 should look exactly -like Line 2. - -Move the cursor to the beginning of Line 3 below and type {z^M}: - -Line 3: These lines are examples for the 'a' command. -Line 4: These line are examples for the ' - -We will change line four to look like line three by using the append command. -We need to append an 's' to the word 'line'. Position the cursor on the 'e' -of 'line'. You can do this in several ways, one way is the following: -First, type {/line /^M}. This puts us on the word 'line' in Line 4 -(the blank in the search string is important!). Next, type {e}. The 'e' puts -us at the end of the word. Now, type {as^[ (^[ is the escape character)}. -The 'a' puts us in insert mode, AFTER the current character. We appended the -'s', and the escape ^[ ended the insert mode. - -The difference between {i} (insert) and {a} (append) is that {i} begins -inserting text BEFORE the cursor, and {a} begins inserting AFTER the cursor. - -Now type {Aa' command.^[}. The cursor is moved to the end of the line and the -string following {A} is inserted into the text. Line 4 should now look like -line 3. - -Just as {A} moves you to the end of the line to begin inserting, {I} would -begin inserting at the FRONT of the line. - -To begin the insertion of a line after the cursor line, type {o}. To insert a -line before the cursor line, type {O}. In other words {o123^[} is equivalent -to {A^M123^[}, and {O123^[} is equivalent to {I123^M^[}. The text after the -{o} or {O} is ended with an escape ^[. - -This paragraph contains information that is terminal dependent: you will just -have to experiment to discover what your terminal does. Once in the insert -mode, if you make a mistake in the typing, ^H will delete the previous -character up to the beginning of the current insertion. ^W will delete the -previous word, and one of ^U, @, or ^X will delete the current line (up to the -beginning of the current insertion). You will need to experiment with ^U, @, -and ^X to determine which works for your terminal. - -Section 23: {f} {x} {X} {w} {l} {r} {R} {s} {S} {J} - -Position the cursor at the beginning of line 5 and {z^M}: - -Line 5: The line as it should be. -Line 6: The line as it shouldn't be. - -To make Line 6 like Line 5, we have to delete the 'n', the apostrophe, and the -'t'. There are several ways to position ourselves at the 'n'. Choose -whichever one suits your fancy: - -{/n't/^M} -{^M7w6l} or {^M7w6 } (note the space) -{^M3fn} (finds the 3rd 'n' on the line) - -Now {xxx} will delete the three characters, as will {3x}. - -Note that {X} deletes the character just BEFORE the cursor, as opposed -to the character AT the cursor. - -Position the cursor at line 7 and {z^M}: - -Line 7: The line as it would be. -Line 8: The line as it could be. - -To change line 8 into line 7 we need to change the 'c' in 'could' into a 'w'. -The 'r' (replace) command was designed for this. Typing {rc} is the same as -typing {xic^[} (i.e. delete the 'bad' character and insert the correct -new character). Therefore, assuming that you have positioned the cursor on the -'c' of 'could', the easiest way to change 'could' into 'would' is {rw}. - -If you would like to now change the 'would' into 'should', use the substitute -command, 's': {ssh^[}. The difference between 'r' and 's' is that 'r' -(replace) replaces the current character with another character, while 's' -(substitute) substitutes the current character with a string, ended with an -escape. - -The capital letter version of replace {R} replaces each character by a -character one at a time until you type an escape, ^[. The 'S' command -substitutes the whole line. - -Position your cursor at the beginning of line 9 and {z^M}. - -Line 9: Love is a many splendored thing. -Line 10: Love is a most splendored thing. - -To change line 10 into line 9, position the cursor at the beginning of 'most', -and type {Rmany^[}. - -You may have noticed that, when inserting text, a new line is formed by typing -{^M}. When changing, replacing, or substituting text you can make a new line -by typing {^M}. However, neither {x} nor {X} will remove ^M to make two lines -into one line. To do this, position the cursor on the first of the two lines -you wish to make into a single line and type {J} (uppercase J for 'Join'). - -Section 24: {u} {U} - -Finally, before we review, let's look at the undo command. Position -your cursor on line 11 below and {z^M}. - -Line 11: The quick brown fox jumped over the lazy hound dog. -Line 12: the qwick black dog dumped over the laxy poune fox. - -Type the following set of commands, and observe carefully the effect of each -of the commands: - -{/^Line 12:/^M} {ft} {rT} {fw} {ru} {w} {Rbrown fox^[} {w} {rj} -{fx} {rz} {w} {Rhound dog^[} - -Line 12 now matches line 11. Now type {U} - capital 'U'. And line 12 now -looks like it did before you typed in the command strings. Now type: - -{ft} {rT} {fw} {ru} {^M} {^M} - -and then type {u}: the cursor jumps back to the line containing the second -change you made and 'undoes' it. That is, {U} 'undoes' all the changes on the -line, and {u} 'undoes' only the last change. Type {u} several times and -observe what happens: {u} can undo a previous {u}! - -Caveat: {U} only works as long as the cursor is still on the line. Move the -cursor off the line and {U} will have no effect, except to possibly beep at -you. However, {u} will undo the last change, no matter where it occurred. - -Section 25: review - -At this point, you have all the commands you need in order to make use of vi. -The remainder of this tutorial will discuss variations on these commands as -well as introduce new commands that make the job of editing more efficient. -Here is a brief review of the basic commands we have covered. They are listed -in the order of increasing complexity and/or decreasing necessity (to say that -a command is less necessary is not to say that it is less useful!). These -commands allow you to comfortably edit any text file. There are other -commands that will make life easier but will require extra time to learn, -obviously. You may want to consider setting this tutorial aside for several -weeks and returning to it later after gaining experience with vi and getting -comfortable with it. The convenience of some of the more exotic commands may -then be apparent and worth the extra investment of time and effort -required to master them. - -to get into the editor from Unix: {vi filename} -to exit the editor - saving all changes {ZZ} or {:wq^M} - throwing away all changes {:q!^M} - when no changes have been made {:q^M} -save a file without exiting the editor {:w^M} -write the file into another file {:w filename^M} -insert text - before the cursor {i ...text... ^[} - at the beginning of the line {I ...text... ^[} - after the cursor (append) {a ...text... ^[} - at the end of the line {A ...text... ^[} - after the current line {o ...text... ^[} - before the current line {O ...text... ^[} -delete the character ... - under the cursor {x} - to the left of the cursor {X} -delete n characters {nx} or {nX} (for n a number) -make two lines into one line (Join) {J} -find a string in the file ... - searching forward {/ ...string... /^M} - searching backwards {? ...string... ?^M} -repeat the last search command {n} -repeat the last search command in the - opposite direction {N} -find the character c on this line ... - searching forward {fc} - searching backward {Fc} -repeat the last 'find character' command {;} -replace a character with character x {rx} -substitute a single character with text {s ...text... ^[} -substitute n characters with text {ns ...text... ^[} -replace characters one-by-one with text {R ...text... ^[} -undo all changes to the current line {U} -undo the last single change {u} -move forward in the file a "screenful" {^F} -move back in the file a "screenful" {^B} -move forward in the file one line {^M} or {+} -move backward in the file one line {-} -move to the beginning of the line {0} -move to the end of the line {$} -move forward one word {w} -move forward one word, ignoring punctuation {W} -move forward to the end of the next word {e} -to the end of the word, ignoring punctuation{E} -move backward one word {b} -move back one word, ignoring punctuation {B} -return to the last line modified {''} -scroll a line onto the top of the screen {^Y} -scroll a line onto the bottom of the screen {^E} -move "up" in the file a half-screen {^U} -move "down" in the file a half-screen {^D} -move the cursor to the top screen line {H} -move the cursor to the bottom screen line {L} -move the cursor to the middle line {M} -move LEFT one character position {h} or {^H} -move RIGHT one character position {l} or { } -move UP in the same column {k} or {^P} -move DOWN in the same column {j} or {^N} -mark the current position, name it x {mx} -move to the line marked/named x {'x} -move to the character position named x {`x} -move to the beginning of the file {1G} -move to the end of the file {G} -move to line 23 in the file {23G} -repaint the screen with the cursor line - at the top of the screen {z^M} - in the middle of the screen {z.} - at the bottom of the screen {z-} - -More information on vi can be found in the file vi.advanced, which you can -peruse at your leisure. From UNIX, type {vi.tut advanced^M}. |