Symex exhibits a “point-free” modal experience1 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.
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.
The next few sections describe the specific faculties made accessible via this modal UI.
The term is borrowed from functional programming, where it refers to being able to code in a very succinct way in cases where the data can be implicit. With Symex, the “implicit data” is the expression indicated by the cursor.