How do I use vim registers?
I only know of one instance using registers is via CtrlR* whereby I paste text from a clipboard.
What are other uses of registers? How to use them?
Everything you know about VI registers (let's focus on vi 7.2) -- share with us.
Solution 1:
Registers in Vim let you run actions or commands on text stored within them. To access a register, you type "a
before a command, where a
is the name of a register. If you want to copy the current line into register k
, you can type
"kyy
Or you can append to a register by using a capital letter
"Kyy
You can then move through the document and paste it elsewhere using
"kp
To paste from system clipboard on Linux
"+p
To paste from system clipboard on Windows (or from "mouse highlight" clipboard on Linux)
"*p
To access all currently defined registers type
:reg
Solution 2:
I was pleased when I discovered the 0
register. If you yank text without assigning it to a particular register, then it will be assigned to the 0
register, as well as being saved in the default "
register. The difference between the 0
and "
registers is that 0
is only populated with yanked text, whereas the default register is also populated with text deleted using d
/D
/x
/X
/c
/C
/s
/S
commands.
I find this useful when I want to copy some text, delete something and replace it with the copied text. The following steps illustrate an example:
- Yank the text you want to copy with
y[motion]
- this text is saved in"
and0
registers - Delete the text you want to replace with
d[motion]
- this text is saved in"
register - Paste the yanked text with
"0p
where "
is the command to use a register for the next command.
On the final step, if you were to paste from the default register (with p
), it would use the text that you had just deleted (probably not what you intended).
Note that p
or P
pastes from the default register. The longhand equivalent would be ""p
(or ""P
) and "0
holds the last yank, "1
holds the last delete or change.
For more info see :help registers
.