Lassen Sie vim nicht unter die untere Zeile scrollen

Lassen Sie vim nicht unter die untere Zeile scrollen

Wie kann ich verhindern, dass Vim mich über das Ende einer Datei hinaus scrollen lässt?

Antwort1

Vimlässt dich eigentlich nichtscrollenüber das Ende der Datei hinaus (also den Cursor über die letzte vorhandene Zeile hinaus bewegen), aber eszeigt anSie ein paar Zeilen hinter der letzten, weil esetwas zeigen.

Es kann leider nicht deaktiviert werden.Nicht, es sei denn, Sie möchten die Vim-Quellen herunterladen (es ist schließlich Open Source) undGeigedamit. Es fügt nativ ~'s in Zeilen ein, die nicht existieren, weil es ja etwas anzeigen muss. Alle Editoren machen das.

Wie jemand vorgeschlagen hat, gibt es Workarounds, aber das ist auch alles, was es ist – Workarounds. Und keiner davon funktioniert wirklich gut. Ich würde keinen davon empfehlen.

Antwort2

Wenn Sie das Ende der Datei erreicht haben, können Sie die aktuelle Zeile mit zzoder ztin die Mitte bzw. an den Anfang des Fensters verschieben. Sie können dies jederzeit tun, unabhängig von der Position in der Datei. Die scrolloffEinstellung sorgt dafür, dass der Cursor beispielsweise 5 Zeilen vom Anfang oder Ende des Fensters entfernt bleibt, wenn Sie ihn auf 5 ( set scrolloff=5) eingestellt haben. Dies funktioniert jedoch nicht, wenn Sie an den Anfang oder das Ende der Datei gelangen.

Antwort3

Ohne einen ziemlich hässlichen Hack, der wahrscheinlich optisch störend aussehen und Vim verlangsamen würde, können Sie nicht tun, was Sie wollen. Im Grunde müssten Sie so etwas wie einen Autocmd für die CursorMoved/CursorMovedI-Ereignisse einrichten, der versucht, festzustellen, ob das Ende der Datei angezeigt wurde, und wenn ja, einige Befehle im normalen Modus ausführen, um die Bildlaufposition zu erzwingen.

Es ist erwähnenswert (und wie die Leute unter dem Link, den Johnny in seinem Kommentar bereitgestellt hat, sagen), dass Vim nicht die einzige Anwendung ist, die sich so verhält, und dass Sie in Vim nicht wirklich über das Ende einer Datei hinaus scrollen können – die letzte Zeile muss immer sichtbar sein.

Antwort4

Wenn es Ihnen nichts ausmacht, dass der Cursor bewegt wird, funktioniert Folgendes:

noremap <ScrollWheelUp> H5k
noremap <ScrollWheelDown> L5j

verwandte Informationen