The eternal struggle against org's overenthusiastic keybindings
16 Jan 2026
I don’t think i hide the fact that i like consistency, and one of the nice things about emacs is that whatever i am doing, i have the same keybindings everywhere. Everywhere, that is, except for in org mode, one of emacs’s flagship applications, which has absolutely no qualms about rebinding keys willy nilly. Luckily, org provides the variable org-support-shift-select, set to nil by default which, when non-nil, makes “shift-cursor commands select text when possible”. That’s really nice. I’m glad that’s an option, however i’m really unconvinced by the documentation this option provides, starting with this:
The default of this variable is nil, to avoid confusing behavior.
Now i’m no expert, but replacing behaviour that works everywhere else in emacs with special behaviour in particular contexts does not to me scream “not confusing”. The most outrageous part though, comes at the very bottom of the docstring:
However, when the cursor is on a timestamp, shift-cursor commands will still edit the time stamp - this is just too good to give up.
No! Avoiding this kind of making decisions on my behalf is exactly why i’m using emacs in the first place. But it’s not a problem, because i am using emacs in the first place, and therefore i can skip right over options telling me what i should consider too good to give up, and let my environment know exactly what i think is too good to give up:
(use-package org
:bind (:map org-mode-map
("S-<up>" . nil)
("S-<down>" . nil)
("S-<left>" . nil)
("S-<right>" . nil)
("C-S-<up>" . nil)
("C-S-<down>" . nil)
("C-S-<left>" . nil)
("C-S-<right>" . nil)
("S-<return>" . nil)))
For me, the answer is consistency, everywhere. Thank you, emacs!