Reputation: 4145
I would like to have smarter screen scrolling when I'm editing. When I reach within X number of lines from the top/bottom of the screen, I would like it to scroll the screen as I continue moving the cursor (so I can always see, at minimum, X lines below or above).
I know ctrl-y
and ctrl-e
will scroll, but is there a way I can have vim detect when I hit j
or k
how far I am from the top/bottom of the screen so it can move the screen as needed?
I also know zz
will center on the current cursor location, but I'd like there to be an area where it doesn't scroll.
Thanks.
Upvotes: 51
Views: 11701
Reputation: 3431
Try scrolloff=9999
. After cursor reaches middle of the screen, pressing j moves the screen up by one, instead of moving the cursor down. Works great once you get used to it.
Upvotes: 7
Reputation: 37103
You might to also look at scrolljump which sets the number of lines scrolled when hitting the "border" set by scrolljump.
Upvotes: 5
Reputation: 3533
From my .vimrc:
set scrolloff=3 " Keep 3 lines below and above the cursor
Upvotes: 107