KEEPING THE ORIGINAL FILE
If you are editing source files, you might want to keep the file before you
make any changes. But the backup file will be overwritten each time you write
the file. Thus it only contains the previous version, not the first one.
To make Vim keep the original file, set the 'patchmode' option. This
specifies the extension used for the first backup of a changed file. Usually
you would do this: >
:set patchmode=.orig
When you now edit the file data.txt for the first time, make changes and write
the file, Vim will keep a copy of the unchanged file under the name
"data.txt.orig".
If you make further changes to the file, Vim will notice that
"data.txt.orig" already exists and leave it alone. Further backup files will
then be called "data.txt~" (or whatever you specified with 'backupext').
If you leave 'patchmode' empty (that is the default), the original file
will not be kept.
==============================================================================
*07.5* Copy text between files
This explains how to copy text from one file to another. Let's start with a
simple example. Edit the file that contains the text you want to copy. Move
the cursor to the start of the text and press "v". This starts Visual mode.
Now move the cursor to the end of the text and press "y". This yanks (copies)
the selected text.
To copy the above paragraph, you would do: >
:edit thisfile
/This
vjjjj$y
Now edit the file you want to put the text in. Move the cursor to the
character where you want the text to appear after. Use "p" to put the text
there. >
:edit otherfile
/There
p
Of course you can use many other commands to yank the text. For example, to
select whole lines start Visual mode with "V". Or use CTRL-V to select a
rectangular block. Or use "yy" to yank a single line, "yaw" to yank-a-word,
etc.
The "p" command puts the text after the cursor. Use "P" to put the text
before the cursor. Notice that Vim remembers if you yanked a whole line or a
block, and puts it back that way.
USING REGISTERS
When you want to copy several pieces of text from one file to another, having
to switch between the files and writing the target file takes a lot of time.
To avoid this, copy each piece of text to its own register.
A register is a place where Vim stores text. Here we will use the
registers named a to z (later you will find out there are others). Let's copy
a sentence to the f register (f for First): >
"fyas
The "yas" command yanks a sentence like before. It's the "f that tells Vim
the text should be placed in the f register. This must come just before the
yank command.
Now yank three whole lines to the l register (l for line): >
"l3yy
The count could be before the "l just as well. To yank a block of text to the
b (for block) register: >
CTRL-Vjjww"by
Notice that the register specification "b is just before the "y" command.
This is required. If you would have put it before the "w" command, it would
not have worked.
Now you have three pieces of text in the f, l and b registers. Edit
another file, move around and place the text where you want it: >
"fp
Again, the register specification "f comes before the "p" command.
You can put the registers in any order. And the text stays in the register
until you yank something else into it. Thus you can put it as many times as
you like.
When you delete text, you can also specify a register.