Vim|Toggle auto-indenting for code paste - Vim
Toggle auto-indenting for code paste - Vim Tips Wiki - a Wikia wiki: "Toggle auto-indenting for code paste
From Vim Tips Wiki
(Redirected from Paste Indent Problems)
Jump to: navigation, search
Tip 906 Previous Next created 2005 · complexity basic · version 6.0
Pasting text into a terminal running Vim with 'autoindent' or 'smartindent' set can destroy the indenting of the pasted text. This tip shows how to avoid the problem.
See How to stop auto indenting for automatic indentation issues while you are typing.
Contents
[hide]
* 1 Background
* 2 Paste toggle
* 3 References
* 4 Comments
edit Background
If you use Vim commands to paste text, nothing unexpected occurs. The problem only arises when pasting from another application, and only when you are not using a GUI version of Vim.
In a console or terminal version of Vim (not gvim), there is no standard procedure to paste text from another application. Instead, the shell may emulate pasting by inserting text into the keyboard buffer, so Vim thinks the text has been typed by the user. After each line ending, Vim may move the cursor so the next line starts with the same indent as the last. However, that will change the indents already in the pasted text.
edit Paste toggle
Put the following in your vimrc (change the <F2> to whatever key you want):
set pastetoggle=<F2>
To paste from another application:
* Press <F2> (toggles the 'paste' option on).
* Use your shell to paste text from the clipboard.
* Press <F2> (toggles the 'paste' option off).
Then the existing indentation of the pasted text will be retained.
If you have a mapping for <F2>, that mapping will apply (and the pastetoggle function will not operate).
Some people like the visual feedback shown in the status line by the following alternative for your vimrc:
nnoremap <F2> :set invpaste paste?<CR>
imap <F2> <C-O><F2>
set pastetoggle=<F2>
The first line sets a mapping so that pressing <F2> in normal mode will invert the 'paste' option, and will then show the value of that option. The second line does the same in insert mode (but insert mode mappings only apply when 'paste' is off). The third line allows you to press <F2> when in insert mode, to turn 'paste' off."
No comments:
Post a Comment