I see too many people using a series of commands like the ones that follow. Programmers do this when they write and compile programs. Writers use this when they're making a draft file and running it through the formatter. They're probably wasting a lot of time and effort:
%vi somefile... Edit somefile, then quit vi ... %someprog somefile... Process somefile ... %vi somefile... Edit somefile again ... %someprog somefile... Process somefile again ...
Each time they restart
vi
, they have to reset options and move the cursor to the place they were working before. After they restart,
vi
has forgotten the previous search (the
n
command), the previous action (the
.
command), the previous regular expression, the named and numbered buffers...
If your system has
job control (
12.8
)
, that'll solve all these problems. [1] Instead of quitting
vi
, get into command mode and write your buffer with the
:w
command. Stop the editor with the CTRL-z command. Then, process the file. When you're ready to do more editing, bring your
vi
job back into the foreground with
fg
. The editor will be just where it was.
[1] If it doesn't, you can still use a shell escape ( 30.26 ) .
Even better, you can set
vi
's option called
autowrite
. If you've made any changes to the buffer before you press CTRL-z,
vi
will automatically write the buffer. You won't need to remember to type
:w
before you stop the editor. You can set
autowrite
at a colon (
:
) prompt, but I set it in my
.exrc
file (
30.6
)
instead.
[You don't absolutely have to write your file before suspending vi . It's a good piece of advice, but not required by the job control mechanism. Typing CTRL-z will suspend the editor whether you've written out your files or not. - TOR ]
-