http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Beralih indentasi otomatis untuk menempelkan kode
Latar Belakang
Jika Anda menggunakan perintah Vim untuk menempelkan teks, tidak ada yang tidak terduga terjadi. Masalahnya hanya muncul ketika menempel dari aplikasi lain, dan hanya ketika Anda tidak menggunakan versi GUI Vim. Dalam versi konsol atau terminal Vim, tidak ada prosedur standar untuk menempelkan teks dari aplikasi lain. Sebagai gantinya, terminal dapat meniru menyisipkan dengan memasukkan teks ke buffer keyboard, jadi Vim berpikir teks telah diketik oleh pengguna. Setelah setiap baris berakhir, Vim dapat memindahkan kursor sehingga baris berikutnya dimulai dengan indentasi yang sama dengan yang terakhir. Namun, itu akan mengubah lekukan yang sudah ada dalam teks yang disisipkan.
Tempelkan sakelar
Masukkan yang berikut ini di vimrc Anda (ubah ke tombol apa pun yang Anda inginkan):
set pastetoggle=<F2>
Untuk menempel dari aplikasi lain:
- Mulai mode penyisipan.
- Tekan F2 (mengaktifkan opsi 'tempel' aktif).
- Gunakan terminal Anda untuk menempelkan teks dari clipboard.
- Tekan F2 (matikan opsi 'tempel' mati).
Kemudian lekukan yang ada dari teks yang disisipkan akan dipertahankan.
Anda tidak harus memulai mode penyisipan terlebih dahulu, tetapi jika Anda berada dalam mode normal dan memiliki pemetaan untuk F2, pemetaan itu akan berlaku, dan fungsi 'pastetoggle' tidak akan beroperasi.
Beberapa orang menyukai umpan balik visual yang diperlihatkan di baris status dengan alternatif berikut untuk vimrc Anda:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
Baris pertama menetapkan pemetaan sehingga menekan F2 dalam mode normal akan membalikkan opsi 'tempel', dan kemudian akan menampilkan nilai opsi itu. Baris kedua memungkinkan Anda untuk menekan F2 saat dalam mode insert, untuk mengaktifkan dan menonaktifkan 'tempel'. Baris ketiga memungkinkan menampilkan apakah 'tempel' dihidupkan dalam mode sisipkan.