home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam    

UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: 7.4 Summary of Commands by Name Chapter 8 Next: 8.2 Movement Commands

8. The Vi Editor

This section presents the following topics:

  • Review of vi operations

  • Movement commands

  • Edit commands

  • Saving and exiting

  • Accessing multiple files

  • Interacting with UNIX

  • Macros

  • Miscellaneous commands

  • Alphabetical list of keys

  • Setting up vi

8.1 Review of Vi Operations

This subsection provides a review of the following:

  • Command-line syntax

  • Vi modes

  • Syntax of vi commands

  • Status-line commands

For more information on vi , refer to the Nutshell Handbook Learning the vi Editor .

8.1.1 Command-line Syntax

The three most common ways of starting a vi session are:

vi file vi + n file vi +/ pattern file

You can open file for editing, optionally at line n or at the first line matching pattern . If no file is specified, vi opens with an empty buffer. See Section 2 for more information on command-line options for vi.

8.1.2 Command Mode

Once the file is opened, you are in command mode. From command mode, you can:

  • Invoke insert mode

  • Issue editing commands

  • Move the cursor to a different position in the file

  • Invoke ex commands

  • Invoke a UNIX shell

  • Save or exit the current version of the file

8.1.3 Insert Mode

In insert mode, you can enter new text in the file. Press the ESCAPE key to exit insert mode and return to command mode. The following commands invoke insert mode:

a Append after cursor.
A Append at end of line.
c Begin change operation.
C Change to end of line.
i Insert before cursor.
I Insert at beginning of line.
o Open a line below current line.
O Open a line above current line.
R Begin overwriting text.
s Substitute a character.
S Substitute entire line.

8.1.4 Syntax of Vi Commands

In vi, commands have the following general form:

[ n ] operator [ m ] object

The basic editing operators are:

c Begin a change.
d Begin a deletion.
y Begin a yank (or copy).

If the current line is the object of the operation, then the operator is the same as the object: cc , dd , yy . Otherwise, the editing operators act on objects specified by cursor-movement commands or pattern-matching commands. n and m are the number of times the operation is performed, or the number of objects the operation is performed on. If both n and m are specified, the effect is n X m .

An object can represent any of the following text blocks:

word Includes characters up to a space or punctuation mark. A capitalized object is a variant form that recognizes only blank spaces.
sentence Is up to . , ! , ? followed by two spaces.
paragraph Is up to next blank line or paragraph macro defined by para= option.
section Is up to next section heading defined by sect= option. Examples

2cw Change the next two words.
d} Delete up to next paragraph.
d^ Delete back to beginning of line.
5yy Copy the next five lines.
y]] Copy up to the next section.

8.1.5 Status-line Commands

Most commands are not echoed on the screen as you input them. However, the status line at the bottom of the screen is used to echo input for the following commands:

/ Search forward for a pattern.
? Search backward for a pattern.
: Invoke an ex command.
! Invoke a UNIX command that takes as its input an object in the buffer and replaces it with output from the command.

Commands that are input on the status line must be entered by pressing the RETURN key. In addition, error messages and output from the CTRL-G command are displayed on the status line.

Previous: 7.4 Summary of Commands by Name UNIX in a Nutshell: System V Edition Next: 8.2 Movement Commands
7.4 Summary of Commands by Name Book Index 8.2 Movement Commands

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System