Speed up pasting into vim

clipboardvim

I copied a part of the HTML out of a web page and wanted to save it in a file.
For that I started a new vim session in a terminal window, with a (new) filename specified on the commandline, hit i to get to insert mode and then CtrlShift+V and waited while [-- INSERT --] showed at the bottom and waited…

As vim was non-responsive after several seconds, I opened 'Text Editor' from the Applications→Accessoiries menu pasted the text (which showed up within a fraction of a second, saved it under a new name, closed, and killed the Vim session that still was not done, 1.5 minutes later.
The amount of text was 186K in 3200 lines, not excessive I would say, nor with overly long lines.

Is there a way to speed up these kind of insertions in vim and/or is there an explanation why this is so slow compared to using the, otherwise horrible and mouse oriented, Text Editor?

(The %CPU according to top doesn't come above 5%, although I have some processors free in the system, so it might be some I/O bound problem, that doesn't exist when reading the same text from a file)

Version info:
Ubuntu 12.04
Vim: 7.3, with patches as supplied by Ubuntu 12.04
bash: 4.2.25
gnome-terminal: 3.4.1.1

Best Answer

To save a lot of clipboard text to file quickly, you can run cat > file.txt, paste the contents, then press Ctrl-d.

If you have xsel installed, you can do :r !xsel to insert the "primary" (aka. "mouse") selection in Vim, or :r !xsel -b to insert the "clipboard" (Ctrl-c) buffer. You can also save the selection directly to a file with xsel >file.txt or xsel -b >file.txt. This removes the need for separate pasting + EOF actions, and avoids printing the entire copy buffer in the terminal.

If you have no xsel but xclip, the corresponding commands are xclip -out for the primary selection, or xclip -out -selection clipboard for the clipboard buffer.

Related Question