I am using gVim on Ubuntu 10.10. I want to copy (yank) text to the system clipboard, so that the copied text is available in other applications.
This works with \"
Select some text in visual mode and it will be inserted into the system clipboard (the one where you middle-click to paste, I cannot recall the exact name).
If you set mouse=a
you can use the mouse for visual selection like you would in many other applications.
Did you try to map with this command:
noremap y "+y
? This mapping contains a serious mistake: it maps y
in normal, visual and operator-pending modes, while you need only normal and visual modes. Use the following:
nnoremap y "+y
vnoremap y "+y
Also try set clipboard=unnamedplus
(it requires at least vim-7.3.74). set clipboard=unnamed
works in both directions, but it sets «mouse» (*
) register which is different from clipboard register (+
).
In my case, I can sometimes copy from gvim to the system clipboard and sometimes not. I found a workaround, though I don't understand the underlying problem. If I copy text in another application (e.g. Notepad, as I am on Windows 7), then I can copy text from gvim and paste it elsewhere. It looks I need do this for each copy out of gvim.
Most online solutions simply tell you to map y
to "+y
. But sometimes the issue is "+y
doesn't even work. You do need to check what features your vim
has been compiled with.
Try the steps below:
vim –-version | grep xterm_clipboard
xterm_clipboard
, if it’s a +
(plus sign), go to step 4. sudo apt-get install vim-gnome
, then sudo update-alternatives –config vim
, select vim.gnome
in the list (You should use the proper command that corresponds to your system). Run command vim –-version | grep xterm_clipboard
again, now you should be able to get +
(plus sign). +
(plus sign) or *
(star sign) register of vim, this depends on the OS you're using, sometimes they’re equivalent. How to check? Just copy some random text, then open vim
and type :reg
, check which register shows the string you just copied. If it’s a +
(plus sign), add set clipboard=unnamedplus
to your .vimrc
. If it’s a *
(star sign), add set clipboard=unnamed
.vim
, and then type :reg
to check if the system clipboard has changed. If it does, your will get whatever is in that register when you paste outside of vim
.I have the very same idea as you, but I did it for years.
nnoremap yy yy"+yy
vnoremap y ygv"+y
Note that now yy
command does two things: First it yank to register as normal, and then it yank to "
register (system clipboard). The y
command does the same thing. This is because I want to keep the multiple clipboard functionality of Vim.
For pasting from system clipboard, I used to have noremap gp "+p
(global pasting), but now I use the excellent plugin Yankring.