VI provides several ways to find your place in a file by locating a specified string of characters. VI also has a powerful global replacement function.
Find a
character string
A character string is one or more characters in succession. A string can include letters, numbers, punctuation marks, special characters, white space, tabs, or carriage returns. A string can be a grammatical word or it can be part of a word.
To search for a character string, type / followed by the string you want to find, and then press Return. vi places the cursor on the next occurrence of the string. For example, to find the string “meta”, type /meta followed by Return.
Type n to go to the next occurrence of the string. Type N to go to the previous occurrence.
To look back on a file, you can use ? instead of /. In this situation, the n and N addresses are reversed.
Searches are usually case sensitive: a search for “china” will not find “china”. If you want vi to ignore case during a search, type :set ic. To change it back to the default case-sensitive mode, type :set noic.
If vi finds the requested string, the cursor stops at its first appearance. If the string is not found, vi displays Pattern Not Found on the last line of the screen.
Certain special characters (/& !^*$\?) have special meaning for the search process and must “slip away” when used in a search. To escape a special character, precede it with a backslash (\). For example, to find the string “something?” type /anything\? and press Return.
You can use these special characters as commands for the search function. If you want to find a string that includes one or more of these characters, you must precede the special character with a backslash. To escape a backslash, type \\.
Refine
your search
You can make searches more accurate by tagging the string with flags for the following characteristics:
Beginning of the line End of line Start of word End of
-
word
-
Wildcard characters
To match the beginning of a line, start the search string with a caret (^). For example, to find the next line that begins with “Search”, type:
/^Search
To match the end of a line, end the search string with a dollar sign ($). For example, to find the next line ending with “search.”, type:
/search\.$ Note that the
point escapes with a backslash
. To match the beginning of a word, type \< at the beginning of the string
; to match the end of a word, type \> at the end of the string. Therefore, to match a word, rather than a string, combine the end-of-word and end-of-word tags in the search pattern. For example, to find the next occurrence of the word, instead of the string, “search”, type:
/\<search\>
To match any character, type a period (.) in the string at the location you want to match. For example, to find the next occurrence
of “disinformation” or “disinformation,” type: /.isinformation Because this is a search for a string and not a
word, this search pattern can also find constructs like “disinformation” and “disinformation.”
To search for alternate characters in a string, enclose the alternatives in square brackets. The /[md]string search pattern finds strings that begin with “m” or “d”. In contrast, /[d-m]string finds strings that begin with any letter from “d” to “m”.
To match zero or more occurrences of the last character, type an asterisk (*) in the string. You can effectively combine square brackets and an asterisk to find well-defined alternatives. For example, to find all strings that begin with a through z and end with “isinformation” and to find all occurrences of the string “isinformation”, type:
/[a-z]*isinformation
Replace
a character string
The procedure for replacing a text string is based on the search procedures described above. You can use all special matching characters for search and replace searches.
The basic command form is
: :g/search-string/s//replace-string/g Then press the Return key.
Therefore, to replace each occurrence of the string
“disinformation” with “newspeak”, type: :g/disinformation/s//newspeak/g
Then
and
press Return
.
You can modify this command to stop the search and make vi query if you want to replace on each instance. The following command uses gc (adding c for “query”) to make vi stop at every occurrence of “misinformation” and ask if you want to make the substitution. Answer with and for yes or n for no.
:g/disinformation/s//newspeak/gc Note:
You can cancel a “consulted” find and replace function by pressing Ctrl-C
.
Go to a specific
line
To go to the last line of an open file, type G. To return to the first line of the file, type 1G.
You can go to any other line by typing your number followed by G.
For example, suppose you exit the file painting while editing line 51. You can access that line by opening the file and typing 51G.