Occasionally, I paste large amounts of data into vim, using Ctrl+v in my terminal emulator (in Linux). This takes several seconds before vim is responsive again. I have tried two other methods, which work well: either "+P, or temporarily :set noswapfile before pasting.

I have tested launching vanilla vim, using vim -u NONE, and the problem still persists. As a reference, this 5600-character lorem ipsum takes ~3 seconds to paste with Ctrl+v. It's almost instantaneous with "+P.

I only need the paste alternatives with large data and vim. In all other situations I use Ctrl+v. In vim, this also has the added advantage of working in insert mode. It's only after I paste long data, when I regret my life choices.

Is there a way to automatically apply some workaround, so that is it consistently quick to paste with Ctrl+v?

  • 2
    300000 chars? Personally I’d drop to a shell and do pbpaste >> file or equivalent. You might get away with :read !pbpaste but honestly I expect a performance hit with that much input`
    – D. Ben Knoble
    Commented Jan 27, 2019 at 6:13
  • 1
    I often paste large logs I may get through a webpage in vim so I can search through them properly (so, definitely more than half a page of text) and pasting is instantaneous (I'm on Linux). Maybe try a fresh vim (in a VM maybe, no plugins or vimrc). If pasting is fast there, then reintroduce your vimrc and plugins bit by bit till you find out which one is at fault.
    – Shahbaz
    Commented Jan 27, 2019 at 7:02
  • 2
    Have you tried :set swapsync=? That should prevent Vim from waiting until the swapfile is completly written. Commented Jan 28, 2019 at 12:55
  • 1
    well, for "+ vim knows that the input is coming from the system clipboard while for your other method of pasting it seems vim doesn't know. So it has to process the input as typed. Commented May 7, 2019 at 5:46
  • 1
    @Sparhawk It is not clear to me, that your terminal actually uses xterm-bracketed-paste you haven't said what terminal you used and xterm-bracketed-pasted needs terminal support. So my guess is, it is not being used (or not correctly configured), don't know Commented May 7, 2019 at 10:13

5 Answers 5


You can try setting lazyredraw.

  • Unfortunately this makes no difference.
    – Sparhawk
    Commented Jan 28, 2019 at 0:47

you could try disabling backup/swap files. if pasting the contents into memory is all you want, disabling disk writes might be faster.

from https://stackoverflow.com/q/743150/11374957

set nobackup       "no backup files
set nowritebackup  "only in case you don't want a backup file while editing
set noswapfile     "no swap files

you could do a comparison with/without those settings and see if it's any faster. another option: do the same test, but turn on a disk I/O monitoring app first and see if that shows any meaningful spike (with backup files enabled) vs. drop (with nobackup, nowritebackup, noswapfile).

  • It's maybe twice as faster with those three settings than without, but still considerably slower than "+p. Also, in the long term, I certainly don't want to disable those settings. Given that "+p is near instantaneous with those settings set, I feel like there is some other issue here.
    – Sparhawk
    Commented Apr 18, 2019 at 5:29
  • Well, have you tried the suggestion with the swapsync setting as I mentioned before? Commented Apr 18, 2019 at 6:04
  • @ChristianBrabandt Oops, sorry, I must have missed that. I'm away from this system for a week or so, but I'll have a look when I'm back.
    – Sparhawk
    Commented Apr 18, 2019 at 11:50

If you're using something like <Ctrl-V> or <Cmd-v> or equivalent you're doing it wrong. Doing that, the text is pasted into the vim buffer, as if you were typing it. That can have a lot of delay because of several vim options such as autoindent, etc.

Typically you can use either "+p or "+]p (this pastes keeping current indent level in mind) to paste text near instantly as it is.

VIM also has a little known Paste Mode, which essentially is a special mode that disables a bunch of vim settings to allow hassle free pasting without having to worry about vim treating the text in some way, shape of form other than just adding to the buffer. You can have a look at :help 'paste' for more info, there is also a helpful setting pastetoggle to assist with easy enabling / disable of paste mode.

However, in my experience just using the paste operator instead of a native <ctrl-v> version is significantly better.

NOTE: It would be more memory & compute efficient to do this outside of vim with shell redirection.

  • I don't get any autoindent when I paste with ctrl+v, possibly because of xterm-bracketed-paste (but as per the comments to the question, we're not sure). Either way, I don't think it's "as if you were typing it" for me. After :set paste, pasting is still as slow as ever, although now the text is outputted to the screen bit-by-bit as it pastes, instead of all at the end. Using the paste operator is preferred, but as per my question, I often forget!
    – Sparhawk
    Commented Jun 12, 2020 at 4:17

What about just remap ctrl-v in insert mode to paste from system clipboard?

inoremap <c-v> <esc>"+p

Does this work for you?

  • I'm guessing they'd also need to modify their terminal config to pass the Ctrl-V onto Vim, as in their current setup Vim won't ever see the CTRL-V keypress: it will only receive the text inserted by the terminal.
    – Rich
    Commented Jan 13, 2020 at 15:39
  • Yes, good idea, but if the terminal never sees ctrl+v as paste, then I could never paste into the CLI, for example.
    – Sparhawk
    Commented Jan 13, 2020 at 23:20
  • @Sparhawk, which terminal are you using? AFAIK, Linux terminal does not support ctrl-v to paste into the terminal. You need to use Shift+Insert.
    – jdhao
    Commented Jan 14, 2020 at 2:19
  • Terminator, which does support ctrl+v for paste. shift+insert sends the primary selection instead.
    – Sparhawk
    Commented Jan 14, 2020 at 2:20
  • Then I think you may use another terminal, for example, kitty or Alacritty.
    – jdhao
    Commented Jan 14, 2020 at 2:25

I'm going to post and accept this as the best solution proposed, since it was a comment over a year ago that was never converted to an answer.

As per Christian Brabandt's comment, :set swapsync= speeds up the paste by a lot.

Benchmarking with a 100 paragraph lorem ipsum (lorem-ipsum-generator -p 100):

  • "+p is near instantaneous
  • ctrl+v takes ~3.6 s
  • ctrl+v with :set swapsync= takes ~0.3 s

So it's not quite as fast as "+p, but it's pretty good.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.