Options When Starting vi
So far, you have invoked the vi editor with the command:
$vi
file
There are other options to the vi
command that can be helpful. You can open
a file directly to a specific line number or pattern. You can also
open a file in read-only mode. Another option recovers all changes to
a file that you were editing when the system crashed.
Advancing to a Specific Place
When you begin editing an existing file, you can call the file in and then move to the first occurrence of a pattern or to a specific line number. You can also specify your first movement by search or by line number right on the command line:[15]
In the file practice, to open the file and advance directly to the line containing the word Screen, enter:
Keystrokes | Results |
vi +/Screen practice | With a screen editor you can scroll
the page, move the cursor, delete
lines, and insert characters, while
seeing the results of your edits as
you make them.Screen editors are
very popular, since they allow you
to make changes as you read Give the |
As you see in this example, your search pattern will not necessarily be positioned at the top of the screen. If you include spaces in the pattern, you must enclose the whole pattern within single or double quotes:[16]
+/"you make"
or escape the space with a backslash:
+/you\ make
In addition, if you want to use the general pattern-matching syntax described in Chapter 6, you may need to protect one or more special characters from interpretation by the shell with either single quotes or backslashes.
Using +/
pattern is helpful
if you have to leave an editing session before you’re finished. You
can mark your place by inserting a pattern such as ZZZ
or HERE
. Then, when you return to the file,
all you have to remember is /ZZZ
or /HERE
.
Note
Normally, when you’re editing in vi, the wrapscan
option is enabled. If you’ve
customized your environment so that wrapscan
is always disabled (see Repeating Searches), you might not be able to use
+/
pattern.
If you try to open a file this way, vi opens the file at the last line and
displays the message, “Address search hit BOTTOM without matching
pattern.”
Read-Only Mode
There will be times when you want to look at a file but want to protect that file from inadvertent keystrokes and changes. (You might want to call in a lengthy file to practice vi movements, or you might want to scroll through a command file or program.) You can enter a file in read-only mode and use all the vi movement commands, but you won’t be able to change the file.
To look at a file in read-only mode, enter either:
$vi -R
file
$view
file
(The view
command, like the
vi
command, can use any of the
command-line options for advancing to a specific place in the
file.[17]) If you do decide to make some edits to the file, you
can override read-only mode by adding an exclamation point to the
write
command:
:w!
or:
:wq
If you have a problem writing out the file, see the problem checklists summarized in Appendix C.
Recovering a Buffer
Occasionally a system failure may happen while you
are editing a file. Ordinarily, any edits made after your last write
(save) are lost. However, there is an option, -r
,
which lets you recover the edited buffer at the time of a system
crash.
On a traditional Unix system with the original vi, when you first log on after the system is running again, you will receive a mail message stating that your buffer has been saved. In addition, if you type the command:
$ex -r
or:
$vi -r
you will get a list of any files that the system has saved.
Use the -r
option with a filename to recover
the edited buffer. For example, to recover the edited buffer of the
file practice after a system
crash, enter:
$vi -r practice
It is wise to recover the file immediately, lest you inadvertently make edits to the file and then have to resolve a version skew between the preserved buffer and the newly edited file.
You can force the system to preserve your buffer even
when there is not a crash by using the command :pre
(short for :preserve
). You may find it useful if you
have made edits to a file and then discover that you can’t save your
edits because you don’t have write permission. (You could also just
write out a copy of the file under another name or into a directory
where you do have write permission. See Problems Saving Files.)
Note
Recovery may work differently for the various clones and can
change from version to version. It is best to check your local
documentation. vile does not
support any kind of recovery. The vile documentation recommends the use of the autowrite
and autosave
options. How to do this is
described in Customizing vi.
Get Learning the vi and Vim Editors, 7th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.