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.
Related videos on Youtube
grantbow
It's always morning somewhere. Happy to help when I can.
Updated on September 18, 2022Comments
-
grantbow over 1 year
I can cat a file, copy and paste text with the middle button or shift-insert.
How can I copy text in vim and paste it from the system clipboard?
-
grantbow over 7 yearssometimes I use
sed -n5,10p
to print lines 5-10 so I can more easily copy and paste without vim reacting to the mouse. -
grantbow over 7 yearsactually from inside vim the command looks like
:!sed -n 5,10p %
-
grantbow over 5 yearsThanks for all the comments and answers. xclip is useful sometimes, thanks @sergiy-kolodyazhnyy. When I work on different machines I sometimes do not have control over which vim is installed but having the instructions for checking @muru 's answer is helpful, thanks @ashutosh-tripathy. I need to use the vim register commands more often to remember them when I need them. As I mentioned in the question above, if I want to do it quickly and the file is small the command inside vim looks like
:!cat %
-
-
muru almost 9 yearsAnother way out is if you use screen or tmux, along with this plugin. In any case, something needs to be installed.
-
Sergiy Kolodyazhnyy almost 9 yearsWhat's the actual clipboard that is used in x server ? I didn't find anything in
/dev
, but text is still held somewhere, right ? -
muru almost 9 yearsI always assumed it would be in memory. That seems like a nice question for Unix & Linux, though.
-
Goblinhack almost 3 yearsin ubuntu 20 this no longer works -had to install vim-gtk