List of commands

Exiting the program

The program can be exited with only two key presses. Optionally, the current equation list can be saved before the program is closed.

CommandDescription
'ZQ'Exit this program and discard any changes that have been made.
'ZZ'Exit this program.

Movement commands

Movement commands allow the traversal of the equation through absolute movements such as jumping to the last equation, or by relative movements such as searching for functions or patterns.

CommandDescription
'gg' Move to the top of the list of equations.
'G' Move to the last equation in the list of equations.
'0' Jump to the root of the current equation.
'$' Move to the 'end' of the equation, i.e. the last element of a depth first search.
'(' Move to the leftmost sibling of the current argument.
')' Move to the rightmost sibling of the current argument.
'j' Move down to the next equation.
'k' Move up to the previous equation.
'h' Move the selection from the current argument to that of the argument to its left.
'l' Move to the next sibling to the right of the currently selected argument.
'<Space>' Move from the current argument to its parent.
'i' Move to the leftmost child of the current argument.
'o' Move to the rightmost child of the current argument.
'f' Find a pattern forwards within the current equation.
'F' Find a pattern backwards within the current equation.
';' Repeat a previous find in the same direction and with the same pattern as before.
',' Repeat a previous find in with the same pattern but the opposite direction from before.
'/' Search for an argument or function forwards, i.e. including children, right siblings and lower equations.
'?' Search for an argument or function backwards, i.e. including left siblings, ancestors and higher equations.
'N' Move to the previous item in search list of search matches.
'n' Move to the next item in the list of search matches.
'm' Mark the location of the current argument in the current register in order to jump back to in future.
' or ` Jump to a mark, i.e. a previously selected location denoted by a register.

Creation

Add commands

In addition to being able to type an entire equation at once, various other addition commands exist to extend an existing equation by adding siblings, children, intermediate parents

CommandDescription
'aE' Add a new equation before the current equation.
'ak' Add a new equation before the current equation.
'ae' Add a new equation after the current equation.
'aj' Add a new equation after the current equation.
'ah' Add a new left sibling.
'ai' Add a new left child to the current function.
'al' Add a new right sibling.
'aa' Append a new child to the right of the current argument.
'ao' Append a new child to the right of the current argument.
'ap' Add an intermediary parent function.
'aq' Add an intermediate parent function.
'a<Space>'Add an intermediate parent function.

Actions such as adding/multiplying/subtracting/dividing by a new argument to the right are performed so frequently that the following are particularly useful.

CommandDescription
'a*'Add an intermediate TIMES parent function and add a new sibling to the right.
'a+'Add an intermediate PLUS parent function and add a new sibling to the right.
'a-'Add an intermediate MINUS parent function and add a new sibling to the right.
'a/'Add an intermediate FRACTION parent function and add a new sibling to the right.
'a='Add an intermediate EQUALS parent function and add a new sibling to the right.
'a^'Add an intermediate POWER parent function and add a new sibling to the right.

Delete

Delete commands remove specific arguments relative to the current argument.

CommandDescription
'x' Delete the current argument.
'd<Space>'Delete the current argument and copy it and its parent to clipboard.
'db'Delete the current branch (argument and all its children).
'dc'Delete the current branch while retaining its children.
'de'Delete the current equation.
'dp'Delete the current branch's parent while retaining the current argument.
'dq'Delete the current argument and copy it and its parent to clipboard.
'ds'Delete the current symbol.

Editing

As an equation is transformed, it is convenient to 'show working', i.e. to keep a record of the various steps. To take a snapshot of the current equation state, simply press <Enter> to duplicate the current equation.

CommandDescription
'<Enter>' Duplicate the current equation.

Most of algebra consists of the subtle reorganization of parts of the current equation, and so a number of commands are provided to allow such transformations. These may be grouped into two categories: commands that reorganize existing information and those that transform the equation by replacement.

Reorganization

CommandDescription
't' Excluding current, exchange not only the functions of parent and grandparent, but their arguments as well.
'T' Swap between parent and grandparent, duplicating the grandparent function as a separate child of each parent.
'H' Exchange the order of the current argument and that of the argument to its left.
'L' Exchange the order of the current argument and the sibling to its right.
'I' Move the current argument to the leftmost child of its left neighbour or otherwise to the left of its parent.
'O' Move the current argument to the leftmost child of its right neighbour or otherwise to the right of its parent.
'J' Swap the order of the current and next equations.
'K' Swap the order of the current and previous equations.
'Q' Change the current argument between a token and a branch (discarding children).

In particular, there are a number of more involved commands that perform specific transformations.

CommandDescription
'cH'Cynically permute this argument and its siblings one argument to the left.
'cL'Cynically permute this argument and its siblings one argument to the right.
'ch'Capture current and parent left; discarding siblings right.
'ci'Move the previous sibling inside the current argument.
'cl'Capture current and parent right; discarding siblings left.
'co'Move the next sibling inside current argument.
'cr'Reverse order of the children of the current branch.

Transformation

CommandDescription
'~' Where known, replace the current branch with its inverse function.
'=' Evaluate the current function and its children that can be evaluated numerically.
's' Substitute the function of a branch.
'S' Insert an intermediary parent function to the current argument.
'r' Replace the current argument (and its children) with a new argument.

Clipboard

Copy

CommandDescription
'Y' Yank the parent with no other children except for the current argument.
'y' Yank, i.e. copy the current argument (and any children) into the current clipboard register.

Paste

A number of forms of pasting may be performed, each with subtle differences from one another.

CommandDescription
'pq'Paste quixotically, inserting the clipboard argument as the current argument's parent.
'pb'Replace the entire current branch (i.e. the current subbranch).
'pc'While retaining the current argument's children, replace it with the root argument in clipboard.
'ph'Paste to the left of the current argument, i.e. as the previous (left) sibling.
'pl'Paste to the right of the current argument, i.e. as the next (right) sibling.
'pp'Insert a new parent from clipboard.
'pq'Paste quixotically, inserting the clipboard argument as the current argument's parent.
'ps'Replace the current symbol of the current function with that of the clipboard argument.
'W' Substitute variables of the form "x=tan(x)" or "x=2, y=3*g(y)" from clipboard.
'w' Substitute variables of the form "x=tan(x)" or "x=2, y=3*g(y)" from user input.

Display options

The way in which an equation is displayed may be controlled in a number of ways including if one or

CommandDescription
'e' Swap between displaying only the current equation and a visible portion of the current list of equations.
'v' Multiple selection mode allows the selection of more than one arguments or equations.
'zt' Change the view such that the currently selected equation is the first visible equation.
'zz' Change the view such that the currently selected equation is the middle visible equation.
'zb' Change the visible equations such that the current equation is that last visible equation.
'<Ctrl e>' Move the view one equation down.
'<Ctrl y>' Move the view one equation up.
'+' Increase the font size of the user interface.
'-' Decrease the font size of the user interface.
'M' Replace the current equation's number with an arbitrary label string.
'zf' Close the child fold, hiding long child arguments as ellipsis.
'zo' Open the child fold, replacing an ellipsis with the argument that it represented.
'zF' Close the parent fold, hiding all ancestors for simplicity.
'zO' Open the parent fold, literally displaying all the ancestors that were hidden by this fold.

Other

While most commands fit into the above categories, there are some additional commands that allow the organization of other commands.

CommandDescription
'.' Repeat the previously executed chord.
'"<register letter>' Specify a register to use for the next mark, yank or macro.
'q' Start or stop recording keystrokes for a particular macro.
'@<macro register>' Play back a macro stored in the specified register.
'u' Undo the previous edit.
':' Enter command mode (in which longer commands are entered as lines of text).