If this question weren't about programmatic access (for designing something like a printable cheatsheet), I'd suggest you to look at either evil-maps.el
or evil-motions
in evil-vars.el
.
Evil's motions are bound in evil-motion-state-map
, so a possible approach would be just traversing that keymap and tracking both the key and command while doing so. The problem with that is that (surprise, surprise), it's not just motions there, for example digit-argument
is bound there to the number keys.
An alternative approach would be traversing evil-command-properties
(which is a variable altered by every Evil command defined) and looking for items with :repeat motion
as their property, these should be motions. You could then look up what key these are bound to.