Learning the vi Editor

Learning the vi EditorSearch this book
Previous: 6.1 Confirming Substitutions Chapter 6
Global Replacement
Next: 6.3 Pattern-Matching Rules
 

6.2 Context-Sensitive Replacement

The simplest global replacements substitute one word (or a phrase) for another. If you have typed a file with several misspellings (editer for editor), you can do the global replacement:

:%s/editer/editor/g

This substitutes editor for every occurrence of editer throughout the file.

There is a second, slightly more complex syntax for global replacement. This syntax lets you search for a pattern, and then, once you find the line with the pattern, make a substitution on a string different from the pattern. You can think of this as context-sensitive replacement.

The syntax is as follows:

:g/pattern/s/old/new/g

The first g tells the command to operate on all lines of a file. pattern identifies the lines on which a substitution is to take place. On those lines containing pattern, ex is to substitute (s) for old the characters in new. The last g indicates that the substitution is to occur globally on that line.

For example, in this book, the SGML directives <keycap> and </keycap> place a box around [ESC] to show the ESCAPE key. You want [ESC] to be all in caps, but you don't want to change any instances of Escape that might be in the text. To change instances of Esc to ESC only when Esc is on a line that contains the <keycap> directive, you could enter:

:g/<keycap>/s/Esc/ESC/g

If the pattern being used to find the line is the same as the one you want to change, you don't have to repeat it. The command:

:g/string/s//new/g

would search for lines containing string and substitute for that same string.

Note that:

:g/editer/s//editor/g

has the same effect as:

:%s/editer/editor/g

You can save some typing by using the second form. It is also possible to combine the :g command with :d, :mo, :co and other ex commands besides :s. As we'll show, you can thus make global deletions, moves, and copies.


Previous: 6.1 Confirming Substitutions Learning the vi EditorNext: 6.3 Pattern-Matching Rules
6.1 Confirming Substitutions Book Index6.3 Pattern-Matching Rules

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