You have seen that while you are editing, your last deletion
) or yank (
) is saved in a buffer (a
place in stored memory).
You can access the contents
of that buffer and put the saved text
back in your file with the put command
The last nine deletions are stored by vi
in numbered buffers. You can access any of these numbered buffers
to restore any (or all) of the last nine deletions.
(Small deletions, of only parts of lines, are not saved in
numbered buffers, however. These deletions can only be recovered
by using the
immediately after you've made the deletion.)
also allows you to place yanks (copied text) in buffers
identified by letters.
You can fill up to 26 (a-z) buffers with yanked text and restore that
text with a put command at any time in your editing session.
Being able to delete large blocks of text at a single bound is
all very well and good, but what if you mistakenly delete 53 lines
that you need?
There is a way to recover any of your past nine
for they are saved in numbered buffers.
The last delete is saved in buffer 1, the second-to-last in buffer 2,
and so on.
To recover a deletion, type
identify the buffered text by number, then give the put command.
To recover your second-to-last deletion from buffer 2:
The deletion in buffer 2 is placed after the cursor.
If you're not sure which buffer contains the deletion you want to
restore, you don't have to keep typing
and over again.
If you use the repeat command (
it automatically increments the buffer number. As a
result, you can search through the numbered buffers
to put the contents of each succeeding buffer in the file
one after the other.
Each time you type
, the restored text is removed; when
you type a dot (.), the contents of the next
buffer is restored to
and . until you've recovered the text
you're looking for.
You have seen that you must put (
the contents of the unnamed buffer before you make any other edit, or the
buffer will be overwritten.
You can also use
with a set of
26 named buffers (a-z) which are specifically available for
copying and moving text.
If you name a buffer to store the yanked
text, you can retrieve the contents of the named buffer at any time
during your editing session.
To yank into a named buffer, precede the
yank command with a double quote (
) and the character for
the name of the buffer you want to load.
Yank current line into buffer
Yank next seven lines into buffer
After loading the named buffers and moving to the new position, use
to put the text back:
Put the contents of buffer
Put the contents of buffer
There is no way to put part of a buffer into the text -- it is all or
In the next chapter, you'll learn to edit multiple files. Once you know how to
travel between files without leaving vi
, you can use named
buffers to selectively transfer text between files.
You can also delete text into named buffers using much the same
Delete five lines into buffer
If you specify a buffer name with a capital letter, your yanked or
deleted text will be appended
to the current contents
of that buffer.
This allows you to be selective in what you move or copy. For example:
Delete from cursor to end of current sentence and save in buffer
Move two sentences further on.
Add the next sentence to buffer
You can continue adding more text to a named buffer
for as long as you like -- but be warned: if you once forget, and
yank or delete to the buffer without specifying its name in
capitalized form, you'll overwrite the buffer, losing whatever you
had accumulated in it.