Copying a File into Another File

Sometimes you want to copy text or data already entered on the system into the file you are editing. In vi, you can read in the contents of another file with the ex command:

:readfilename

or its abbreviation:

:rfilename

This command inserts the contents of filename starting on the line after the cursor position in the file. If you want to specify a line other than the one the cursor’s on, simply type the line number (or other line address) you want before the read or r command.

Let’s suppose you are editing the file practice and want to read in a file called data from another directory called /home/tim. Position the cursor one line above the line where you want the new data inserted, and enter:

:r /home/tim/data

The entire contents of /home/tim/data are read into practice, beginning below the line with the cursor.

To read in the same file and place it after line 185, you would enter:

:185r /home/tim/data

Here are other ways to read in a file:

:$r /home/tim/data

Place the read-in file at the end of the current file.

:0r /home/tim/data

Place the read-in file at the very beginning of the current file.

:/ pattern /r /home/tim/data

Place the read-in file in the current file, after the line containing pattern.

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.