Symex exhibits a “point-free” modal experience allowing the expression of a rich array of commands with few keystrokes.
The archetypical modal editing tool is, of course, Vim. As Vim addresses the general task of editing text, its interface is necessarily complex and subtle, requiring years to master. Although Symex draws inspiration from Vim, it exhibits a different, simpler, modal style that is specialized to the comparatively narrow task of editing code.
More specifically, Vim’s (and Evil’s) interface exhibits a compositional style, where verbs (operators like “delete”) are combined with nouns (motions or text objects, e.g., relating to words or paragraphs) to form commands. In Symex, all motions and operators are implicitly in relation to the currently selected expression, so that we only ever need to express a verb (like delete), and no composition is needed. The interface does still support narrower forms of composition, for instance in accepting counts for most commands via a numeric prefix argument.
The modal interface is implemented using a dedicated, lightweight, modal interface library called Lithium.
You may customize any Symex keybinding in the standard way described in Lithium documentation, for instance, using lithium-define-keys
.