Vim - остановить прокрутку после завершения первого файла

По умолчанию при прокрутке вниз до конца отображаемого буфера в окне vim вы можете прокручивать до тех пор, пока последняя строка файла не окажется в первой строке области отображения vim. Все остальные строки области отображения отмечены символами "~". Есть ли конфигурация для остановки прокрутки, когда последняя строка файла находится внизу окна vim?

Изменить: Чтобы быть более точным, это поведение применимо только к прокрутке колесика мыши или к навигации по PgDown, которая заполняет экран теми несуществующими метками линии. я курсор перемещается по строкам с помощью клавиши со стрелкой вниз, он останавливается правильно в последней строке файла.

Ответы

Ответ 1

Просто z b, чтобы выровнять текущую строку в нижней части окна.

например. G z b

Не следует ожидать, что существует семейство связанных движений панорамирования:

  • z j вниз
  • z k вверх
  • z t top
  • z b внизу
  • z z центр (средний)
  • z z центр (средний)

Для полноты:

  • z l/z l вертикальная панорама вправо
  • z h/z h вертикальная панорама влево

Кроме того, посмотрите scrolloff

Я использую

:set scrolloff=2

всегда сохранять минимальный буфер из двух строк до или после текущей строки курсора. Это делает эти движения панорамирования почти волшебными. Я провожу весь день, просматривая базы кода, используя только

  • paging C-d/C-u, hjkl и частые переходы с панорамированием (в основном) z z
  • Навигация }/{
  • ctags для всех других потребностей в навигации

Ответ 2

Я так не думаю. Но даже если бы было, как бы вы хотели, чтобы он вел себя, если в вашем файле было меньше строк, чем на вашем экране? Вам нужно будет каким-то образом отобразить эти несуществующие строки.

Вам нужно будет указать способ vim отображать эти строки, если верхняя часть файла находится в поле зрения, но не позволяет им отображать, если верх не отображается.

Ответ 3

Нет, ваше описание неверно.

Когда вы прокручиваете строку за строкой вниз со стрелками или с помощью кнопок j/k, Vim остановится в нижней части экрана. То есть, он не будет заполнять экран несуществующими строками.

Если, однако, один идет вниз по страницам с помощью PgDown/PgUp, тогда он может получить несуществующие строки на экране. Этого нельзя избежать, так как клавиши PgDown/PgUp не прыгают вниз по строкам.

Ответ 4

Я только что нашел это (http://vimrc-dissection.blogspot.se/2009/02/fixing-pageup-and-pagedown.html):

map <silent> <PageUp> 1000<C-U>
map <silent> <PageDown> 1000<C-D>
imap <silent> <PageUp> <C-O>1000<C-U>
imap <silent> <PageDown> <C-O>1000<C-D>

Что, похоже, работает для клавиш страницы. И после некоторых неудачных поисков прокрутки я придумал следующее:

map <ScrollWheelUp> H5k
map <ScrollWheelDown> L5j

Вы теряете линию, но это не очень полезно при прокрутке? Кроме того, вы также можете:

map <ScrollWheelUp> <C-U>
map <ScrollWheelDown> <C-D>

Если вы не против очень быстрой прокрутки...