5

Иногда я вставляю много данных в vim (> 5000 строк) и забываю включить режим вставки. В этом случае vim занят в течение нескольких минут, пытаясь правильно сделать отступ для всего текста (который действительно очень плохо работает с какими-то данными, с отступом примерно в 10 000 символов).

Есть ли способ прервать процесс вставки? ESC, CTRL-C и CTRL-D не работают.

1 ответ1

3

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

Если вы вставляете из терминала, vim на самом деле не имеет права голоса в этом вопросе. Эмулятор терминала выдает все, что вы указали, и в большинстве случаев vim не может различить, вводите ли вы символы, которые вы вводите, или вставляете. Следовательно, вам нужно установить 'paste чтобы сказать vim, что он не должен делать отступы и прочее.

Как следствие, если вы вставляете данные из терминала, все вставляемые символы ставятся в очередь за один раз и, по сути, уже отправлены в vim, так что вы ничего не можете сделать, чтобы прервать его. С точки зрения эмулятора терминала, CTRL+c является обычным символом, поэтому он ставится в очередь позади всех других вещей, ожидающих вставки. Когда vim наконец увидит CTRL+c, будет слишком поздно, так как больше ничего не нужно прерывать.

(Обновление: в зависимости от эмулятора терминала, CTRL+c и аналогичные сигналы могут отправляться в приоритетном порядке. В частности, я заметил это в Putty, который мгновенно подает сигнал прерывания и действительно позволяет мне прервать неуместные длительные операции вставки. Правда, я не знаю, как это работает. )


Короче говоря: если это вообще возможно, используйте " * P или " + P для вставки (что даже работает в некоторых эмуляторах терминала, если я правильно помню). Это "правильный" способ вставки; все остальное - это обходной путь, который дает вам такие головные боли.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .