Kann ich den Verlauf der Tastendrücke im normalen Modus anzeigen?

32

Ich weiß, dass Vim den Verlauf für Ex-Befehle, Suchvorgänge, Sprungpositionen, Änderungen und möglicherweise andere speichert.

Mit showcmdset zeigt Ihnen Vim auch, welche Tasten Sie bisher für einen Normalmodusbefehl eingegeben haben, bis dieser Befehl ausgeführt wird.

Im normalen Modus treten manchmal Tippfehler und Aktionen auf. Ich kann diese Aktionen rückgängig machen, möchte aber manchmal wissen, wie die Änderungen während meines Fehlers aufgetreten sind. Manchmal sieht der Schnitt cool aus und ich möchte wissen, wie ich ihn in Zukunft wiederholen kann.

Gibt es also eine Möglichkeit, den Verlauf der Tastendrücke im normalen Modus anzuzeigen, vorzugsweise abgegrenzt, als eine tatsächliche Bearbeitung oder Aktion (wie Bewegung oder Moduswechsel) stattfand?

John O'M.
quelle
4
Möglicherweise verwandt: drbunsen.org/vim-croquet
wchargin

Antworten:

20

Wenn ich dem Link von @WChargin etwas weiter folge, habe ich Folgendes gefunden:

Sie können vim wie folgt mit der Option -woder starten -W:

vim -w keys.txt my_file

Alle Zeichen, die Sie eingeben, werden in der Datei {scriptout} aufgezeichnet, bis Sie Vim beenden.

-wwird an die angegebene Datei angehängt, falls vorhanden; -Wwird es überschreiben.

Es bringt dich nicht ganz auf das, was du willst, aber es ist die richtige Richtung.

Update: Es sieht aus wie vim tatsächlich alle puffert die Tastenanschläge , bis Sie vim beenden, aber es gibt eine einzeilige Patch hier , dass die Tastenanschläge sofort schreiben.

xthrd
quelle
Vielen Dank! Ich benutze dies als Ausgangspunkt, um in den Quellcode zu stöbern. Es sieht so aus, als würde -w jeden einzelnen Tastendruck speichern, nicht nur Befehle im normalen Modus, aber Sie haben Recht: Es ist die richtige Richtung!
John O'M.
@xthrd, wie sind diese keys.txtDateien formatiert / strukturiert? Wenn ich benutze -w, geschieht das Anhängen immer in einer langen, langen, langen Reihe. und es werden seltsame Zeichen angezeigt: Unter UTF-8 erhalte ich immer dann, wenn ich eine Datei in einem neuen Puffer öffne €齛. Dies ist ein guter Marker für sich, aber es wäre großartig, wenn die Protokolle optional analysiert werden könnten.
Linfeng
@ Linfeng Es ist überhaupt nicht formatiert. Es ist buchstäblich nur eine Datei, die die Tastenanschläge in der Reihenfolge enthält, in der sie erstellt wurden. (Beachten Sie jedoch, dass <cr>die Datei bei einigen Tastenanschlägen Zeilenumbrüche enthält.) Dies liegt daran, dass der Hauptzweck darin besteht, Dateien zu erstellen, die mit dieser -sOption wiedergegeben werden können. Probieren Sie es doch einfach selbst aus!
Rich
@Rich Danke für die Klarstellung. Ich habe diesen Schlüsselverfolgungsmechanismus verwendet, um das Problem zu beheben, mit dem meine Suche gestartet wurde. [Meine Lektion lautet: Niemals Wauf die Befehlszeile abbilden .]
llinfeng
-4

Es gibt q:welche, die einen Befehlsverlauf zeigen.

Ich finde es auch nützlich, dass Sie einen unvollständigen Befehl drücken können, um durch Übereinstimmungen zu blättern. ZB Wenn Sie /abc dann auf drücken, wird der Verlauf Ihrer Suchanfragen durchlaufen, beginnend mit "abc".

Collin Peters
quelle
5
q: zeigt den Verlauf von ex-Befehlen an und ist nützlich, aber kein Protokoll von normalen Befehlen wie "ad2tn (Löschen in Register a bis zum zweiten n)
John O'M.
Vergessen Sie nicht, dass Sie während der Bearbeitung eines Befehls die aktuelle Zeile im Verlaufseditor Ctrl+f
aufrufen