home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomeLearning the vi EditorSearch this book

4.3. Making Use of Buffers

You have seen that while you are editing, your last deletion (d or x) or yank (y) 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 (p or P).

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 p or P command immediately after you've made the deletion.)

vi 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.

4.3.2. Yanking to Named Buffers

You have seen that you must put (p or P) the contents of the unnamed buffer before you make any other edit, or the buffer will be overwritten. You can also use y and d 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. For example:

"dyy	Yank current line into buffer d.
"a7yy	Yank next seven lines into buffer a.

After loading the named buffers and moving to the new position, use p or P to put the text back:

"dP	Put the contents of buffer d before cursor.
"ap	Put the contents of buffer a after cursor.

There is no way to put part of a buffer into the text—it is all or nothing.

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 procedure:

"a5dd	Delete five lines into buffer a.

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:

"zd)
Delete from cursor to end of current sentence and save in buffer z.

2)
Move two sentences further on.

"Zy)
Add the next sentence to buffer z. 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.



Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.