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