How to copy to clipboard in Vim? – Dev

The best answers to the question “How to copy to clipboard in Vim?” in the category Dev.

QUESTION:

Is it possible to copy to clipboard directly from Vim? yy only copies stuff to Vim’s internal buffer. I want to copy to the OS’s clipboard. Is there any such command in Vim or you can only yank stuff within Vim?

ANSWER:

On Mac OSX

  • copy selected part: visually select text(type v or V in normal
    mode) and type :w !pbcopy

  • copy the whole file :%w !pbcopy

  • paste from the clipboard :r !pbpaste

On most Linux Distros, you can substitute:

  • pbcopy above with xclip -i -sel c or xsel -i -b
  • pbpaste using xclip -o -sel -c or xsel -o -b
    Note: In case neither of these tools (xsel and xclip) are preinstalled on your distro, you can probably find them in the repos

ANSWER:

The * register will do this. In Windows, + and * are equivalent. In unix there is a subtle difference between + and *:

Under Windows, the * and + registers
are equivalent. For X11 systems,
though, they differ. For X11 systems,
* is the selection, and + is the cut buffer (like clipboard).
http://vim.wikia.com/wiki/Accessing_the_system_clipboard

* is probably what you want most of the time, so I use * because it functions as I expect it to in both environments.

In Linux distros you have to install vim-gtk (aka gvim) first to gain clipboard functionality. This is because non-gtk vim is typically compiled without X11 support. This is to allow it to run on console only machines (often servers).

And for those confused about how to use registers when yanking or putting, you merely write " then the name of the register. So for copying something to the clipboard register you type "*y and then to put you type "*p (credit: Kyle Mathews)

ANSWER:

Use the register "+ to copy to the system clipboard (i.e. "+y instead of y).

Likewise you can paste from "+ to get text from the system clipboard (i.e. "+p instead of p).

ANSWER:

In your vimrc file you can specify to automatically use the system clipboard for copy and paste.

On Windows set:

set clipboard=unnamed

On Linux set (vim 7.3.74+):

set clipboard=unnamedplus

NOTE: You may need to use an up to date version of Vim for these to work.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard