Faça isso antes:
:set paste
Então depois:
:set nopaste
Quando copio algum código de páginas da Web e o colo no VIM, descubro que ele se torna um estilo de confusão como uma escada da seguinte forma
xxxxxx
xxxxxx
xxxxxx
xxxxxxxxxx
Como isso é uma bagunça tão frequente, acho que talvez haja algo errado com meu .vimrc
, que é o seguinte:
set number
set nocompatible
set nowritebackup
set noswapfile
syntax on
filetype indent on
filetype plugin on
filetype on
set background=light
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions=T
set fileencodings=utf-8,prc
set ruler
set incsearch
map gs :%s
set t_Co=256
:colorscheme evening
filetype plugin indent on
Normalmente eu escrevo python no VIM. E a ajuda seria apreciada.
Alternar recuo automático para colar de código
Plano de fundo
Se você usar comandos do Vim para colar texto, nada inesperado ocorrerá. O problema surge apenas ao colar de outro aplicativo, e somente quando você não está usando uma versão GUI do Vim. Em um console ou versão de terminal do Vim, não há procedimento padrão para colar texto de outro aplicativo. Em vez disso, o terminal pode emular a colagem inserindo texto no buffer do teclado, portanto o Vim acha que o texto foi digitado pelo usuário. Após cada final de linha, o Vim pode mover o cursor para que a próxima linha comece com o mesmo recuo da última. No entanto, isso irá alterar o recuo já no texto colado.
Colar alternar
Coloque o seguinte no seu vimrc (mude para qualquer chave que você queira):
set pastetoggle=<F2>
Para colar de outro aplicativo:
Em seguida, o recuo existente do texto colado será retido.
Você não precisa iniciar o modo de inserção primeiro, mas se você estiver no modo normal e tiver um mapeamento para F2, esse mapeamento será aplicado e a função 'pastetoggle' não funcionará.
Algumas pessoas gostam do feedback visual mostrado na linha de status pela seguinte alternativa para o seu vimrc:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
A primeira linha define um mapeamento para que pressionar F2 no modo normal inverta a opção 'colar' e mostrará o valor dessa opção. A segunda linha permite que você pressione F2 quando estiver no modo de inserção, para ativar e desativar 'colar'. A terceira linha permite exibir se 'colar' está ativado no modo de inserção.
É o autoindent que está mexendo com você.
set autoindent
set smartindent
Tente desativá-los quando recortar e colar seu código e, em seguida, ative-os novamente quando terminar.
O menor esforço para conseguir isso é (pode ser colocado em .vimrc
):
:set paste
Em seguida, cole o seu código.
Tags vim copy-paste