Если вы используете версию с графическим интерфейсом, вам действительно нужно вставить регистр буфера обмена ("*
) или выбор X11 ("+
), как уже предложено echristopherson. Таким образом, вместо щелчка средней кнопкой мыши или чего-либо еще, вы перемещаетесь туда, куда хотите вставить, и затем набираете « * P», включая начальную цитату. При вставке с помощью команд p или P vim знает, что вы вставляете , поэтому опция 'paste
не нужна, независимо от того, из какого регистра вы вставляете.
Если вы вставляете из терминала, vim на самом деле не имеет права голоса в этом вопросе. Эмулятор терминала выдает все, что вы указали, и в большинстве случаев vim не может различить, вводите ли вы символы, которые вы вводите, или вставляете. Следовательно, вам нужно установить 'paste
чтобы сказать vim, что он не должен делать отступы и прочее.
Как следствие, если вы вставляете данные из терминала, все вставляемые символы ставятся в очередь за один раз и, по сути, уже отправлены в vim, так что вы ничего не можете сделать, чтобы прервать его. С точки зрения эмулятора терминала, CTRL+c является обычным символом, поэтому он ставится в очередь позади всех других вещей, ожидающих вставки. Когда vim наконец увидит CTRL+c, будет слишком поздно, так как больше ничего не нужно прерывать.
(Обновление: в зависимости от эмулятора терминала, CTRL+c и аналогичные сигналы могут отправляться в приоритетном порядке. В частности, я заметил это в Putty, который мгновенно подает сигнал прерывания и действительно позволяет мне прервать неуместные длительные операции вставки. Правда, я не знаю, как это работает. )
Короче говоря: если это вообще возможно, используйте " * P или " + P для вставки (что даже работает в некоторых эмуляторах терминала, если я правильно помню). Это "правильный" способ вставки; все остальное - это обходной путь, который дает вам такие головные боли.