2013-07-31 7 views
10

Ich mag wirklich das Verhalten von YankRing, die mir die letzten verschiedenen Dinge, die ich habe y angeklingelt oder d eleted oder c gehängt haben, ohne zu denken gehangen.Vim Repeat-Punkt (".") Befehlspuffer?

Allerdings fehlt eine komplementäre Funktion wie diese für den . Befehl wiederholen, meistens, wenn ich etwas eintippe, das ich wirklich wiederholen möchte, dann versehentlich überschreiben diese Bearbeitung durch Drücken x, um etwas aufzuräumen.

Oft ist es möglich, noch etwas Zeit durch visual-Modus ruckzucken, was ich gerade eingegeben habe, aber das ist nicht ideal.

Es sollte wirklich einfach sein, sich an die letzten paar Befehle zu erinnern.

Die Frage ist, wie möglich ist es, aus Vim die Darstellung des letzten Befehls in was auch immer speichert was . wird tun, bevor es weggeblasen wird extrahieren?

Wenn ich fürchte, ist der einzige Weg, ein Plugin zu bekommen, um an jeden einzelnen Befehl zu binden, der etwas bearbeiten könnte, und es so zu instrumentieren, dass wir unseren eigenen Wiederholungspuffer speichern. Das ist wirklich nicht praktisch, weil ich mir schon vorstellen kann, wie viele andere Plugins kaputt gehen. Aber ich würde dieses Feature wirklich wirklich wollen, wenn es in irgendeiner Weise möglich ist.

+0

Verwandte Frage [Eine leistungsfähigere Version von Punkt (Wiederholung)] (http://stackoverflow.com/q/16722566). – glts

+0

@glts Ich schrieb, dass ... es ähnlich ist, aber vorbereitet werden muss, indem man die Aufnahme beginnt –

+0

Nur lernen, die [Register] zu verwenden (http://stackoverflow.com/questions/1497958/how-to-use-vim-register? rq = 1) und andere eingebaute vim-Funktionalität imo. So viele Plugins, die Dinge "reparieren", die nicht repariert werden müssen. Der Punktoperator funktioniert perfekt mit den Registern. Zum Beispiel können Sie '' qp'' in das 'q' Register einfügen und mit' .' wiederholen, aber Änderungen wie 'x' werden nicht das ändern, was Sie in irgendwelchen Nicht-Standard-Registern gespeichert haben .. Noch ein toller Beitrag zu lesen Sie [hier] (http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim?rq=1) –

Antwort

1

Schlüsselwortvervollständigung und/oder Strg-a im Einfügemodus sollte Ihre Bedürfnisse abdecken.

Eine ruckartigere Lösung sollte möglich sein, aber, wie Sie sagen, wahrscheinlich ein wenig zu aufdringlich. Haben Sie sich selbst auf vim.org angeschaut, bevor Sie andere gebeten haben, es für Sie zu tun?

+0

Ja, ich meine, es gibt nicht einmal eine Möglichkeit, wie Vim herausfinden kann, was das '.' tun wird. Ich habe wirklich gehofft, dass jemand einen Quell-Patch hat, um es mit einem Befehl zu enthüllen. –

+0

. wiederholt die letzte Änderung. Das ist ziemlich einfach. Der Befehl dot ist nicht wirklich dafür ausgelegt, eine Reihe von Befehlen von vor langer Zeit auszuführen, so dass Sie praktisch nie raten müssen, was es tun wird. Wenn Sie mehr langfristige Lösungen wünschen, verwenden Sie Makros und Mappings. – romainl

2

Leider gibt es keine Möglichkeit, den Befehl hinter dem . Befehl zu erhalten und wiederzugeben. Die einzige Problemumgehung besteht darin, ständig in Makroaufzeichnungsmodus zu sein, und das Makroregister als einen Ersatz für den . Befehl zu verwenden.

Diese Taktik wird von der RepeatLast plugin verwendet, die bieten könnte, was Sie wollen.