Skip to main content

Copying Content from One File to Another in VI Editor

Copying content from one file to another is a common operation in text editing, and VI editor offers a method to achieve this using buffers. Buffers in VI editor are temporary storage areas where the copied or cut content is stored, allowing you to paste it into different locations or files. In this article, we will cover how to use buffers to copy entire and partial contents between files and subsequently save them as a new file. We assume that you are continuing from the previous article and are using the same files, file1.txt and file2.txt.

Introduction to Buffers in VI Editor

Before diving into the step-by-step guide, it is pivotal to understand the concept of buffers in VI editor. A buffer in VI is a temporary storage area where text from yank (copy) or delete (cut) operations is stored. It acts like a clipboard, holding the data you’ve copied or cut, allowing you to paste it elsewhere, even across different files.

Copying Content between Files in VI Editor Using Buffers

In VI editor, the use of buffers is integral for copying content from one file to another. Buffers allow you to temporarily store and manage text, enabling seamless transitions between different files or sections. In this article, we’ll use buffers to copy entire and partial contents between files and then save them as a new file. As assumed, we are continuing from the previous article with files file1.txt and file2.txt.

Preparation: Modifying Existing Files

Let’s add some content to the existing files before starting the main tutorial. Open file1.txt using the VI editor:

vi file1.txt

Press i to go to insert mode and add the following lines:

New content for file1.txt.
More lines for illustration.

Press Esc, type :wq, and hit Enter to save and exit. Repeat the process for file2.txt.

Step 1: Opening Files in VI Editor

Start by opening both files in VI:

vi file1.txt file2.txt

Step 2: Using Buffers to Copy Entire Content

a) Navigate to file1.txt:

:n

This command navigates between open files.

b) Yank the entire content into a buffer:

ggVGy

Here, gg moves the cursor to the start of the file, V enables visual line mode, G moves to the end of the file, and finally, y yanks the selected content into the unnamed buffer.

c) Move to file2.txt:

:n

d) Paste the content from the buffer:

Gp

G moves the cursor to the end of file2.txt, and p pastes the content from the buffer.

e) Save the changes:

:w

Step 3: Using Buffers to Copy Partial Content and Save as a New File

a) Navigate to file1.txt and select partial content:

:n

Switch back to file1.txt using :n.

V

Press V to activate visual line mode and select the lines you wish to copy.

y

Press y to yank the selected lines into the buffer.

b) Navigate to file2.txt and paste the content:

:n

Move back to file2.txt.

p

Press p to paste the copied content where you wish.

c) Save the modified content as a new file:

:w new_combined_file.txt

This writes the current content of file2.txt to a new file named new_combined_file.txt.

Named Buffers

In addition to the default unnamed buffer, VI also supports named buffers. Named buffers allow you to copy content into specific buffers identified by a single letter. This is especially useful when working with multiple pieces of text or across multiple files simultaneously.

Using Multiple Named Buffers

Here’s how you can leverage named buffers:

a) Yanking content into a named buffer:

"ayy

Here, "a specifies the named buffer ‘a’, and yy yanks the current line into this buffer.

b) Pasting content from a named buffer:

"ap

"a specifies the named buffer ‘a’, and p pastes the content from this buffer.

Multiple Named Buffers

Suppose you want to copy content from file1.txt and file2.txt to file3.txt using named buffers.

vi file1.txt

Navigate to the line you want to copy and use:

"ayy

Switch to file2.txt and do the same with another buffer:

vi file2.txt
"byy

Now, open file3.txt:

vi file3.txt

Paste the content from buffer ‘a’:

"ap

And, paste the content from buffer ‘b’:

"bp

Conclusion

Understanding and utilizing buffers in VI for copying content between files provide precision and flexibility. Whether you are copying entire or partial content, the use of buffers ensures that the workflow remains uncluttered and efficient. The ability to create new files from modified content further accentuates the versatility of VI, making it a potent tool for any text-editing needs.

What Can You Do Next 🙏😊

If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.

YouTube @cloudaffle