C++ CSS HTML Java JavaScript MySQL Oracle PERL PHP SQL Unix VBScript XHTML XML Сети
[Chapter 7] Advanced Editing
 
PreviousChapter 7Next
 

7. Advanced Editing

Contents:
Customizing vi
Executing UNIX Commands
Saving Commands
Using ex Scripts
Editing Program Source Code

This chapter introduces you to some of the more advanced capabilities of the vi and ex

set command and how to create a number of different editing environments using .exrc files.

The second part discusses how you can execute UNIX commands from within vi, and how you can use vi to filter text through UNIX commands.

mapping keys). It also includes a section on @-functions, which allow you to store command sequences in a buffer.

The fourth part discusses the use of ex scripts from the UNIX command line or from within shell scripts. Scripting provides a powerful way to make repetitive edits.

The fifth part discusses some features of vi that are especially useful to programmers. vi C functions.

7.1 Customizing vi

You have seen that vi operates differently on various terminals. (For instance, on "dumb" terminals, vi inserts @ symbols in place of deleted lines; on intelligent terminals, vi redraws the screen with each edit.) vi gets operating instructions about your terminal type from a file called /etc/termcap. (In System V, termcap has been replaced with an alternate terminal database called terminfo.)

There are also a number of options that you can set from within vi that affect how it operates. For example, you can set a right margin that will cause vi to wrap lines automatically, so you don't need to insert carriage returns.

You can change options from within vi by using the ex command :set. In addition, whenever vi is started up, it reads a file in your home directory called .exrc for further operating instructions. By placing :set commands in this file, you can modify the way vi acts whenever you use it.

You can also set up .exrc for editing source programs. The .exrc file in your home directory will be executed first, then the one in your current directory.

Finally, any commands stored in the shell variable EXINIT will be executed by vi on startup. If there is a conflict between settings made in .exrc and EXINIT, those in .exrc take precedence.

7.1.1 The :set Command

There are two types of options that can be changed with the :set command: toggle options, which are either on or off, and options that take a numeric or string value (such as the location of a margin or the name of a file).

Toggle options may be on or off by default. To turn a toggle option on, the command is:

:set option

To turn a toggle option off, the command is:

:set nooption

For example, to specify that pattern searches should ignore case, type:

:set ic

If you want vi to return to being case-sensitive in searches, give the command:

:set noic

Some options have a value assigned to them. For example, the window option sets the number of lines shown in the screen's "window." You set values for these options with an equal sign (=):

:set window=20

During a vi session, you can check which options vi is using. The command:

:set all

displays the complete list of options, including options that you have set and defaults that vi has "chosen." The display should look something like this:

    redraw              timeout
noedcompatible    remap               ttytype=wy50
noerrorbells      report=5            warn
hardtabs=8        scroll=11           window=20
noignorecase      sections=AhBhChDh   wrapscan
nolisp            shell=/bin/csh      wrapmargin=10
nolist            noshowmatch         nowriteany
magic             noslowopen   
mesg              paragraphs=IPLPPPQP LIpp1pipbb   
number            tags=tags /usr/lib/tags

You can find out the current value of any individual option by name, using the command:

:set option?

The command:

:set

shows options that you have specifically changed, or set, either in your .exrc file or during the current session. For example, the display might look like this:

number sect=AhBhChDh window=20 wrapmargin=10

7.1.2 The .exrc File

The .exrc file that controls your own vi environment is in your home directory (the directory you are in when you first log on). You can modify the .exrc file with the vi editor, just as you can any other text file.

If you don't yet have an .exrc file, simply use vi to create one. Enter into this file the set, ab, and map commands that you want to have in effect whenever you use vi or ex. (ab and map are discussed later in this chapter.) A sample .exrc file looks like this:

set nowrapscan wrapmargin=7
set sections=SeAhBhChDh nomesg
map q :w^M:n^M
map v dwElp
ab ORA O'Reilly & Associates, Inc.

Since the file is actually read by ex before it enters visual mode (vi), commands in .exrc should not have a preceding colon.

7.1.3 Alternate Environments

In addition to reading the .exrc file in your home directory, vi will read a file called .exrc in the current directory. This allows you to set options that are appropriate to a particular project.

For example, you might want to have one set of options in a directory mainly used for programming:

set number lisp autoindent sw=4 terse
set tags=/usr/lib/tags

and another set of options in a directory used for text editing:

set wrapmargin=15 ignorecase

Note that you can set certain options in the .exrc file in your home directory and unset them in a local directory.

NOTE: In System V, Release 3.2 and later, vi doesn't read .exrc files in the current directory unless you first set the exrc option in your home directory's .exrc file:

set exrc

This mechanism prevents other people from placing, in your working directory, an .exrc file whose commands might jeopardize the security of your system.

You can also define alternate vi environments by saving option settings in a file other than .exrc and reading in that file with the :so command. For example:

:so .progoptions

Local .exrc.exrc file in the directory in which the book is being created.

7.1.4 Some Useful Options

As you can see when you type :set all, there are an awful lot of options that can be set. Many of them are used internally by vi and aren't usually changed. Others are important in certain cases, but not in others (for example, noredraw and window can be useful on a dialup line at a low baud rate). The table in Appendix B, Setting Environment Options  - if an option looks interesting, try setting it (or unsetting it) and watch what happens while you edit. You may find some surprisingly useful tools.

As discussed earlier in this book, one option, wrapmargin, is essential for editing nonprogram text. wrapmargin

:set wrapmargin=10

Three other options control how vi acts when conducting a search. Normally, a search differentiates between uppercase and lowercase (foo does not match Foo The default settings that control these options are noignorecase, wrapscan, and magic, respectively. To change any of these defaults, you would set the opposite toggle options: ignorecase, nowrapscan, and nomagic.

Options that may be of particular interest to programmers include: lisp, autoindent, showmatch, tabstop, shiftwidth, number, and list, as well as their opposite toggle options.


PreviousHomeNext
6.4 Pattern-matching Examples Book Index7.2 Executing UNIX Commands

Главная