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.
Command | Description |
'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.
Command | Description |
'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
Command | Description |
'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.
Command | Description |
'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.
Command | Description |
'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.
Command | Description |
'<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
Command | Description |
'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.
Command | Description |
'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
Command | Description |
'~' | 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
Command | Description |
'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.
Command | Description |
'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
Command | Description |
'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.
Command | Description |
'.' | 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). |