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 withxsel >file.txt
orxsel -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, orxclip -out -selection clipboard
for the clipboard buffer.