51

I'm running Vim 7.3 under Linux Mint 13 (using MATE) and I'm not able to save text to the system clipboard. I run Vim in the terminal and copy text from the terminal with CTRLINSERT. When I select text in Vim (either with the mouse or in visual mode), CTRLINSERT doesn't copy any text. In addition when I right-click, Copy is grayed out. Further, I can't write to the system buffer by yanking to the corresponding register using vim commands. However, I'm able to paste while in insert mode (using SHIFTINSERT or right-click paste). I'm also able to copy text directly from the terminal using the same technique, just not text from Vim.

Here is my current ~/.vimrc. The relevant part is most likely set clipboard=autoselect,unnamed,exclude:cons\|linux. If I put finish at the top of my ~/.vimrc, I have the same issue, so I think the line is wrong, but I've tried set clipboard=unnamed and had the same behavior.

Could there be another config file affecting Vim's behavior? How can I change my ~/.vimrc to allow me to copy text from Vim?

maksim
  • 621
  • 1
  • 5
  • 6

8 Answers8

97

I believe your copy problem is caused by:

mouse=a 

in your .vimrc This sets your vim into visual mode whenever you select something with the mouse. And for some mad reason one is not allowed to copy when in visual mode. You can get around it by holding down shift when selecting text not to go into visual mode allowing you to use the copy menu.

or you could change to:

:set mouse=v

and copy will work again.

Add :set mouse=v to your ~/.vimrc file if you want it to be permanent (create ~/.vimrc if it does not exist yet).

Tms91
  • 182
  • 11
  • 4
    While this might actually solve their problem an explanation of *why it works* would be more useful. Without it your answer is just telling someone to [Press the Green Button Twice](http://blog.serverfault.com/2011/06/09/press-the-green-button-twice/) - It might work, it might not, but it doesn't enlighten them. – voretaq7 Jun 11 '12 at 16:06
  • Thanks, that solved it. The explanation you added after voretaq7's comment helped a lot, too! –  Jun 11 '12 at 20:49
  • This works for Cygwin, too. – Dave Jarvis Nov 21 '12 at 00:22
  • 1
    This mode will highlight everything, so if I want to copy a few lines, I'm also copying line numbers and all the empty space after each line until the end of the screen. Is there a way to only have it select the relevant content (which is how highlight works when `mouse=a`)? – Dennis Mar 12 '14 at 18:08
  • Good answer. Just a plus: more mouse modes here `:help mouse` – DrBeco Aug 25 '14 at 21:42
  • Just the tip of holding shift while highlighting was spot on. I use the primary (highlight + middle mouse click) copy/paste all the time. Thanks. – James Oct 11 '14 at 12:58
  • 1
    After being frustrated by this for YEARS, you have saved me a lot of future misery! – hopeseekr May 05 '19 at 15:26
  • no matter what I do the mouse defaults away from whatever I select. – Richard Sep 28 '19 at 20:48
  • 1
    Thanks, solved my pain. What I don't understand is why Vim (8.1 for me) sets `mouse=a` as default? This is very frustrating. – ibic Dec 30 '19 at 11:36
19

sudo apt-get install vim-gtk will likely solve this problem for other Googlers.

Good ol' terminal-style vim doesn't have access to the clipboard, which is a part of the X windows system. Installing vim-gtk gives vim the access that it needs to modify and view the clipboard.

Cory Klein
  • 1,602
  • 2
  • 17
  • 21
  • 3
    Works! On Debian Buster (now in testing) I installed vim-gtk and then my command line vim in xterm allowed me to use the `*` and `+` buffers to access the x window buffers. The vim-gtk installation uses the Debian alternatives to set `vim -> /usr/bin/vim.gtk`. – RobertL Apr 09 '19 at 17:52
1

Using Pop!_OS 21.04 and ran into this issue.

Per this github comment, installing xclip worked fixed this for me.

sudo apt install xclip

1

just gvim on arch linux if anyone wants to know. Also, have a look at neovim (and python-neovim && python2-neovim for You Complete Me support, etc).

dylnmc
  • 241
  • 2
  • 5
0

I use this plugin. Works even if you have -xterm_cliboardor -clipboard. The mapping is also very simple, just cp and cv for copy and paste.

neelabalan
  • 46
  • 5
0

On the question text at first:
I do not believe that you cannot select and copy with the mouse "what you see" in the window since I have the same issue like you, it seems, and I can do so, but I cannot mark more than the window and copy that, only then, Copy is grayed out. Well, we might have different problems here. Still, this tool trick should help as well:

Alacritty

You need a terminal program that embeds vim into the terminal text, for example the "Alacritty" terminal. With that, you can just zoom out and copy with Ctrl+Shift+C or your clipboard key.

You can also try the vim mode: press Ctrl+Shift+Space, you can then move through the console history and mark what you need, if you need all, type the vim command ggVG, afterwards, you can paste it in a text file and then back in terminal, you get out of the vim mode by pressing Ctrl+Shift+Space again.

Tmux + clipboard (in Alacritty or another terminal)

If you need to copy large text that you cannot copy with the zoom out trick of Alacritty, install tmux and a clipboard like xclip or xsel. Tmux is not a terminal on its own. Try its commands in Alacritty or any other terminal.

sudo apt-get update -y 
sudo apt-get install -y xclip

And put this in your ~/.tmux.conf to bind y to the xclip copy:

bind -T copy-mode-vi y send -X copy-pipe "xclip -selection c"

With the tmux shortcut Ctrl+B-->[ you can start marking whatever you want with Space and then Arrows or picture up/down. After you marked all of the needed text, press y that you bound to "copy to xclip". That makes it possible to copy anything, no matter what size.

See also How to copy multi-page text from the terminal into the clipboard?.

questionto42
  • 1,861
  • 3
  • 21
  • 52
0

I was having the same trouble in nvim on macOS, and got it working by running this (no need to modify it, just press : then run as-is):

set mouse=

After that I could copy/paste from nvim in the terminal as expected.

I found this information here

stevec
  • 641
  • 7
  • 16
0

The terminal doesn't know anything about vim selections, so don't expect it to be any help. You will need vim to be built against X (e.g. gvim -v), and then yank to and put from the + register.

Ignacio Vazquez-Abrams
  • 111,361
  • 10
  • 201
  • 247
  • 3
    The `vim-gtk` package in Ubuntu contains clipboard support (even when executed as `vim` in a terminal). – mgorven Jun 11 '12 at 04:15
  • Agreed and confirmed on Debian Buster (now in testing) I installed vim-gtk and then my command line vim in xterm allowed me to use the * and + buffers to access the x window buffers. The vim-gtk installation uses the Debian alternatives to set vim -> /usr/bin/vim.gtk. – RobertL Apr 09 '19 at 17:57