Você precisa :set paste!
antes e depois de colar coisas da área de transferência do sistema no vim.
Esta é uma parte do meu arquivo .vimrc.
" when opening a Python file, use spaces instead of tabs (et, expandtabs),
" use 4 spaces as tabulation (ts=4, tabstop), use 4 spaces when adding
" a tabulation automatically (sw=4, shiftwidth) and thread 4 spaces as
" a tabulation when deleting (softtabstop=4)
au FileType python set et ts=4 sw=4 softtabstop=4
autocmd BufRead *.py set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
autocmd BufRead *.py set efm=%C\ %.%#,%A\ \ File\ \"%f\"\,\ line\ %l%.%#,%Z%[%^\ ]%\@=%m
autocmd BufRead *.py nmap <F5> :!python %<CR>
Funciona muito bem para editar python. No entanto, quando eu preciso colar o código Python pré-recortado em um arquivo python do buffer da área de transferência, acabo com algo parecido com isto:
class GlobalOptions:
def __init__(self):
self.DebugLevel = 0
def __repr__(self):
return "<GO>"
Isso ocorre mesmo se eu usar ': set noautoindent'.
Existe uma maneira simples de alternar entre o autoindenting inteligente de arquivos python e um modo de entrada bruto que pode ser usado para colar o código?
Eu ficaria feliz em experimentar o arquivo .vimrc de outras pessoas, se isso evitar esse problema.
Eu encontrei este problema no vim 6.3, 7.0, 7.1 rodando no Debian, RedHat e Ubuntu, respectivamente.