Geschwindigkeit der Makrowiedergabe verbessern?


12

Ich habe ein einfaches Makro aufgenommen und es in folgenden Zeilen wiedergegeben, aber es scheint, dass die Wiedergabegeschwindigkeit sehr langsam ist (handhaben Sie einige Zeilen pro Sekunde). Wird dies erwartet und gibt es eine Möglichkeit, diese Geschwindigkeit zu verbessern?


3
Try :set lazyredraw( :h lazyredraw)
VanLaser

In lazyredrawder Tat ist wahrscheinlich die beste Lösung. Sie können auch Ihr Makro und eine Beispieldatei bereitstellen, damit wir sehen können, ob es optimiert werden kann.
Statox

Antworten:


12

Durch Einstellen von lazyredrawwith :set lazyredrawwird die Geschwindigkeit der Makroausführung erheblich verbessert, indem der Bildschirm nicht neu gezeichnet wird, während ein Makro ausgeführt wird oder ein anderer Befehl als der von Ihnen eingegebene ausgeführt wird. :help 'lazyredraw'Weitere Informationen finden Sie unter.

Eine andere Möglichkeit zur Reduzierung ist es, sicherzustellen, dass Sie keine Zeit haben, Autocmds oder Mappings zu verschwenden. Wenn Ihre Makros nach dem Ausführen immer noch langsam sind, überprüfen Sie Ihre vimrc-Datei auf langsame oder unnötige Zuordnungen und entfernen Sie nicht benötigte Plugins. In meinem Fall hatte ich ein Autocmd, das ausgeführt wurde, und ein externes Programm zum Ausschalten von CapsLock beim Verlassen des Einfügemodus. Dies war praktisch und normalerweise nicht wahrnehmbar, verlangsamte jedoch die Einfügemakros erheblich.

Wenn Ihr Makro in den Einfügemodus wechselt, in dem Sie viele Zuordnungen haben, kann es hilfreich sein, einen Schlüssel zum Einstellen des Einfügemodus und zum vorübergehenden Deaktivieren der Einfügezuordnungen zu haben (siehe :help 'paste'und) :help 'pastetoggle'. Beachten Sie, dass dies das Einfügen erschweren kann.

Halten Sie das Makro schließlich so einfach wie möglich, indem Sie Bewegungen, Moduswechsel usw. minimieren.

Viel Glück.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.