http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Переключить авто-отступ для вставки кода
Фон
Если вы используете команды Vim для вставки текста, ничего неожиданного не происходит. Проблема возникает только при вставке из другого приложения и только тогда, когда вы не используете версию Vim с графическим интерфейсом.
В консольной или терминальной версии 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 в режиме вставки, чтобы включать и выключать «вставку». Третья строка отображает, включена ли функция «вставить» в режиме вставки.