http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Увімкніть автоматичне відступ для вставки коду
Фон
Якщо ви використовуєте команди Vim для вставки тексту, нічого несподіваного не відбувається. Проблема виникає лише при вставці з іншого додатка і лише тоді, коли ви не використовуєте GUI-версію Vim. У консольній або термінальній версії Vim не існує стандартної процедури вставки тексту з іншої програми. Натомість термінал може імітувати вставку, вставляючи текст у буфер клавіатури, тому Вім вважає, що текст був набраний користувачем. Після закінчення кожного рядка Vim може перемістити курсор, тому наступний рядок починається з того ж відступу, що і останній. Однак це змінить відступ вже в вставленому тексті.
Вставити тумблер
Помістіть наступне у своєму vimrc (змініть клавішу, яку ви хочете):
set pastetoggle=<F2>
Щоб вставити з іншої програми:
- Почніть режим вставки.
- Натисніть F2 (вмикає опцію "вставити").
- Використовуйте свій термінал, щоб вставити текст із буфера обміну.
- Натисніть F2 (вимикає опцію "вставити").
Тоді наявний відступ вставленого тексту буде збережено.
Спочатку не потрібно запускати режим вставки, але якщо ви перебуваєте у звичайному режимі та маєте відображення для F2, це відображення буде застосовано, і функція 'pastetoggle' не буде працювати.
Деяким людям візуальний відгук, який відображається в рядку статусу, є такою альтернативою для вашого vimrc:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
Перший рядок встановлює відображення так, що натискання клавіші F2 у звичайному режимі переверне параметр 'вставити', а потім покаже значення цього параметра. Другий рядок дозволяє натиснути клавішу F2 у режимі вставки, щоб увімкнути та вимкнути "вставити". Третій рядок дозволяє відображати, чи увімкнено 'вставити' у режимі вставки.