In Vim, if I paste this script:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
I get these strange results:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Hash signs (#) and tabs have appeared. Why?
Best Answer
There're two reasons:
For pasting in
vim
while auto-indent is enabled, you must change to paste mode by typing:Then you can change to insert mode and paste your code. After pasting is done, type:
to turn off paste mode. Since this is a common and frequent action,
vim
offers toggling paste mode:You can change
F2
to whatever key you want, and now you can turn pasting on and off easily.To turn off auto-insert of comments, you can add these lines to your vimrc:
vim
also provides a pasting register for you to paste text from the system clipboard. You can use"*p
or"+p
depending on your system. On a system without X11, such as OSX or Windows, you have to use the*
register. On an X11 system, like Linux, you can use both.Further reading