Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Turning off auto indent when pasting text into vim

I am making the effort to learn Vim.

When I paste code into my document from the clipboard, I get extra spaces at the start of each new line:

line   line     line 

I know you can turn off auto indent but I can't get it to work because I have some other settings conflicting or something (which look pretty obvious in my .vimrc but don't seem to matter when I take them out).

How do I turn off auto indenting when I paste code but still have vim auto indent when I am writing code? Here is my .vimrc file:

set expandtab   set tabstop=2   set shiftwidth=2   set autoindent   set smartindent   set bg=dark   set nowrap   
like image 326
Rimian Avatar asked Mar 25 '10 09:03

Rimian


People also ask

Why does Vim auto indent?

autoindent essentially tells vim to apply the indentation of the current line to the next (created by pressing enter in insert mode or with O or o in normal mode. smartindent reacts to the syntax/style of the code you are editing (especially for C). When having it on you also should have autoindent on.

How do you paste without indent?

vimrc so pressing F2 toggles paste on and off.


1 Answers

Update: Better answer here: https://stackoverflow.com/a/38258720/62202

To turn off autoindent when you paste code, there's a special "paste" mode.

Type

:set paste 

Then paste your code. Note that the text in the tooltip now says -- INSERT (paste) --.

After you pasted your code, turn off the paste-mode, so that auto-indenting when you type works correctly again.

:set nopaste 

However, I always found that cumbersome. That's why I map <F3> such that it can switch between paste and nopaste modes while editing the text! I add this to .vimrc

set pastetoggle=<F3> 
like image 162
P Shved Avatar answered Oct 05 '22 08:10

P Shved