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.
vim
copy-paste
vi
Danilo Bargen
quelle
quelle
+
Register, z"+P
. (Oder verwenden Sie in X11 das*
Register , um den zuletzt ausgewählten Text*P
scheint 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).*P
?Antworten:
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'paste
Option 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.
quelle