Eine Vim Paste abbrechen

5

Manchmal füge ich eine Menge Daten in vim ein (> 5000 Zeilen) und vergesse, den Einfügemodus zu aktivieren. In diesem Fall ist vim einige Minuten beschäftigt und versucht, den gesamten Text korrekt einzurücken (was bei manchen Daten in Bezug auf die Leistung WIRKLICH schlecht wird und etwa 10'000 Zeichen einrückt).

Gibt es eine Möglichkeit, den Einfügevorgang abzubrechen? ESC, STRG-C und STRG-D funktionieren nicht.

Danilo Bargen
quelle
Ich kenne keine Möglichkeit, den Vorgang abzubrechen, aber je nach Art des verwendeten Vim können Sie ihn aus der System-Zwischenablage einfügen, wodurch Vim ihn nicht neu formatiert. Verwenden Sie das +Register, z "+P. (Oder verwenden Sie in X11 das *Register , um den zuletzt ausgewählten Text
einzufügen
Hm, *Pscheint nicht die richtigen Dinge einzufügen ... Weder hervorgehobener Text noch Strg + C-Inhalt werden eingefügt (es werden einige andere Daten eingefügt, von denen ich nicht weiß, woher sie kommen).
Danilo Bargen
Haben Sie zuvor ein doppeltes Anführungszeichen gesetzt *P?
Echristopherson
Ich habe es sowohl mit als auch ohne Anführungszeichen versucht, das gleiche Ergebnis ...
Danilo Bargen
Ich dachte, STRG + C hätte funktionieren sollen. Ich bin gespannt, welches System und welche Version von Vim verwenden Sie? Und GUI oder Terminal? Vielleicht ist es ein Fehler ...
Ben

Antworten:

3

Wenn Sie die GUI-Version verwenden, sollten Sie wirklich entweder aus dem Zwischenablage-Register ( "*) oder der X11-Auswahl ( "+) einfügen, wie bereits von echristopherson vorgeschlagen. Anstatt also mit der mittleren Maustaste zu klicken oder was auch immer, navigieren Sie dorthin, wo Sie einfügen möchten, und geben Sie dann ein "*P, einschließlich des anfänglichen Anführungszeichens. Beim Einfügen über die Befehle poder Pweiß vim, dass Sie einfügen, daher ist die 'pasteOption nicht erforderlich - unabhängig davon, aus welchem ​​Register Sie einfügen.

Wenn Sie vom Terminal aus einfügen, hat vim in dieser Angelegenheit nicht wirklich ein Mitspracherecht. Der Terminal-Emulator gibt alles aus, was Sie angewiesen haben, und in den meisten Fällen kann vim nicht unterscheiden, ob die Zeichen, die weiterhin eingegeben werden, Sie eingeben oder einfügen. Aus diesem Grund müssen Sie festlegen 'paste, dass vim keine Einrückungen oder ähnliches ausführen soll.

Wenn Sie vom Terminal aus einfügen, werden alle Zeichen, die eingefügt werden sollen, auf einmal in die Warteschlange gestellt und im Wesentlichen bereits an vim gesendet. Sie können also wirklich nichts tun, um das Einfügen zu unterbrechen. Aus der Sicht des Terminal-Emulators ist CTRL+ cnur ein gewöhnliches Zeichen, daher wird es hinter allen anderen Elementen in die Warteschlange gestellt, die darauf warten, eingefügt zu werden. Wenn vim endlich das CTRL+ sieht c, ist es zu spät, da nichts mehr abgebrochen werden kann.

(Update: Je nach Terminal - Emulator, CTRL+ cund ähnliche Signale können in einer priorisierten Weise gesendet Insbesondere habe ich bemerkt , dies in Putty, die das Break - Signal sofort liefert und in die Tat erlaubt es mir fehl am Platze langes Einfügen abzubrechen ich don.. Ich weiß allerdings nicht genau, wie das funktioniert.)


Um es kurz zu machen: Verwenden Sie nach Möglichkeit "*Poder "+Pzum Einfügen (was bei einigen Terminalemulatoren sogar funktioniert, wenn ich mich richtig erinnere). Dies ist die "richtige" Methode zum Einfügen. Alles andere ist im Grunde eine Problemumgehung, die Ihnen diese Art von Kopfschmerzen bereitet.

Vucar Timnärakrul
quelle