The sheetui user interface is loosely inspired by vim. It is a modal interface that is entirely keyboard driven. At nearly any time you can type `Alt-h` to get some context sensitive help.
### Navigation Mode
The interface will start out in navigation mode. You can navigate around the table and between the sheets using the following keybinds:
**Cell Navigation**
*`h`, ⬆️, and `TAB` will move one cell to the left.
You can prefix each of the keybinds above with a numeric prefix to do them that many times. So typing `123h` will move to the left 123 times. Hitting `Esc` will clear the numeric prefix if you want to cancel it.
Typing a number will treat the contents as a number. While typing non-numeric text will treat it as text content. <aside>We do not yet support modifying the type of a cell after the fact. We may add this in the future.</aside>
*`write [path]` save the current spreadsheet. If the path is provided it will save it to that path. If omitted it will save to the path you are currently editing. `w` is a shorthand alias for this command.
*`insert-rows [number]` Inserts a row into the sheet at your current row. If the number is provided then inserts that many rows. If omitted then just inserts one.
*`insert-cols [number]` Just line `insert-rows` but for columns.
<aside>Note that in the case of `quit` and `edit` that we do not currently prompt you if the current spreadsheet has not been saved yet. So your changes will be discarded if you have not saved first.</aside>
Range Select mode copies a range reference for use later. You can enter range select mode from CellEdit mode with `CTRL-r`.
*`h`, `j`, `k`, `l` will navigate around the sheet.
*`Ctrl-n`, `Ctrl-p` will navigate between sheets.
*` ` the spacebar will select the start and end of the range respectively.
When you have selected the end of the range you will exit range select mode and the range reference will be placed into the cell contents you are editing.
<aside>We only support continuous ranges for the moment. Planned for discontinuous ranges still needs the interaction interface to be determined.</aside>