Copy to clipboard from terminal with Vim bindings
Question
How do I copy to clipboard from terminal with yy
, assuming it's configured to use Vim bindings?
I am using zsh with bindkey -v
.
MWE
- Enter something on the commandline (without pressing enter):
$ uptime
. - Enter visual mode:
ESC
. - Yank:
yy
.
This successfully yanks uptime\n
, but only copys to the primary
buffer. I'd like to copy to the secondary (clipboard) buffer.
2 answers
You are accessing this answer with a direct link, so it's being shown above all other answers regardless of its score. You can return to the normal view.
Vim has multiple "registers", which in modern parlance is multiple internal clipboards.
By default, y
ank sends to an anonymous register, which is separate from the clipboard. However, you can make it send to other registers. The registers *
and +
in particular are interesting, because they happen to be connected to the system clipboard that most people use.
So all you do is yank to a non-default register: "*y
And you can paste from the same with "*p
.
You might want to make that behavior the default for yy
- you can do so with set clipboard=unnamed,unnamedplus
. On Linux with X, one of these is for the "normal" clipboard, the other is for the select-and-middle-click clipboard.
See also:
- https://wiki.archlinux.org/title/Vim#Clipboard
- https://vim.fandom.com/wiki/Accessing_the_system_clipboard
- https://stackoverflow.com/a/3961954/21703684
0 comment threads
I use kitty as my terminal, which allows you to map a key for copying any text from the screen to the keyboard. The text is selected by pressing some hint keys, similar to the Vimium extension. It's quite flexible but I mostly use "copy line" and "copy word".
This just works with clipboard managers like CopyQ, courtesy of Kitty supporting modern clipboards. This is not specific to vim, it's a general feature for anything that runs in the terminal, which vim happens to be. It's convenient enough that I haven't bothered setting up the vim clipboard integration since it stopped working a while ago.
0 comment threads