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

New Comment
1 comment, sorted by Click to highlight new comments since: Today at 1:20 AM

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.

New to LessWrong?