• 沒有找到結果。

The Tutorial

N/A
N/A
Protected

Academic year: 2022

Share "The Tutorial"

Copied!
572
0
0

加載中.... (立即查看全文)

全文

(1)

The Tutorial

1 Basic Editing

2 Editing a Little Faster 3 Searching

4 Text Blocks and Multiple Files 5 Windows

6 Basic Visual Mode

7 Commands for Programmers

8 Basic Abbreviations, Keyboard Mapping, and Initialization Files 9 Basic Command-Mode Commands

10 Basic GUI Usage 11 Dealing with Text Files 12 Automatic Completion 13 Autocommands

14 File Recovery and Command-Line Arguments 15 Miscellaneous Commands

16 Cookbook

17 Topics Not Covered

(2)
(3)

Basic Editing

T

HE VIM EDITOR IS ONE OF THE MOST powerful text editors around. It is also

extremely efficient, enabling the user to edit files with a minimum of keystrokes.This power and functionality comes at a cost, however:When getting started, users face a steep learning curve.

This chapter teaches you the basic set of 10Vim commands you need to get started editing. In this chapter, you learn the following:

n The four basic movement commands

n How to insert and delete text

n How to get help (very important)

n Exiting the editor

After you get these commands down pat, you can learn the more advanced editing commands.

Before You Start

If you have not installedVim, you need to read Appendix A, “InstallingVim,” and install the editor.

(4)

4 Chapter 1 Basic Editing

If you are running on UNIX, execute the following command:

$ touch ~/.vimrc

By creating a~/.vimrc, you tell Vim that you want to use it in Vim mode. If this file is not present, Vim runs in Vi-compatibility mode and you lose access to many of the advanced Vim features. However, you can enable the advanced features from within Vim at any time with this command: :set nocompatible<Enter>.

If you are running on Microsoft Windows, the installation process creates the Microsoft Windows version of this file, _vimrc, for you.

Running Vim for the First Time

To start Vim, enter this command:

$ gvim file.txt

Note that the$ is the default UNIX command prompt.Your prompt might differ.

If you are running Microsoft Windows, open an MS-DOS prompt window and enter this command:

C:> gvim file.txt

(Again, your prompt may differ.)

In either case, Vim starts editing a file calledfile.txt. Because this is a new file, you get a blank window. Figure 1.1 shows what your screen will look like.

The tilde (~) lines indicate lines not in the file. In other words, when Vim runs out of file to display, it displays tilde lines. At the bottom of a screen, a message line indi- cates the file is namedfile.txt and shows that you are creating a new file.The mes- sage information is temporary and other information overwrites it when you type the first character.

~

~

~~

~

~

~

~

“file.txt” [New File]

Figure 1.1 Initial Vim window.

(5)

5 Editing for the First Time

The vim Command

The gvim command causes the editor to create a new window for editing. If you use the commandvim, the editing occurs inside your command window. In other words, if you are running inside an xterm, the editor uses your xterm window. If you are using an MS-DOS command prompt window under Microsoft Windows, the editing occurs inside the window. Figure 1.2 shows a typical MS-DOS command prompt window.

A very intelligent turtle

Found programming UNIX a hurdle The system, you see, Ran as slow as did he, And that's not saying much for the turtle.

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

"turtle.txt" 5L, 158C 1,1 All

Figure 1.2 Editing with thevim command in an MS-DOS window.

Modes

TheVim editor is a modal editor.That means that the editor behaves differently, depending on which mode you are in. If the bottom of the screen displays the file- name or is blank, you are in normal mode. If you are in insert mode, the indicator dis- plays--INSERT--; and if you are in visual mode, the indicator shows--VISUAL--.

Editing for the First Time

The next few sections show you how to edit your first file. During this process, you learn the basic commands that you have to know to use Vim. At the end of this lesson, you will know how to edit—not fast, not efficiently, but enough to get the job done.

Inserting Text

To enter text, you need to be in insert mode.Typei, and notice that the lower left of the screen changes to--INSERT-- (meaning that you are in insert mode).

(6)

6 Chapter 1 Basic Editing

Now type some text. It will be inserted into the file. Do not worry if you make mistakes; you can correct them later. Enter the following programmer’s limerick:

A very intelligent turtle

Found programming UNIX a hurdle The system, you see,

Ran as slow as did he,

And that’s not saying much for the turtle.

After you have finished inserting, press the<Esc> key.The--INSERT-- indicator goes away and you return to command mode.

Your screen should now look something like Figure 1.3.

Note

You can also move the cursor by using the arrow keys. If you do, however, you greatly slow down your editing—because to press the arrow keys, you must move your hand from the text keys to the arrow keys.

Considering that you might be doing it hundreds of times an hour, this can take a significant amount of time. If you want to edit efficiently, useh,j,k, andl.

Also, there are keyboards which do not have arrow keys, or which locate them in unusual places;

therefore, knowing the use of these keys helps in those situations.

A very intelligent turtle

Found programming UNIX a hurdle The system, you see, Ran as slow as did he,

And that's not saying much for the turtle.

~

~

~

~

Figure 1.3 Screen after the text has been inserted.

Getting Out of Trouble

One of the problems forVim novices is mode confusion, which is caused by forgetting which mode you are in or by accidentally typing a command that switches modes.To get back to normal mode, no matter what mode you are in, press the<Esc> key.

Moving Around

After you return to command mode, you can move around by using these keys: h (left), j (down), k (up), andl (right). At first, it may appear that these commands were chosen at random. After all, who ever heard of usingl for right? But actually, there is a very good reason for these choices: Moving the cursor is the most common thing you do in an editor, and these keys are on the home row of your right hand. In other words, these commands are placed where you can type them the fastest.

(7)

Editing for the First Time 7

One way to remember these commands is thath is on the left, l is on the right, j is a hook down, andk points up. Another good way to remember the commands is to copy this information on a Post-It Note and put it on the edge of your monitor until you get used to these commands.

Note

Vim is a text editor. By default, it does not wrap text. You must end each line by pressing the <Enter>

key. If you don’t and just keep typing when you reach the right margin, all you will do is insert a very long line into the editor. You will not automatically go to the next line. To do so, you need to press the

<Enter> key. (This is the default mode of operation. You can configure theVim editor to word wrap, how- ever, as discussed in Chapter 11, “Dealing with Text Files.”)

intelligent turtle

Found programming UNIX a hurdle The system, you see, Ran as slow as did he,

And that's not saying much for the turtle.

~

~

~

~

Figure 1.4 Screen after delete (xxxxxxxx).

A young intelligent turtle Found programming UNIX a hurdle The system, you see, Ran as slow as did he,

And that's not saying much for the turtle.

~

~

~

~

Figure 1.5 Result of the insert.

h

k

l

j

Deleting Characters

To delete a character, move the cursor over it and type x. (This is a throwback to the old days of the typewriter, when you deleted things by typing xxxx over them.)

Move the cursor to the beginning of the first line, for example, and typexxxxxxx

(eight x’s) to delete the first eight characters on the line. Figure 1.4 shows the result.

To enter a correction, typeiA young <Esc>.This begins an insert (thei), inserts the wordsA young, and then exits insert mode (the final<Esc>). Figure 1.5 shows the results.

(8)

8 Chapter 1 Basic Editing

Undo and Redo

Suppose you delete too much.Well, you could type it in again, but an easier way exists.Theu command undoes the last edit.

Take a look at this in action. Move the cursor to the

A

in the first line. Now type xxxxxxx to delete A young.The result is as follows:

intelligent turtle

Typeu to undo the last delete.That delete removed theg, so the undo restores the character.

g intelligent turtle

The nextu command restores the next-to-last character deleted:

ng intelligent turtle

The nextu command gives you the u, and so on:

ung intelligent turtle oung intelligent turtle young intelligent turtle young intelligent turtle A young intelligent turtle

If you undo too many times, you can pressCTRL-R (redo) to reverse the preceding command. In other words, it undoes the undo.

To see this in action, pressCTRL-R twice.The character

A

and the space after it disappear.

young intelligent turtle

There’s a special version of the undo command, theU (undo line) command.The undo line command undoes all the changes made on the last line that was edited.

Typing this command twice cancels the precedingU.

Note

If you are an oldVi user, note that the multilevel undo ofVim differs significantly from the single level available to aVi user.

Note

Throughout this book we assume that you have turned offVi compatibility. (Vi compatiblity disables many advanced features ofVim in order to be compatible withVi.) This feature is automatically turned off for Unix users when they create the$HOME/.vimrc file. For Microsoft Windows, it is turned off during installation. (If compatibility is turned on the v command provides one level of undo.)

(9)

9

Other Editing Commands

A very intelligent turtle

xxxx Delete very A intelligent turtle

xxxxxx Delete turtle A intelligent

Restore line with U A very intelligent turtle

A intelligent Second U undoes the preceding U

Getting Out

To exit, use theZZ command.This command writes the file and exits.

Unlike many other editors, Vim does not automatically make a backup file. If you typeZZ, your changes are committed and there’s no turning back. (You can configure the Vim editor to produce backup files, as discussed in Chapter 14,“File Recovery and Command-Line Arguments.”)

Discarding Changes

Sometimes you will make a set of changes and suddenly realize you were better off before you started. Don’t worry; Vim has a “quit-and-throw-things-away” command. It is:q!.

For those of you interested in the details, the three parts of this command are the colon (:), which enters command mode; theq command, which tells the editor to quit; and the override command modifier (!).The override command modifier is needed because Vim is reluctant to throw away changes. Because this is a command mode command, you need to type<Enter> to finish it. (All command mode com- mands have<Enter> at the end.This is not shown in the text.)

If you were to just type:q, Vim would display an error message and refuse to exit:

No write since last change (use ! to override)

By specifying the override, you are in effect telling Vim, “I know that what I’m doing looks stupid, but I’m a big boy and really want to do this.”

Other Editing Commands

Now that you have gone through a few simple commands, it is time to move on to some slightly more complex operations.

Inserting Characters at the End of a Line

The i command inserts a characterbefore the character under the cursor.That works fine; but what happens if you want to add stuff to the end of the line? For that you need to insert text after the cursor.This is done with thea (append) command.

(10)

10 Chapter 1 Basic Editing

For example, to change the line

and that’s not saying much for the turtle.

to

and that’s not saying much for the turtle!!!

move the cursor over to the dot at the end of the line.Then typex to delete the period.The cursor is now positioned at the end of the line on thee in turtle:

and that’s not saying much for the turtle

Now typea!!!<Esc> to append three exclamation points after thee in turtle:

and that’s not saying much for the turtle!!!

Deleting a Line

To delete a line, use thedd command, which deletes the line on which the cursor is positioned.To delete the middle line of this example, for instance, position the cursor anywhere on the lineThe system, you see, as shown in Figure 1.6.

Now typedd. Figure 1.7 shows the results.

Opening Up New Lines

To add a new line, use theo command to open up a new linebelow the cursor.The editor is then placed in insert mode.

A very intelligent turtle

Found programming UNIX a hurdle Thesystem, you see, Ran as slow as did he,

And that's not saying much for the turtle!!!

~

~

"turtle.txt" 5L, 155c written

Figure 1.6 Screen beforedd command.

A very intelligent turtle

Found programming UNIX a hurdle Ran as slow as did he,

And that's not saying much for the turtle!!!

~

~~

Figure 1.7 Screen afterdd command.

(11)

Other Editing Commands 11

Suppose, for example, that you want to add a line to the sample text just below the third line. Start by leaving the cursor on theRan as slow. . . line, as seen in Figure 1.7.

Now typeo to open up a new line. Enter the text for the line and then press<Esc>

to end insert mode. Figure 1.8 shows the results.

If you want to open a line above the cursor, use theO (uppercase) command.

A very intelligent turtle

Found programming UNIX a hurdle Ran as slow as did he, and that was very slow.

And that's not saying much for the turtle.

~

~

~

~

Figure 1.8 Screen after using theo command.

k h l

j

*help.txt* For Vim version 5.7. Last change: 2000 Jan 01

VIM - main help file

Move around: Use the cursor keys, or "h" to go left,

"j" to go down, "k" to go up, "l" to go right.

Close this window: Use ":q<Enter>".

Get out of Vim: Use ":qa!<Enter>" (careful, all changes are lost!).

Jump to a subject: Position the cursor on a tag between|bars|and hit CTRL-].

With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI).

Double-click the left mouse button on a tag between|bars|. jump back: Type CTRL-T or CTRL-O.

Get specific help: It is possible to go directly to whatever you want help

on, by giving an argument to the ":help" command|:help|. It is possible to further specify the context:

WHAT PREPEND EXAMPLE

Normal mode commands (nothing) :help x

Visual mode commands v_ :help v_u

Insert mode commands i_ :help i_<Esc>

Command-line commands : :help :quit

help.txt [help][RO]

[No File]

"help.txt" [readonly] 1297L, 61009C

Figure 1.9 Help screen.

Help

Finally, there’s one more important command, the help command.To get help, enter the following:

:help

(Remember the implied<Enter> for command-mode commands.) This displays a general help window, as seen in Figure 1.9.

(12)

12 Chapter 1 Basic Editing

If you don’t supply a subject, :help displays the general help window.The creators of Vim did something very clever (or very lazy) with the help system.They made the help window a normal editing window.You can use all the normal Vim commands to move through the help information.Thereforeh, k, j, and l move left, up, down, right, and so on.

To get out of the help system, use the same command you use to get out of the editor: ZZ.

As you read the help text, you will notice some text enclosed in vertical bars (for example, |:help|).This indicates a hyperlink. If you position the cursor anywhere between the bars and pressCTRL+] (jump to tag), the help system takes you to the indicated subject. (For reasons not discussed here, the Vim terminology for a hyperlink is tag. SoCTRL+] jumps to the location of the tag given by the word under the cursor.)

After a few jumps, you might want to go back. CTRL+T (pop tag) takes you back to the preceding screen. Or in Vim terms, it “pops a tag off the tag stack.”

At the top of this screen, there is the notation*help.txt*.This is used by the help system to define a tag (hyperlink destination). Chapter 7, “Commands for Programmers,” explains tags in detail.

To get help on a given subject, use the following command:

:help subject

To get help on thex command, for example, enter the following:

:help x

To find out how to delete text, use this command:

:help deleting

To get a complete index of what is available, use the following command:

:help index

When you need to get help for a control character command (for example, CTRL-A, you need to spell it with the prefix CTRL-.

:help CTRL-A

The Vim editor has many different modes. By default, the help system displays the normal-mode commands. For example, the following command displays help for the normal-modeCTRL-H command:

:help CTRL-H

To identify other modes, use a mode prefix.

If you want the help for the insert-mode version of this command, prefix the key withi_.This gives you the following command:

:help i_CTRL-H

Table 1.1 lists several other mode prefixes.

(13)

13

Using a Count to Edit Faster

When you start theVim editor, you can use several command-line options.These all begin with a dash (-).To find what the-t command-line option does, for example, use the command

:help -t

TheVim editor has a number of options that enable you to configure and customize the editor. If you want help for an option, you need to enclose it in single quotation marks.To find out what thenumber option does, for example, use the following command:

:help ‘number’

The following table summarizes the special prefixes.

Table 1.1 Help Prefixes

What Prefix Example

Normal-mode commands (nothing) :help x

Control character CTRL- :help CTRL-u

Visual-mode commands v :help v_u

Insert-mode commands i :help i_<Esc>

ex-mode commands : :help :quit

Command-line editing c :help c_<Del>

Vim command arguments - :help -r

Options (both ends) :help ‘textwidth’

Special keys are enclosed in angle brackets.To find help on the up-arrow key, for instance, use this command:

:help <Up>

Appendix B, “The <> Key Names,” provides a complete list of the key names.

Other Ways to Get Help

You can get to the help screen by pressing the <F1> key.This displays the general help screen, and you can navigate from there. If your keyboard has a <Help> key, you can use it as well.

Using a Count to Edit Faster

Suppose you want to move up nine lines.You can typekkkkkkkkk or you can enter the command9k.

In fact, you can precede all the movement commands with a number. Earlier in this chapter, for instance, you added three exclamation points to the end of a line by typ- inga!!!<Esc>. Another way to do this is to use the command3a!<Esc>.The count of

3 tells thea command to insert what follows (!) three times.

Similarly, to delete three characters, use the command3x.

(14)

14 Chapter 1 Basic Editing

The Vim Tutorial

The UNIX version of theVim editor comes with an interactive tutorial. Lesson 1 covers many of the commands described in this chapter.

To invoke the tutorial on UNIX, use the following command:

$ vimtutor

The tutorial starts by explaining the movement commands so that you can move through the tutorial. After that it gradually introduces more complex commands.

If you are on a non-Unix system, execute the command

:help tutor

for information on how to get theVim tutorial working on your system (it isn’t difficult).

Summary

You now know enough to edit withVim. Not well or fast, but you can edit.Take some time to practice with these commands before moving on to the next chapter.

After you absorb these commands, you can move on to the more advanced commands that enable you to edit faster and easier.

(15)

Editing a Little Faster

T

HE BASIC COMMANDS COVERED IN CHAPTER 1,“Basic Editing,”enable you to edit text.This chapter covers some additional commands that enable you to edit more effi- ciently.These commands include the following:

n Additional movement commands

n Quick searches along a single line

n Additional delete and change commands

n The repeat command

n Keyboard macros (how to record and play back commands)

n Digraphs

One of the things I noticed as I wrote this chapter is the amazing number of different ways you can move through a file. Although I have been usingVi and nowVim as my main editor for the past 15 years, I have never bothered to learn all of them. I get by with the 10% I like.

There are lots of different ways of doing things inVim.This chapter discusses one useful selection of all the possible commands.

(16)

16 Chapter 2 Editing a Little Faster

Word Movement

Let’s start with movement.To move the cursor forward one word, use thew command.

The b command moves backward one word. Like mostVim commands, you can use a numeric prefix to move past multiple words. For example, 4b moves back four words.

Figure 2.1 shows how these commands work.

Figure 2.1 Word movement.

Moving to the Start or End of a Line

The $ command moves the cursor to the end of a line. Actually, a bunch of keys map to the “end-of-line” command.TheVim names for these keys are$, <End>, and <kEnd>. (The<kEnd> key isVim’s name for the keypad End key.)

The$ command takes a numeric argument as well. If present, it causes the editor to move to the end of the next line. For example, 1$ moves you to the end of the first line (the one you’re on), 2$ to the end of the next line, and so on. Figure 2.2 illustrates how this command works.

The^ command moves to the first nonblank character of the line.The<Home> or

<kHome> key moves to the first character of the line, as seen in Figure 2.3. (The0 [zero] command does the same thing.)

Like every other command previously discussed, these three commands can take a numeric argument.They do not do anything with it, but you can specify it if you want to.

Now is the time for all good men to come to

w w 2w 3w

4b b

ACHTUNG1 ALLES LOOKENSPEEPERS!

Das computermachine ist nicht fuer gefingerpoken und mittengrabben. Ist easy schnappen der springenwerk, blowenfusen und poppencorken mit spitzensparken. Ist nicht fuer gewerken bei das dumpkopfen. Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das pockets muss;

relaxen und watchen das blinkenlichten.

2$

3$

4$

$

Figure 2.2 The$ command.

(17)

Searching Along a Single Line 17

Searching Along a Single Line

Moving is the most common editing activity you do. One of the most useful move- ment commands is the single-character search command.The commandfx (forward search) searches the line for the single character

x

.

Suppose, for example, that you are at the beginning of the following line:

To err is human. To really foul up you need a computer.

Suppose you want to go to the h of human. Just execute the commandfh and the cur- sor will be positioned over the h:

To err ishuman. To really foul up you need a computer.

To go to the end of the wordreally, use the commandfy.You can specify a count;

therefore, you can space forward five words by using the command5f<Space>:. Note:

this only moves fivespace characters, not five words. If there are multiple spaces between words, this will not move five words!

To err is human. To really foul up you need a computer.

The F command searches to the left. Figure 2

.

4 shows the effect of thef andF

commands.

The tx (search ‘til) command works like thefx command, except it stops one char- acter before the indicated character.The backward version of this command isTx. Figure 2.5 shows how these commands work.

ACHTUNG1 ALLES LOOKENSPEEPERS!

command

<Home> or <kHome>

Figure 2.3 The^ and<Home> commands.

To err is human, To really foul up you need a computer.

fi f, 2fo 3fe

2Fa Fy

Figure 2.4 Operations of thef andF commands.

To err is human, To really foul up you need a computer.

ti t, 2to 3te

2Ta Ty

Figure 2.5 Thet andT commands.

(18)

18 Chapter 2 Editing a Little Faster

Sometimes you will start a search, only to realize that you have typed the wrong com- mand.You typef to search backward, for example, only to realize that you really meantF.To abort a search, press<Esc> as the search key. Sof<Esc> is an aborted for- ward search. (Note: <Esc> cancels most operations, not just searches.)

Moving to a Specific Line

If you are a C or C++ programmer, you are familiar with error messages such as the following:

prog.c:3: ’j’ undeclared (first use in this function)

This tells you that you might want to fix something on line 3. So how do you find line 3?

One way is to do a9999k to go to the top of the file and a2j to go down two lines. It is not a good way, but it works.

A much better way of doing things is to use theG command.With an argument, this command positions you at the given line number. For example, 3G puts you on line 3. (Likewise, use the1G command to go to the top of the file rather than9999k.)

With no argument, it positions you at the end of the file.

(For a better way of going through a compiler’s error list, see Chapter 7,

“Commands for Programmers,” for information on the:make and:clist related commands.)

Telling Where You Are in a File

How do you really know where you are in a file? You can do so in several ways.The first is to turn on line numbering with the following command (see Figure 2.6):

:set number

1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 :set number

Ode to a maintenance programmer

===============================

Once more I travel that lone dark road into someone else's impossible code Through "if" and "switch" and "do" and "while"

that twist and turn for mile and mile Clever code full of traps and tricks and you must discover how it ticks And then I emerge to ask anew,

"What the heck does this program do?"

****

Figure 2.6 Window with numbering turned on.

(19)

19 Telling Where You Are in a File

The Vim editor is highly configurable and has a huge number of options.You can use the:set command in many different ways, which are described in Chapter 28,

“Customizing the Appearance and Behavior of the Editor.”

The number option is a Boolean option, meaning that it can be on or off.To turn it on, use this command:

:set number

To turn it off, use this command:

:set nonumber

Note

These line numbers are for your information only; they are not written into the file when you exit.

Once more I travel that lone dark road into someone else's impossible code Through "if" and "switch" and "do" and "while"

that twist and turn for mile and mile Clever code full of traps and tricks and you must discover how it ticks And then I emerge to ask anew,

"What the heck does this program do?"

****

:set nonumber

Ode to a maintenance programmer

===============================

Figure 2.7 Results of :set nonumber.

Figure 2.7 shows the results of this command.

Where Am I?

The CTRL-G command displays a status line that indicates where you are in the file. For example:

“c02.txt” [Modified] line 81 of 153 —52%— col 1

This indicates that you are editing a file calledc02.txt, and that it has been modified since the editing started.The cursor is positioned on line 81 out of a total of 153, or about 52% of the way through the file.The cursor is currently sitting in column 1.

(20)

20 Chapter 2 Editing a Little Faster

Figure 2.8 TheCTRL-G command.

Sometimes you will see a split column number (for example, col 2–9).This indi- cates that the cursor is positioned on character 2. But because character one is a tab, the screen column is 9. Figure 2.8 shows the results of a typicalCTRL-G command.

Scrolling Up and Down

The CTRL-U command scrolls up half a screen of text. (Up in this case is backward in the file; the text moves down on the screen. Don’t worry if you have a little trouble remembering which end is up. Most programmers have the same problem.)

TheCTRL-D command scrolls you down half a screen.

Figure 2.9 shows how these two commands work.

to open up the packing crate and find the manual. (What did they think

we were reading anyway?)

<H1>Dumb programmer stories

Ode to a maintenance programmer Once more I travel that lone dark road into someone else's impossible code

Through "if" and "switch" and "do" and "while"

that twist and turn for mile and mile

"sun-o.txt" [Modified] line 186 of 1119 --16%-- col 2-9

Figure 2.9 Results of theCTRL-U andCTRL-D commands.

Deleting Text

As you learned in Chapter 1, thedd command deletes a line.Thedw command deletes a word.You may recognize thew command as the move word command. In fact, thed

command may be followed by any motion command, and it deletes from the current

CTRL-U

CTRL-D

A dozen, a gross, and a score, Plus three times the square root of four Divided by seven, Plus five time eleven, Equals nine squared plus zero, no more.

---

A computer, to print out a fact, Will divide, multiply, and subtract.

A dozen, a gross, and a score, Plus three times the square root of four Divided by seven, Plus five time eleven, Equals nine squared plus zero, no more.

---

A computer, to print out a fact, Will divide, multiply, and subtract.

If buckets of bits

Take one down, short it to ground FE buckets of bits on the bus ---

A dozen, a gross, and a score, Plus three times the square root of four Divided by seven, Plus five time eleven, Equals nine squared plus zero, no more.

Equals nine squared plus zero, no more, ----

A computer, to print out a fact, Will divide, multiply, and subtract.

But this output can be No more than debris, If the input was short of exact.

---

(21)

Changing Text 21

location to the place where the cursor winds up. (Therefore, we say the syntax of thed command isdmotion.)

The3w command, for example, moves the cursor over three words.Thed3w com- mand deletes three words, as seen in Figure 2.10. (You can write it asd3w or3dw

;

both versions work the same.)

To err is human, To really foul up you need a computer.

d3w

(three words) To err is human, To realyou need a computer.

Figure 2.10 Thed3w command.

The$ command moves to the end of a line.Thed$ command deletes from the cursor to the end of the line, as seen in Figure 2.11. A shortcut for this is theD command.

Figure 2.11 Thed$ command.

Where to Put the Count ( 3dw or d3w )

The commands3dw andd3w delete three words. If you want to get really picky about things, the first command, 3dw, deletes one word three times; the commandd3w deletes three words once.This is a difference without a distinction.

You can actually put in two counts, however (for example, 3d2w).This command deletes two words, repeated three times, for a total of six words.

Changing Text

The c command changes text. It acts just like thed command, except it leaves you in insert mode. For example, cw changes a word. Or more specifically, it deletes a word and then puts you in insert mode. Figure 2.12 illustrates how this command works.

There is a saying that for every problem there is an answer that’s simple, clear, and wrong.That is the case with the example used here for thecw command.Thecmotion

command works just like thedmotion command, with one exception: thecw anddw

commands.Whereascw deletes the text up to the space following the word (and then enters insert mode), thedw command deletes the word and the space following it.

To err is human, To really foul up you need a computer.

d$

($ _ go to the end of line) To err is human, To real

(22)

22 Chapter 2 Editing a Little Faster

Thecc command works on the entire line.That is, it deletes the line and then goes into insert mode. In other words, cc works on the current line just likedd. Likewise,

c$ orC change from the cursor to the end of the line.

The . Command

The. command is one of the most simple yet powerful commands in Vim. It repeats the last delete or change command. For instance, suppose you are editing an HTML file and want to delete all the <B> tags.You position the cursor on the first < and delete the <B> with the commanddf>.You then go to the < of the next </B> and kill it using the. command.The. command executes the last change command (in this case, df>).To delete another tag, position the cursor on the < and press the.

command. Figure 2.13 illustrates how this can work.

To err is human, To really foul up you need a computer.

a word(w) Changed word (screw<blank>)

cwscrew<Esc>

c—Change command w—Change one word

screw—The word we are inserting

<Esc>—Ends insert mode

To err is human, To really foul up you need a computer.

Figure 2.12 Howcw works.

<P>

To <B>generate</B> a table of contents all the C <B>program</B> files in your current working directory, use the

<B>command</B>:

<PRE>

$<B> ctags *.c</B>

</PRE>

j —down a line

—start of line f< —find “<” of <B>

df>—delete to “>”

f< —find “<” of “<B>”

. —repeat last change (df>)

j> —down, start of line f> —find “<” of <B>

. —repeat last change (df>)

f< —find “<” of “<B>”

. —repeat last change (df>)

Figure 2.13 Using the. command.

(23)

Replacing Characters 23

Joining Lines

The J command joins the current line with the next one. A space is added to the end of the first line to separate the two pieces that are joined, as illustrated by Figure 2.14.

If a count is specified, the count lines are joined (minimum of two).

Note

Ther command treats<Enter> in a special way. No matter how big the count is, only one<Enter> is inserted. Therefore,5ra insertsfivea characters, whereas 5r<Enter> replacesfive characters with one

<Enter>.

J

This is 3J a test with two lines This is a test

This is a test

This is a test with two lines

Figure 2.14 TheJ command.

rs This is a test.

This iza test.

Figure 2.15 The replace (r) command.

5ra

aaaaais a test.

This is a test.

Figure 2.16 Replace (r) command with count.

Replacing Characters

The rx command replaces the character under the cursor with

x.

Figure 2.15 shows how you can use ther command to replace a

z

with ans.

Ther command can be preceded with a count, indicating the number of charac- ters to be replaced. In Figure 2.16, we go to the beginning of line (the^ command) and execute5ra to replace the first five characters with a.

(24)

24 Chapter 2 Editing a Little Faster

Be careful where you place the count.The5rx command replaces five characters with the character

x

, whereasr5x replaces the character under the cursor with

5

(r5) and then deletes a character (x).

Changing Case

The ~ command changes a character’s case. It changes uppercase to lowercase and vice versa. If a count is specified, the count characters are changed. Figure 2.17 contains examples.

“14~”

Now is THE time.. . .

NOW IS the TIME. . . .

“~”

now is the time. . . .

Now is the time. . . .

Figure 2.17 Use of the~ command.

Keyboard Macros

The . command repeats the preceding change. But what if you want to do something more complex than a single change? That’s where the keyboard macros come in.The

qcharacter command records keystrokes into the register named character. (The char- acter must be betweena and

z

.)

To finish recording, just type aq command.You can now execute the macro by typing the@character command. (This can be preceded by a count, which will cause the macro to be executed that number of times.)

Take a look at how to use these commands in practice.You have a list of filenames that look like this:

stdio.h fcntl.h unistd.h stdlib.h

And what you want is the following:

#include “stdio.h”

#include “fcntl.h”

#include “unistd.h”

#include “stdlib.h”

You start by moving to the first character of the first line. Next you execute the fol- lowing commands:

qa Start recording a macro in register a.

^ Move to the beginning of the line.

i#include “<Esc> Insert the string#include " at the beginning of the line.

$ Move to the end of the line.

(25)

25 Digraphs

a”<Esc> Append the character double quotation mark (“) to the end of the line.

j Go to the next line.

q Stop recording the macro.

Now that you have done the work once, you can repeat the change by typing the command@a. Alternatively, because you have three lines to go, you can change them using the command3@a.

Figure 2.18 shows how to define and then execute a macro.

Warning

The digraphs are set up assuming that you have a standard ISO-646 character set. Although this is an international standard, your particular display or printing system might not use it.

stdio.h fcntl.h unistd.h stdlib.h

#include “stdio.h”

fcntl.h unistd.h stdlib.h

#include “stdio.h”

#include “fcntl.h”

unistd.h stdlib.h

#include “stdio.h”

#include “fcntl.h”

#include “unistd.h”

#include “stdlib.h”

Start

qa-Record into register a -Go to the geginning of a line i#include ‘<Esc>-Insert text a“<Esc>-Insert more text j-Go to the next line q-Stop macro

@a-Execute macro “a”

2@a-Execute macro “a” twice

2.18 Defining and using a macro.

Digraphs

Some characters are not on the keyboard—for example, the copyright character (©).

To type these letters inVim, you use digraphs, where two characters represent one.To enter a ©, for example, you typeCTRL-Kc0.

To find out what digraphs are available, use the following command:

:digraphs

TheVim editor will display the digraph-mapping table, as seen in Figure 2.19.

This shows, for example, that the digraph you get by typingCTRL-K~! is the character (¡).This is character number 161.

(26)

26 Chapter 2 Editing a Little Faster

~ :digraphs

~! ¡ 161

| | | 166 –, ¬ 172 222 178 ,, ¸ 184 343/4 190 A" Ä 196 E´ É 201 I" I 207 O~ Õ 213 U´ Ú 218 a` à 224 aa å 229 e" ë 235 n~ ñ 241 :- ÷ 247 u" ü 252

c| ¢ 162 pa § 167 –– – 173 333 179 111 185

~? ¿ 191 A@ Å 197 E^ Ê 202 D- D 208 O" Ö 214 U^ Û 219 a´ á 225 ae æ 230 i` ì 236 o` ò 242 oe ÷ 247 y´ y 253

$$ £ 163

"" ¯¯ 168 rO ® 174

´´ ´ 180 o– º 186 A` À 192 AA Å 197 E" Ë 203 N~ Ñ 209 /\ × 215 U" Ü 220 a^ â 226 c, ç 231 i´ í 237 o´ ó 243 o/ ø 248 ip p 254

ox ¤ 164 cO © 169 –= ¯ 175 ju µ 181

>> » 187 A´ Á 193 AE Æ 198 I` Ì 204 O` Ò 210 OE× 215 Y´ Y 221 a~ ã 227 e` è 232 i^ î 238 o^ ô 244 u` ù 249 y" ÿ 255

e= ¤ 164 a- ª 170

~o ° 176 pp ¶ 182 141/4 188 A^ Â 194 C, Ç 199 I´ I 205 O´ Ó 211 O/ Ø 216 Ip p 222 a" ä 228 e´ é 233 i" ï 239 o~ õ 245 u´ ú 250

Y– ¥ 165

<< « 171 +– ± 177

~. • 183 121/2 189 A~ Ã 195 E` È 200 I^ I 206 O^ Ô 212 U` Ù 217 ss ß 223 a@ å 229 e^ ê 234 d- 240 o" ö 246 u^ û 251 Press RETURN or enter command to continue

´

¨

´

´ ˆ

Figure 2.19 Digraph-mapping table.

(27)

Searching

T

HIS CHAPTER INTRODUCES YOU TO THE VARIOUS Vim search commands.The basic search commands in Vim are rather simple, which means that you can get started with searching fairly easily.

In this chapter, you learn about the following:

n Simple forward searches

n Search options

n Incremental searches

n Changing directions

n Basic regular expressions

Simple Searches

To search for a string, use the/string command.To find the word include, for exam- ple, use the command/include. An<Enter> is implied at the end of this command.

(Any time the cursor jumps to the bottom of the screen and you type something, you must end it with<Enter>.)

Note:The characters.*[]ˆ%/\?~$ have special meaning. If you want to use them in a search you must put a \ in front of them. Example: to find . use the search string\..

The cursor now moves to the i of include, as seen in Figure 3.1.

(28)

28 Chapter 3 Searching

Figure 3.1 Searching for include.

To find the next include, use the command/<Enter>.The cursor now moves to the next occurrence of the string, as shown by Figure 3.2.

/********************************************************

* cd-speed

* Report the speed of a cd-rom

* (Also works on hard drives and other

* devices)

** Usage:

* cd-speed <device>

*********************************************************/

#include <iostream.h>

#include <iomanip.h>

/include

*

**

*

**

**

**

*

**

**

* /********************************************************

* cd-speed

* Report the speed of a cd-rom

* (Also works on hard drives and other

* devices)

** Usage:

* cd-speed <device>

*

********************************************************/

#include <iostream.h>

#include <iomanip.h>

/include

Figure 3.2 Search again, forward (/<Enter>).

Another way to find the next match is with then command.This command does the same thing as/<Enter>, but does it with one less keystroke. Figure 3.3 shows the result of this search.

* cd-speed

* Report the speed of a cd-rom

* (Also works on hard drives and other

* devices)

** Usage:

* cd-speed <device>

*

********************************************************/

#include <iostream.h>

#include <iomanip.h>

#include <unistd.h>

*

**

**

*

**

Figure 3.3 Search again (n).

Both the/<Enter> andn commands can have a count specified. If there is a count, the command searches for the count number of matches from the current location.

Search History

The search command has a history feature. Suppose, for example, that you do three searches:

/one /two /three

(29)

29 Searching Options

Now let’s start searching by typing a simple/ without pressing<Enter>. If you press

<Up>,Vim puts/three on the prompt line. Pressing<Enter> at this point searches for three. If you do not press<Enter>, but press<Up> instead, Vim changes the prompt to

/two. Another<Up> command moves you to/one.

In other words, after you do a number of searches, you can use the<Up> and<Down>

keys to select one of your recent searches.

Searching Options

Many different options control the way you perform a search.This section discusses a few of them.

Highlighting

The following command causesVim to highlight any strings found matching the search pattern:

:set hlsearch

If you turn on this option and then search for include, for example, the results in all the include strings are highlighted, as seen in Figure 3.4.

To turn off search highlighting, use this command:

:set nohlsearch

To clear the current highlighting, use the following command:

:nohlsearch

Search highlighting is now turned off; matched text will not be highlighted. However, the highlighting will return when you use a search command.

Incremental Searches

By default, Vim uses the traditional search method:You specify the string, and then Vim performs the search.When you use the following command, the editor performs incremental searches:

:set incsearch

* devices)

*

* Usage:

* cd-speed <device>

*

********************************************************/

#include <iostream.h>

#include <iomanip.h>

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#include <sys/ioctl.h>

*

**

*

*

Figure 3.4 The'hlsearch' option.

(30)

30 Chapter 3 Searching

The editor starts searching as soon as you type the first character of the string. Each additional character further refines the search.

Suppose, for example, that you want to search forioctl.h, but this time you want to use an incremental search. First, you turn on incremental searching.

Next, you start the search by typing the/i command. Figure 3.5 shows how the editor searches for the firsti and positions the cursor on it.

*

*

*

* Usage:

* cd-speed <device>

*

********************************************************/

#include <iostream.h>

#include <iomanip.h>

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#include <sys/ioctl.h>

#include <sys/types.h>

#include <sys/mtio.h>

/i

Figure 3.5 Results after/i.

You continue the search by typing ano.Your search now is/io, so the editor finds the first io, as seen in Figure 3.6.

This is still not the place you want, so you add ac to the search, resulting in the

/ioc command.TheVim editor advances, as illustrated in Figure 3.7, to the first match ofioc.

This is what you want to find, so you press<Enter>, and you’re there.

To turn off incremental searches, use the following command:

:set noincsearch

*

*

*

* Usage:

* cd-speed <device>

*

********************************************************/

#include <iostream.h>

#include <iomanip.h>

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#include <sys/ioctl.h>

#include <sys/types.h>

#include <sys/mtio.h>

/io

Figure 3.6 Incremental search after/io.

*

*

*

* Usage:

* cd-speed <device>

*

********************************************************/

#include <iostream.h>

#include <iomanip.h>

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#include <sys/ioctl.h>

#include <sys/types.h>

#include <sys/mtio.h>

/ioc

Figure 3.7 Incremental search after/ioc.

參考文獻

相關文件

[This function is named after the electrical engineer Oliver Heaviside (1850–1925) and can be used to describe an electric current that is switched on at time t = 0.] Its graph

command line, he specifies an arbitrary (but specific; in this case, 9989) local port that ssh should forward through the secure tunnel to the remote Windows ma- chine’s port

command line, he specifies an arbitrary (but specific; in this case, 9989) local port that ssh should forward through the secure tunnel to the remote Windows ma- chine’s port

• The  ArrayList class is an example of a  collection class. • Starting with version 5.0, Java has added a  new kind of for loop called a for each

All variables defined as the result of entering statements in the command window, exist in the Matlab workspace. At the beginning of a Matlab session, the workspace

了⼀一個方案,用以尋找滿足 Calabi 方程的空 間,這些空間現在通稱為 Calabi-Yau 空間。.

 Promote project learning, mathematical modeling, and problem-based learning to strengthen the ability to integrate and apply knowledge and skills, and make. calculated

Robinson Crusoe is an Englishman from the 1) t_______ of York in the seventeenth century, the youngest son of a merchant of German origin. This trip is financially successful,