Например, если я, редактируя файл с текстом программы на Си, попытаюсь выделить мышью в соседнем окне и вставлять в vim такой текст:
int main(int argc, char *argv[]) {
printf("Hello World!\n");
printf("Vim 6 and later breaks indentation\n");
printf("when text is pasted with a mouse into terminal...\n");
}
получится скорее всего вот так:
int main(int argc, char *argv[]) {
printf("Hello World!\n");
printf("Vim 6 and later breaks indentation\n");
printf("when text is pasted with a mouse into terminal...\n");
}
И это очень раздражает! Происходит это только в терминале. Vim, запущенный в графическом режиме обрабатывает вставку из «иксового» буфера правильно. Самое интересное, что отключение автоматической отбивки (:set noautoindent, :set nosmartindent, :set nocindent...) проблему решает не всегда.
К счастью, решение (костыль?) есть. Если перед вставкой мышью использовать команду :set paste, то текст вставляется с сохранением отступа. После этого можно включить обратно используемый режим отступа командой :set nopaste.
(По мотивам Tip #330: how to stop auto indenting, :help paste и :help pt)