gvim: Easy copying into system clipboard

后端 未结 5 448
庸人自扰
庸人自扰 2021-02-03 23:37

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 \"

相关标签:
5条回答
  • 2021-02-03 23:45

    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.

    0 讨论(0)
  • 2021-02-03 23:52

    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 (+).

    0 讨论(0)
  • 2021-02-03 23:53

    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.

    0 讨论(0)
  • 2021-02-03 23:54

    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:

    1. Open your terminal, run vim –-version | grep xterm_clipboard
    2. Check the sign before xterm_clipboard, if it’s a + (plus sign), go to step 4.
    3. If it’s a - (minus sign), run 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).
    4. 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 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.
    5. 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 of vim.
    0 讨论(0)
  • 2021-02-04 00:00

    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.

    0 讨论(0)
提交回复
热议问题