Ich habe einige verborgene Zeichen im Puffer und horizontales Scrollen bringt die Ausrichtung zum Erliegen.
Gibt es eine Möglichkeit, es zu deaktivieren? Ich konnte keine relevanten Optionen finden.
Bearbeiten: Demo hinzugefügt. Sie können sehen, dass vim den Bildlaufversatz auf den nicht verdeckten Teil der Datei bezieht, sodass die Ausrichtung unterbrochen wird.
:set wrap
<c-s>
das Terminal so anhalten, dass der Bildschirm nicht aktualisiert wird. Sie könnten dann blind Änderungen vornehmen und zum Anfang der Zeile zurückkehren und drücken,<c-q>
um fortzufahren. Andere, möglicherweise nicht hilfreiche Optionen: Stellen Sie sicher, dass sich zwischen jedem sichtbaren Zeichen die gleiche Anzahl verborgener Zeichen befindet, oder erweitern Sie das Fenster.Antworten:
So deaktivieren Sie das horizontale Scrollen
Ich habe eine Lösung geschrieben, die horizontales Scrollen deaktiviert (indem ich von @ ЯрославРахматуллинs Vorschlag abgehört habe ), aber ich glaube nicht, dass es Ihnen gefallen wird:
Dies verhindert das Scrollen nach rechts durch die unglaublich präzise Methode, einfach wieder zurückzuscrollen. *
* Da ich nicht weiß, wie weit Sie nach rechts gescrollt haben oder wie lang Ihre Zeilen sind, scrolle ich willkürlich "weit" durch 99 halbe Bildschirmbreiten. Beachten Sie auch, dass ich nicht prüfen muss, ob Sie tatsächlich nach rechts gescrollt haben, bevor Sie "zurück" nach links scrollen. Wenn Sie tatsächlich beabsichtigen, diese Lösung zu verwenden, möchten Sie möglicherweise etwas durch Vergleichen der Werte von
getcurpos()
,'sidescroll'
und zum Erliegen bringen'columns'
.Warum willst du das nicht?
Der Grund, warum Sie dies nicht verwenden werden, liegt darin, dass das Bildlaufproblem ein anderes Problem darstellt: Mit Vim können Sie den Cursor nicht "vom Bildschirm" bewegen. Wenn Sie also so nach links scrollen, dass der Cursor nach dem Scrollen nicht mehr auf dem Bildschirm angezeigt wird, bringt Vim den Cursor hilfreich mit und verschiebt ihn nach links.
Da jedoch die Berechnung, die verwendet wird, um festzustellen, ob sich der Cursor auf dem Bildschirm befindet, mit der Berechnung übereinstimmt, die verwendet wird, um zu entscheiden, ob im ursprünglichen Problem ein Bildlauf durchgeführt werden soll, ist dies der Nettoeffekt, wenn Sie versuchen, den Cursor zu verschieben Cursor nach rechts in einer Situation, die normalerweise ein seitliches Scrollen verursachen würde, jetzt weigert sich der Cursor, sich überhaupt zu bewegen. **
** Je nach aktueller Position und Bewegung bewegt sich der Cursor möglicherweise etwas genauer nach rechts. es bewegt sich einfach nicht über die Position hinaus, an der normalerweise eine Schriftrolle auftreten würde.
Andere Optionen?
Ich befürchte, dass Ihre geplante Problemumgehung nicht zum Erliegen kommt. Wenn Sie eine praktikable Lösung für das allgemeine Problem suchen, muss diese im Vim-Quellcode implementiert werden.
Wie Sie bereits bemerkt haben , ist es unwahrscheinlich, dass dies bald eintrifft. Ich fürchte, Sie können das Problem in Ihrem GIF am besten umgehen, indem Sie den Plug-in-Autor bitten, die Verwendung
conceal
vollständig und stattdessen einzustellen Entfernen Sie den verborgenen Text vollständig aus dem Puffer.Aufgrund der unverhüllten Ausgabe und der Erwähnung
vim-plugin-AnsiEsc
in der Dokumentation kann dies möglicherweise implementiert werden, ist aber ohne Kenntnis der Funktionsweise des Plugins schwer zu sagen.quelle
Wenn Sie eine Möglichkeit zu bearbeiten Sie die Datei haben, können Sie die Farben Setup wickeln mit
\[
und\]
, wie pro erklärt hier :Andernfalls werden die gesamten Farbcodes als Zeichen betrachtet und möglicherweise für das horizontale Scrollen berücksichtigt.
Ich bin mir nicht sicher, ob dies das Problem ist, aber als ich die Quelle des Kalenders (mit
syntax off
) und das aktuelle Verhalten sah, musste ich darüber nachdenken.quelle
conceal
Funktion (siehe die Diskussion in den Kommentaren).BEARBEITEN: Dies ist ein bekannter Fehler, geschlossen "wird nicht behoben": https://github.com/vim/vim/issues/260
Ursprüngliche Antwort:
Mein Vim scrollt nicht horizontal, bis der Cursor den Bildschirmrand berührt.
Sind Sie mit
sidescrolloff
?Ich weiß nicht, wie man das horizontale Scrollen vollständig deaktiviert, aber diese Einstellung sollte warten, bis der Cursor die Kante verlässt:
quelle
'sidescrolloff=0'
weil Vim glaubt die Cursor hat den Rand gegangen: er seine Berechnung auf dem unverhüllten Text stützt, nicht sichtbaren Text.