vim and system clipboard
Solution 1:
You need to have Vim with the clipboard
and xtermclipboard
features compiled in. In Ubuntu, these are only available with the vim GUI packages (vim-gnome
, vim-gtk
, vim-athena
, etc.).
Once you install one of these, you can copy to (and paste from) the clipboard registers (*
and +
). From this very informative post on Vi and Vim:
For X11-based systems (ie. Linux and most other UNIX-like systems) there are 2 clipboards, which are independent of each other:
- PRIMARY - This is copy-on-select, and can be pasted with the middle mouse button.
- CLIPBOARD - This is copied with (usually)
^C
, and pasted with^V
(It's like MS Windows).
Vim has 2 special registers corresponding to these clipboards:
*
uses PRIMARY; mnemonic: star is select (for copy-on-select)+
uses CLIPBOARD; mnemonic: CTRL + C (for the common keybind)
To copy to a register, you precede the copy command (y
) with "
and the name of the register (*
, for example). "*y
, then middle-click to paste, or "+y
and ShiftInsert to paste.
Solution 2:
I had issue because my vim was not supporting clipboard:
vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
I installed vim-gnome (which support clipboard) and then checked again:
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
Now I am able to copy and paste using "+y and "+p respectively.
Solution 3:
A quite interesting solution comes from this question. Install xclip, then pipe output of a command to xclip( cat file | xclip -selection clipboard
for instance ), and then paste it anywhere, (if that's in terminal - use Ctrl ShiftV
). Now , turns out you can actually shorten that command to xclip -sel clip
, which is not exactly apparent from reading man page or examples there.