Ich grenze Quellcode gerne optisch durch lange Kommentarzeilen ab: In C++ verwende ich 80 /
Zeichen, in Python verwende ich 80 #
Zeichen usw. Im Laufe der Jahre ist mir aufgefallen, dass Vim gelegentlich Aussetzer hat (ungefähr eine halbe Sekunde lang nicht mehr reagiert), wenn ich mich bewege. Heute habe ich festgestellt, dass dies nur bei meinen Trennzeilen passiert.
Zum Beispiel:
line 1
line 2
////////////////////////////////////////////////////////////////////////////////
line 4
line 5
Befindet sich der Cursor irgendwo in Zeile 3, tritt bei jeder Bewegung (nach oben, nach unten, Bild auf, Bild ab, links, rechts, $
, 0
, ...) fast immer eine Verzögerung auf; in anderen Zeilen ist dies nicht der Fall.
Beim Herumspielen damit habe ich Folgendes herausgefunden:
- Die Verzögerung scheint bei Zeilen mit insgesamt 40 oder mehr Symbolen (
/
,-
,=
,.
,#
usw.) an beliebiger Stelle in der Zeile aufzutreten, ausgenommen_
(möglicherweise weil Unterstriche in der Vim-Definition von a enthalten sindword
). - Bei längeren Zeilen scheint die Verzögerung nicht zuzunehmen. Zeilen mit 1000 Zeichen haben beispielsweise
/
eine ähnliche Verzögerung wie Zeilen mit 40/
Zeichen. - Die Verzögerung tritt nur auf, wenn eine „neue“ Bewegung von dieser Zeile aus gestartet wird. Die Verwendung der OS-Tastenwiederholung zum Bewegen durch die Zeile verursacht keine Verzögerung.
- Die Verzögerung scheint nicht mit der Syntaxhervorhebung oder Plug-ins zusammenzuhängen: Ich sehe dasselbe Verhalten bei
vim -u NONE
,syntax off
, undfiletype=
. - GUI Vim (gvim) scheint dieses Problem nicht zu haben.
Ich verwende MacVim 8.0 von Macports in der Terminal-App auf einem MacBook Pro, aber das standardmäßig von Apple bereitgestellte Vim 7.4 zeigt dasselbe Verhalten.
Ich konnte bei Google, Stack Overflow oder Super User keine Erwähnung hierzu finden, aber es ist auf meinem System problemlos reproduzierbar.
Ist das ein bekanntes Problem? Gibt es eine Laufzeiteinstellung oder Build-Option, die das steuert (maximal unterstützte Zeichen pro Zeile oder so etwas) oder einen Workaround, der das Problem behebt?