I'm trying to find the right ex command to overwrite the current vim buffer with the system clipboard.

The relevant system clipboard register is "+ in this case.

My first guess was to use :%+p; i.e. select the whole buffer % and then paste p the "+ register to the current buffer. But this doesn't work.

The other way around, yanking the current buffer into the system clipboard is accomplished by :%y+; % select the whole buffer; y copy; + to the system clipboard register.

  • Based on the answer of @statox , youve got the put syntax wrong. Register comes after.
    – D. Ben Knoble
    Commented Jun 18, 2018 at 12:43
  • @D.BenKnoble Nope, the put syntax isn't right if it's put afterwards either. Both syntaxes are wrong. That is, if you mean :%p+, by the registers come after; it results in an error: E488: Trailing characters. Commented Jun 18, 2018 at 13:23
  • Darn. I’ll do some reading later this evening. But statox has the right idea (two commands, delete then put)
    – D. Ben Knoble
    Commented Jun 18, 2018 at 13:24
  • @D.BenKnoble Alright! Well, :%d | put + doesn't work either, obviously since it's the same command. But, I'll be digging into this too; two commands seem like the right amount. :) Commented Jun 18, 2018 at 13:26
  • @MusséRedi p+ doesn't work because p is the print command, :pu is the shortest form of put (:%pu+ is valid but doesn't quite do what you want).
    – Mass
    Commented Jun 18, 2018 at 23:28

2 Answers 2


You could add the following in your vimrc:

command! ReplaceWithClipboard %d | put +

This way when you call the command :ReplaceWithClipboard vim will

  • %d delete all the lines in the buffer
  • put + put your clipboard register

You can have a look at

  • This does not work. Even when I tried populating the system clipboard from within vim itself. The message in the header below just reads --No lines in buffer--. Commented Jun 18, 2018 at 13:17
  • 1
    @MusséRedi That's weird it works fine on my setup, maybe try to start Vim without configuration vim -u NONE
    – statox
    Commented Jun 18, 2018 at 13:26
  • Well, it seems that you're right; it works when starting vim without configuration. What kind of configuration settings could be interfering with these two simple commands? Commented Jun 18, 2018 at 13:36
  • @MusséRedi Take a look at our famous question How do I debug my vimrc to find out ;)
    – statox
    Commented Jun 18, 2018 at 14:17
  • might want to use sil %d _ to hide the "no lines in buffer" message and to prevent that the deleted stuff ends up in the clipboard (:h clipboard-unnamed). Might as well need 0put +|$d _ to remove the trailing new-line that will be added (without the 0put it will appear in line 1) Commented Jun 18, 2018 at 14:30

By visual selection, one can (1) select the whole buffer by moving the start of the buffer, with the motion gg; (2) pressing v, to transfer to visual mode; (3) executing the motion GG, to select the whole buffer; (4) accessing the system clipboard register +, by pressing "+; and finally, (5) pasting the register into the current buffer, by pressing p. :)

I still don't know how to do this in the form of a self-contained ex-command though, in which I'm interested.

  • 1
    is :0norm!VG"+p cheating?
    – Mass
    Commented Jun 18, 2018 at 23:36
  • @Mass Could you elaborate? Commented Jun 19, 2018 at 10:48
  • 1
    :0 go to 1st line; norm! to execute as in normal mode. V to visual-line mode. G to go to EOF. Now we have in visual mode whole buffer selected. "+p to replace selected (whole buffer) to register +. Commented Feb 9, 2021 at 9:33

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.