Besides using line numbers and address symbols (., $, %), ex (including the ex mode of vi, of course) can address lines (Section 20.3) using search patterns (Section 32.1). For example:
Note that patterns are delimited by a slash both before and after.
If you make deletions by pattern with vi and ex, there is a difference in the way the two editors operate. Suppose you have in your file named practice the following lines:
With a screen editor you can scroll the page, move the cursor, delete lines, insert characters and more, while seeing results of your edits as you make them.
Key-strokes |
Action |
Results |
---|---|---|
d/while |
The vi delete-to-pattern command deletes from the cursor up to the word while but leaves the remainder of both lines. |
With a screen editor you can scroll the page, move the cursor, while seeing results of your edits as you make them. |
:.,/while/d |
The ex command deletes the entire range of addressed lines; in this case both the current line and the line containing the pattern. All lines are deleted in their entirety. |
With a screen editor you can scroll the of your edits as you make them. |
In vi you use a / (slash) to search for patterns of characters in your files. By contrast, ex has a global command, g, that lets you search for a pattern and display all lines containing the pattern when it finds them. The command :g! does the opposite of :g. Use :g! (or its synonym :v) to search for all lines that do not contain pattern.
You can use the global command on all lines in the file, or you can use line addresses to limit a global search to specified lines or to a range of lines.
g can also be used for global replacements. For example, to search for all lines that begin with WARNING: and change the first word not on those lines to NOT:
:g/^WARNING:/s/\<not\>/NOT/
-- LL, from Learning the vi Editor (O'Reilly, 1998)
Copyright © 2003 O'Reilly & Associates. All rights reserved.