vi / vim abrumpt Pufferbewegungen innerhalb des Fensters

11

Bei Verwendung :set wrapin vi / vim wird der Inhalt einer gesamten umbrochenen Zeile beim Bewegen des Cursors in eine neue Zeile in den Anzeigepuffer gestellt, selbst wenn Sie durch eine Datei nach Anzeigezeile (gj / gk) im Gegensatz zur realen Zeile (j) navigieren / k). Wenn eine Zeile beispielsweise über 5 Bildschirmzeilen gewickelt ist und sich derzeit außerhalb des Anzeigepuffers befindet, springt der Puffer beim Navigieren in diese Zeile um 5 Zeilen, um zu erzwingen, dass die gesamte Zeile in den Bildschirm passt. Gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren? Beachten Sie, set display+=lastlinedass die Anzeige von Teilzeilen möglich ist, wenn eine umbrochene Zeile durch Navigieren von der Zeile vom Bildschirm verdrängt wird. Dadurch werden jedoch die Puffersprünge nicht behoben, die beim Navigieren in eine Zeile auftreten, die sich ursprünglich außerhalb des Puffers befand.

Klarstellung: Falls die obige Beschreibung nebulös ist, möchte ich in der Lage sein, reibungslos in vim zu scrollen, wenn der Zeilenumbruch aktiviert ist, sodass die Zeilen teilweise außerhalb des Bildschirms angezeigt werden, anstatt obligatorisch in ihrer Gesamtheit angezeigt zu werden.

user001
quelle
1
Können Sie bestätigen, dass Sie Folgendes meinen: Sie möchten, dass ein Teil des umbrochenen Teils der Zeile nicht angezeigt wird und reibungslos scrollen kann? Vim zeigt Linien ganz, wenn 'wrap'es an ist, fürchte ich
Benoit
Genau. Ich nehme an, es gibt keine Möglichkeit, dieses Verhalten zu überschreiben, bei dem umbrochene Zeilen beim Scrollen vollständig angezeigt werden. Vielen Dank.
user001
1
Nicht das ich wüsste. Warten Sie auf Antworten, niemand weiß, was Vim kann.
Benoit
1
stimme @Benoit zu. Soweit ich weiß nicht möglich.
Fredrik Pihl
1
Derzeit gibt es eine Diskussion über die Mailingliste vim_dev zu diesem Thema. Es scheint, dass Sie nicht der einzige mit dieser Anfrage sind.
Randy Morris

Antworten:

1

Keine vollständige Antwort, aber vielleicht ein Hinweis. Es gibt eine scrollOption. Die Hilfe für diese Option lautet unter anderem:

{Vi ist ein bisschen anders: 'scroll' gibt die Anzahl der Bildschirmzeilen anstelle der Dateizeilen an, macht einen Unterschied, wenn Zeilen umbrochen werden}

thebodzio
quelle
Danke, das ist hilfreich. Die Tastenkombinationen <Strg-E> (unten) und <Strg-Y> (oben) geben das gewünschte Grundverhalten an. Wenn es eine Möglichkeit gibt, zu erkennen, ob sich der Cursor in der oberen oder unteren Zeile des Fensters befindet, besteht eine temporäre Lösung darin, die Aufwärts- und Abwärtspfeiltasten bedingt <Ctrl-Y> gk und <Ctrl-E> gj zuzuordnen. beziehungsweise. Befindet sich der Cursor nicht in der oberen oder unteren Zeile des Fensters, müssen Sie sie gk und gj zuordnen (die else-Anweisung in der Bedingung). Gibt es eine einfache Möglichkeit zu erkennen, ob sich der Cursor in der oberen oder unteren Zeile des aktuellen Fensters befindet?
user001
0

Im normalen Modus können Sie mit gkund gj( g<up>oder g<down>) zwischen den angezeigten Teilen einer umbrochenen Linie springen . Diese vim-Wikipage erklärt, wie Sie das Verhalten dauerhaft ändern können.

jpjacobs
quelle
1
Sicher, und ich habe diese Verhaltensweisen den Richtungspfeiltasten zugeordnet. Dies unterscheidet sich jedoch von der obligatorischen Anzeige der Gesamtheit einer umbrochenen Zeile beim Navigieren zu dieser Zeile. Dieses Verhalten ist unabhängig von der Verwendung von gj / gk oder j / k. Ich möchte in der Lage sein, teilweise in eine Zeile zu navigieren, die sich anfänglich außerhalb des Puffers befindet (außerhalb des Bildschirms), ohne dass die gesamte umbrochene Zeile angezeigt wird.
user001
OK, dann habe ich falsch verstanden. Nun, ich denke, Ihre Linie ist entweder umwickelt oder nicht. Was Sie wollen, ist etwas dazwischen, aber ich denke, es ist einfach unmöglich.
jpjacobs