Isso é presumivelmente devido à opção paste
. De :h paste
:
*'paste'* *'nopaste'*
'paste' boolean (default off)
global
{not in Vi}
Put Vim in Paste mode. This is useful if you want to cut or copy
some text from one window and paste it in Vim. This will avoid
unexpected effects.
Setting this option is useful when using Vim in a terminal, where Vim
cannot distinguish between typed text and pasted text. In the GUI, Vim
knows about pasting and will mostly do the right thing without 'paste'
being set. The same is true for a terminal where Vim handles the
mouse clicks itself.
Eu diria que isso está acontecendo porque você tem algumas configurações de indent, assim como você cola, o vim assume que você está digitando em vez de colar, e adiciona automaticamente os recuos necessários. Se você :set paste
, vai parar de fazer isso.
Naturalmente, uma outra solução é usar o gvim em vez de um terminal. Cabe a você se esta opção vale a pena para você.