Emacs Recentering With Context

April 13th, 2022
emacs, tech
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, lesswrong

Recent posts on blogs I like:

Against Lyman Stone On Animal Welfare

Demographer Lyman Stone writes:

via Thing of Things March 21, 2025

Product in the age of AI

We’re seeing AI features pop up in every product we use. Slack, Google Drive, etc.

via Home March 18, 2025

How I've run major projects

focus • maintain a detailed plan for victory • run a fast OODA loop • overcommunicate • break off subprojects • have fun • bonus content: my project management starter kit

via benkuhn.net March 16, 2025

more     (via openring)