http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Przełącz automatyczne wcięcie dla wklejania kodu
tło
Jeśli użyjesz poleceń Vima do wklejenia tekstu, nic nieoczekiwanego nie nastąpi. Problem pojawia się tylko podczas wklejania z innej aplikacji i tylko wtedy, gdy nie używasz GUI w wersji Vima. W wersji Vima na konsolę lub terminal, nie ma standardowej procedury wklejania tekstu z innej aplikacji. Zamiast tego terminal może emulować wklejanie, wstawiając tekst do bufora klawiatury, więc Vim uważa, że tekst został wpisany przez użytkownika. Po zakończeniu każdego wiersza Vim może przesunąć kursor, więc następny wiersz zaczyna się od tego samego wcięcia co ostatni. Zmieni to jednak wcięcie już w wklejonym tekście.
Wklej przełącznik
Umieść w vimrc następujące polecenie (zmień na dowolny klucz, jaki chcesz):
set pastetoggle=<F2>
Aby wkleić z innej aplikacji:
- Uruchom tryb wstawiania.
- Naciśnij F2 (przełącza opcję „wklej” na).
- Użyj terminala, aby wkleić tekst ze schowka.
- Naciśnij F2 (wyłącza opcję „wklej”).
Wtedy istniejące wcięcie wklejonego tekstu zostanie zachowane.
Nie musisz najpierw uruchamiać trybu wstawiania, ale jeśli jesteś w trybie normalnym i masz mapowanie dla F2, to mapowanie zostanie zastosowane, a funkcja „pastetoggle” nie będzie działać.
Niektórym podoba się wizualna informacja zwrotna wyświetlana w linii statusu przez następującą alternatywę dla twojego vimrc:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
Pierwszy wiersz ustawia odwzorowanie tak, że naciśnięcie F2 w trybie normalnym odwróci opcję „wklej”, a następnie wyświetli wartość tej opcji. Druga linia pozwala naciskać F2 w trybie wstawiania, aby włączać i wyłączać „wklejanie”. Trzeci wiersz umożliwia wyświetlenie, czy „wklejanie” jest włączone w trybie wstawiania.