Faster copy to clipboard in Vim
tl;dr: I just mapped Y
to "+y
and I am very pleased with it.
A coworker saw me copying some text out of Vim and humored me: everything seemed to happen like magic in my editor, but for a simple thing as copy and paste I needed a lot of keys.
It is true: in order to copy text within Vim, you can use the y
command, combined with the motion of what you want to yank. So: yiw
will yank inside a word, ggyG
will go to the top of the file and then yank until the bottom (so, the whole file), yy
will yank a full line. But these yanks are only pastable (with p
) within Vim itself.
In order to get text out of Vim, you need to use a special register. Registers are a sort of named boxes, letters a to z, in which you can put snippets of text. To use it, you prefix your yank (or delete) with a quote: "ayi(
will select register a
and then yank the text within parentheses. To get to your system clipboard (the one all other programs use), you select the special register with "+
.
Thus: my coworker saw me hunting for the "+y
combination, probably. I almost always look at my keyboard when I do that, so awkward is the combination. But I just found a solution: Y
.
nmap Y "+y
vmap Y "+y
By default, Y
does a yy
, which I never use, because it's inconsistent with other commands. D
, for example is equivalent to d$
, delete until the end of the line, same for C
as c$
. I guess it makes Y
play along with V
(line-wise visual select) and S
(subsitute full line), but I always use yy
anyway, so Y
is free to use. When I now want to yank to my system clipboard, I just use Y
instead of y
and that's it.
You can also consider adding this as gy
, which does not have a meaning, but g
combines with various commands to activate variation of their meaning, so it's not a bad choice either. I mapped it to both and will see which one sticks.