In emacs, when you press Ctrl-L, by default it runs
recenter-top-bottom
.
This scrolls the document (“buffer”) so the line the cursor is
currently on is centered in the screen. If you press it again, it
scrolls so the cursor is at the very top of the screen, and again puts
the cursor at the very bottom. I’ve always been mildly irritated by
this: the middle of the screen is lower than I want for the initial
state; I generally want more context below the cursor than above.
Additionally, scrolling to the top or bottom is nearly useless because
I almost always want at least a little bit of context on both sides of
the cursor.
Everything in emacs can be configured, but sometimes it’s quite
a pain, so I kept putting off looking into this. With Nora napping
and the older two playing with a neighbor friend, however, I finally
looked into this, and it turns out to be very easy. There’s a
recenter-positions
variable that defaults to
'(middle top bottom)
, but you can set it to anything you
want. The default is equivalent to '(0.0, 0.5, 1.0)
, and
I’m now using:
(setq recenter-positions ’(0.25 0.5 0.9))This means that the first Ctrl-L puts my cursor 25% of the way down the page, which is where I’m most likely to want it. If I find I want more context above I can press it again, to put it at 50%, and again to put it at 90%.
These are good for my usage, but I run tall terminals and if I ran shorter ones I might want different values.
Comment via: facebook
I noticed a minor mistake: the default is (mostly) equivalent to to ’(0.5, 0.0, 1.0), i.e. the first two numbers are swapped.
I say “mostly”, because there is one rather annoying difference between 0.0 and top, and 1.0 and bottom respectively: recenter-positions isn’t used only for Ctrl+L (recenter-top-bottom), but also Alt+R (move-to-window-line-top-bottom). When using 0.0 and 1.0, the latter scrolls the window for some reason instead of just moving the point.
I’m now using ’(0.35 top bottom) and am much happier with it than the default, thank you for the pointer! :)
Another tip: you can still center the current line by prefixing, i.e. entering Ctrl+U Ctrl+L.