This is a select subset of useful Helix text editor keys and commands for my own reference. For the exhaustive list see the official keymap page. Beginners should note that you can open the Helix tutorial file by calling hx --tutor
from the command line.
Important note: Helix key bindings are case sensitive. Be careful to spot the difference between lowercase and Uppercase characters in this crib sheet. Also be aware that if you enable Caps Lock on your keyboard and then forget to turn it off, then Helix will assume you are pressing the uppercase key bindings, which can make a real mess of your document if that's not what you intended.
You will be hitting the Esc key frequently, so if possible use a keyboard which puts the Esc key in a comfortable position, such as the Kinesis Advantage360 (which I'm using), or a configurable keyboard which lets you place the keys where you want them, such as the ZSA ErgoDox EZ (which I've never used).
When you're not typing, then you'll spend most of your time in Normal mode.
The cursor is where text will appear when typing in Insert mode. You can move the cursor (or multiple cursors) in the same way in both Normal mode and Select mode, but in Select mode the selection continues to grow or shrink based on the cursor movements, whereas in Normal mode cursor movements will reset the selection each time.
A cursor has a width of exactly one character, but you can create a selection on one side of the cursor to cover more characters. Remember that in Select mode the selection (or multiple selections) continues to grow or shrink based on the cursor movements, whereas in Normal mode cursor movements will reset the selection each time.
Hitting / lets you type in a regex (regular expression) and move the primary selection to the next sequence, in the current buffer, which matches that regex. You can hit Enter to confirm the move, or hit Esc to cancel the move. If multiple cursors/selections exist, only the primary selection will be moved to the matching sequence, and the other cursors/selections will remain where they are. Also note that a confirmed move adds the regex to the / register by default (but you can choose a different register).
If in Select mode, a new selection (and cursor) will be created around the matching text if you confirm the move, allowing you to add an additional selection (or multiple new selections).
Hitting s lets you type in a regex (regular expression) which will be used to search for matching text within all of your current selections. If you hit Enter to confirm the new selections then your previous selections will be discarded and instead you will have selections for all matching text within the old selections. Or you can hit Esc to cancel the new selections, and your previous selections will be restored. Also note that confirmation will add the regex to the / register by default (but you can choose a different register).
Note that you can use % then s to select all matching text within the entire buffer. This is the way to do a whole-document find-and-replace in Helix.
Cloning the cursor, or using regex searches, can lead to multiple cursors (and selections) existing at the same time. Before taking bold actions, check the bottom-right of the Helix window to check for "1 sel" (one cursor/selection exists) because a higher number means that you have multiple cursors/selections.
Be aware that some themes in Helix do not make it possible to visually determine which is the primary cursor, so choose carefully. (I use the catppuccin_mocha theme.)
Copying, deleting, and changing selected text will "yank" that text into a target register (default "). Think of each register as a labelled clipboard. Multiple cursors will remember their own yanked text, but if you discard all other cursors then the register will only offer the first-found text, regardless of primary cursor. Helix uses default registers for certain actions, but you can arbitrarily choose or create a new register by opening the Registers menu and hitting a character of your choice.
There are numerous actions you can perform on your selection(s) which do not involve registers. These actions do not read from or write to any registers.
Open from Normal mode by hitting :. In Command mode you will see a cursor appear on the very bottom line of the Helix terminal, positioned after a colon character. Helix has a very helpful command browser, which lets you start typing part of a command to see potential matches, and then hit Tab to cycle through them, and then hit Enter to execute the highlighted command. It also shows a tooltip to say what the highlighted command will do. Hit Esc to return to Normal mode without taking any action. When you execute a command it will be written to the : register.
There are many commands built into Helix, but here are the most important ones that you should know about.
q
q!
w
w <filepath_and_name>
theme
buffer-close
buffer-close!
reload
reload-all
o <filepath_and_name>
move <filepath_and_name>
Open from Normal mode by hitting i. In Insert mode most keys simply cause text to be added to the buffer, at the current position of the cursor (or multiple cursors). But there are a few keys and combinations which have non-typing effects.