Не позволяйте vim прокручиваться ниже нижней строки

Не позволяйте vim прокручиваться ниже нижней строки

Как отключить возможность прокрутки vim за пределы конца файла?

решение1

Вимна самом деле не позволяет вампрокрутитьза пределами конца файла (то есть, переместить курсор за пределы последней существующей строки), но этопоказываетвы на несколько строк позади последнего, потому что он долженпоказать что то.

Извините, отключить эту функцию нельзя.Нет, если только вы не хотите загрузить исходные коды Vim (в конце концов, это открытый исходный код) искрипкас ним. Он изначально вставляет ~ в строки, которых нет, потому что, ну, он должен что-то показать. Все редакторы так делают.

Как кто-то предположил, есть обходные пути... но это все, что они есть - обходные пути. И ни один из них не работает по-настоящему красиво. Я бы не рекомендовал ни один из них.

решение2

Достигнув конца файла, вы можете использовать zzили ztдля перемещения текущей строки в середину или верх окна соответственно. Вы можете сделать это в любое время, независимо от местоположения в файле. Эта scrolloffнастройка заставит курсор оставаться, например, в 5 строках от верха или низа окна, если вы установили ее на 5 ( set scrolloff=5). Однако это не работает, когда вы достигаете верха или низа файла.

решение3

Без довольно уродливого хака, который, вероятно, будет выглядеть визуально тревожно и замедлит Vim, вы не сможете сделать то, что хотите. По сути, вам придется настроить что-то вроде autocmd для событий CursorMoved/CursorMovedI, которое попытается определить, отображается ли конец файла, и если да, выполнить некоторые команды обычного режима, чтобы принудительно установить позицию прокрутки.

Стоит отметить (и как говорят люди по ссылке, которую Джонни предоставил в своем комментарии), Vim — не единственное приложение, которое ведет себя подобным образом, и в Vim на самом деле нельзя прокрутить файл дальше конца — последняя строка всегда должна быть видна.

решение4

Если вас не смущает перемещение курсора, то это работает:

noremap <ScrollWheelUp> H5k
noremap <ScrollWheelDown> L5j

Связанный контент