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