http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Attiva / disattiva rientro automatico per incollare codice
sfondo
Se si utilizzano i comandi Vim per incollare il testo, non si verifica nulla di inaspettato. Il problema sorge solo quando si incolla da un'altra applicazione e solo quando non si utilizza una versione GUI di Vim. In una versione console o terminale di Vim, non esiste una procedura standard per incollare il testo da un'altra applicazione. Invece, il terminale può emulare l'incollamento inserendo del testo nel buffer della tastiera, quindi Vim pensa che il testo sia stato digitato dall'utente. Al termine di ogni riga, Vim può spostare il cursore in modo che la riga successiva inizi con lo stesso rientro dell'ultima. Tuttavia, ciò cambierà il rientro già nel testo incollato.
Incolla attiva / disattiva
Inserisci quanto segue nel tuo vimrc (cambia in qualunque chiave tu voglia):
set pastetoggle=<F2>
Per incollare da un'altra applicazione:
- Avvia la modalità di inserimento.
- Premi F2 (attiva l'opzione 'incolla').
- Usa il tuo terminale per incollare il testo dagli appunti.
- Premi F2 (disattiva l'opzione 'incolla').
Quindi verrà trattenuto il rientro esistente del testo incollato.
Non è necessario avviare prima la modalità di inserimento, ma se si è in modalità normale e si dispone di un mapping per F2, tale mapping verrà applicato e la funzione 'pastetoggle' non funzionerà.
Ad alcune persone piace il feedback visivo mostrato nella riga di stato dalla seguente alternativa per il tuo vimrc:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
La prima riga imposta una mappatura in modo che premendo F2 in modalità normale si inverta l'opzione 'incolla', e quindi si visualizzi il valore di tale opzione. La seconda riga consente di premere F2 in modalità inserimento, per attivare e disattivare "incolla". La terza riga consente di visualizzare se 'incolla' è attivato in modalità inserimento.