gvim: Easy copying into system clipboard
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 "+y
. But I want to have it working with y
.
I have tried to map y
to "+y
but then yy
doesn't work anymore (since it produces "+y"+y
).
I have also tried
:set clipboard=unnamed
but this works only the other direction: Text in开发者_运维知识库 the system clipboard I can paste with p
.
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 (+
).
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:
- Open your terminal, run
vim –-version | grep xterm_clipboard
- Check the sign before
xterm_clipboard
, if it’s a+
(plus sign), go to step 4. - If it’s a - (minus sign), run
sudo apt-get install vim-gnome
, thensudo update-alternatives –config vim
, selectvim.gnome
in the list (You should use the proper command that corresponds to your system). Run commandvim –-version | grep xterm_clipboard
again, now you should be able to get+
(plus sign). - Check whether your system clipboard uses
+
(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 openvim
and type:reg
, check which register shows the string you just copied. If it’s a+
(plus sign), addset clipboard=unnamedplus
to your.vimrc
. If it’s a*
(star sign), addset clipboard=unnamed
. - Test it out. Copy something inside
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 ofvim
.
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.
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.
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.
精彩评论