Complete Helix Editor keyboard shortcuts reference — 202 shortcuts across 13 categories. Quick reference cheat sheet for Linux & Mac.
Helix is a modal editor like Vim, but it reverses the grammar: you select first, then act. That single difference explains most of the keymap — x selects a line before d deletes it, w selects to the next word rather than merely moving — and once it clicks, the rest of the table is a set of small mode menus reached by a leading key. Helix ships with language servers and tree-sitter configured, so the code keys work out of the box.
| Shortcut | Action |
|---|---|
| h | Move Left |
| j | Move Down |
| k | Move Up |
| l | Move Right |
| w | Next Word Start |
| b | Previous Word Start |
| e | Next Word End |
| W | Next WORD Start |
| B | Previous WORD Start |
| E | Next WORD End |
| f | Find Next Char |
| t | Find Till Next Char |
| F | Find Previous Char |
| T | Find Till Previous Char |
| G | Go to Line Number |
| Alt + . | Repeat Last Motion |
| Home | Start of Line |
| End | End of Line |
| Ctrl + B | Page Up |
| Ctrl + F | Page Down |
| Ctrl + U | Half Page Up |
| Ctrl + D | Half Page Down |
| Ctrl + I | Jump Forward |
| Ctrl + O | Jump Backward |
| Ctrl + S | Save Selection to Jumplist |
| Shortcut | Action |
|---|---|
| r | Replace Character |
| R | Replace with Yanked |
| ~ | Switch Case |
| ` | To Lower Case |
| Alt + ` | To Upper Case |
| i | Insert Before |
| a | Append |
| I | Insert at Line Start |
| A | Insert at Line End |
| o | Open Line Below |
| O | Open Line Above |
| . | Repeat Last Insert |
| u | Undo |
| U | Redo |
| Alt + u | Earlier in History |
| Alt + U | Later in History |
| y | Yank |
| p | Paste After |
| P | Paste Before |
| > | Indent |
| < | Unindent |
| = | Format Selection |
| d | Delete Selection |
| Alt + d | Delete without Yanking |
| c | Change Selection |
| Alt + c | Change without Yanking |
| Ctrl + A | Increment Number |
| Ctrl + X | Decrement Number |
| Q | Record Macro |
| q | Replay Macro |
| Shortcut | Action |
|---|---|
| | | Pipe Through Shell |
| Alt + | | Pipe To Shell |
| ! | Insert Command Output |
| Alt + ! | Append Command Output |
| $ | Keep Piped Selections |
| Shortcut | Action |
|---|---|
| s | Select Regex Matches |
| S | Split on Regex |
| Alt + s | Split on Newlines |
| Alt + - | Merge Selections |
| Alt + _ | Merge Consecutive |
| & | Align Selections |
| _ | Trim Whitespace |
| ; | Collapse Selection |
| Alt + ; | Flip Selection |
| Alt + : | Ensure Forward Direction |
| , | Keep Primary Selection |
| Alt + , | Remove Primary Selection |
| C | Add Cursor Below |
| Alt + C | Add Cursor Above |
| ( | Rotate Selection Backward |
| ) | Rotate Selection Forward |
| Alt + ( | Rotate Contents Backward |
| Alt + ) | Rotate Contents Forward |
| % | Select Entire File |
| x | Select Line |
| X | Extend to Line Bounds |
| Alt + x | Shrink to Line Bounds |
| J | Join Lines |
| Alt + J | Join and Select Space |
| K | Keep Matching Selections |
| Alt + K | Remove Matching Selections |
| Ctrl + C | Toggle Comments |
| Alt + o | Expand Selection |
| Alt + i | Shrink Selection |
| Alt + p | Previous Sibling Node |
| Alt + n | Next Sibling Node |
| Alt + a | Select All Siblings |
| Alt + I | Select All Children |
| Alt + e | End of Parent Node |
| Alt + b | Start of Parent Node |
| Shortcut | Action |
|---|---|
| / | Search |
| ? | Search Backward |
| n | Next Match |
| N | Previous Match |
| * | Search Selection |
| Alt + * | Search Selection Literally |
| Shortcut | Action |
|---|---|
| v | Select Mode |
| g | Goto Mode |
| m | Match Mode |
| : | Command Mode |
| z | View Mode |
| Z | Sticky View Mode |
| Ctrl + W | Window Mode |
| Space | Space Mode |
| Shortcut | Action |
|---|---|
| zz | Center Line |
| zt | Align to Top |
| zb | Align to Bottom |
| zm | Align to Middle |
| zj | Scroll Down |
| zk | Scroll Up |
| Shortcut | Action |
|---|---|
| gg | Go to File Start |
| ge | Go to File End |
| gf | Go to File |
| gh | Go to Line Start |
| gl | Go to Line End |
| gs | First Non-Whitespace |
| gt | Top of Screen |
| gc | Middle of Screen |
| gb | Bottom of Screen |
| gd | Go to Definition |
| gy | Go to Type Definition |
| gr | Go to References |
| gi | Go to Implementation |
| ga | Alternate File |
| gm | Last Modified File |
| gn | Next Buffer |
| gp | Previous Buffer |
| g. | Last Modification |
| gw | Go to Word |
| Shortcut | Action |
|---|---|
| mm | Matching Bracket |
| ms | Surround Add |
| mr | Surround Replace |
| md | Surround Delete |
| ma | Select Around Object |
| mi | Select Inside Object |
| Shortcut | Action |
|---|---|
| Ctrl + W, W | Next Window |
| Ctrl + W, V | Vertical Split |
| Ctrl + W, S | Horizontal Split |
| Ctrl + W, F | Open File in Split |
| Ctrl + W, H | Move to Left Split |
| Ctrl + W, J | Move to Split Below |
| Ctrl + W, K | Move to Split Above |
| Ctrl + W, L | Move to Right Split |
| Ctrl + W, Q | Close Window |
| Ctrl + W, O | Only This Window |
| Shortcut | Action |
|---|---|
| Space, f | File Picker |
| Space, F | File Picker (cwd) |
| Space, b | Buffer Picker |
| Space, j | Jumplist Picker |
| Space, g | Changed File Picker |
| Space, k | Show Documentation |
| Space, s | Document Symbols |
| Space, S | Workspace Symbols |
| Space, d | Document Diagnostics |
| Space, D | Workspace Diagnostics |
| Space, r | Rename Symbol |
| Space, a | Code Action |
| Space, h | Select References |
| Space, ' | Last Picker |
| Space, c | Toggle Comments |
| Space, C | Toggle Block Comments |
| Space, p | Paste Clipboard After |
| Space, P | Paste Clipboard Before |
| Space, y | Yank to Clipboard |
| Space, Y | Yank Main Selection |
| Space, R | Replace with Clipboard |
| Space, / | Global Search |
| Space, ? | Command Palette |
| Shortcut | Action |
|---|---|
| ]d | Next Diagnostic |
| [d | Previous Diagnostic |
| ]D | Last Diagnostic |
| [D | First Diagnostic |
| ]f | Next Function |
| [f | Previous Function |
| ]t | Next Type Definition |
| [t | Previous Type Definition |
| ]a | Next Parameter |
| [a | Previous Parameter |
| ]c | Next Comment |
| [c | Previous Comment |
| ]T | Next Test |
| [T | Previous Test |
| ]p | Next Paragraph |
| [p | Previous Paragraph |
| ]g | Next Change |
| [g | Previous Change |
| ]G | Last Change |
| [G | First Change |
| ]Space | Add Newline Below |
| [Space | Add Newline Above |
| Shortcut | Action |
|---|---|
| Escape | Back to Normal Mode |
| Ctrl + R | Insert Register |
| Ctrl + K | Delete to Line End |
| Ctrl + H | Delete Previous Char |
| Ctrl + J | Insert New Line |
| Alt + Backspace | Delete Previous Word |
| Alt + Delete | Delete Next Word |
In Normal mode every motion extends a selection: w selects to the next word start, x selects the current line and pressing it again extends by a line, % selects the whole file. Then d deletes, c changes, y yanks the selection — there is no operator-pending mode. s is the key Vim users miss most: it prompts for a regex and turns every match inside the selection into its own cursor, so "change every foo in this function" is x a few times, s, type foo, then c. , collapses back to one cursor and ; collapses a selection to its cursor.
Because Helix parses code with tree-sitter, Alt + o expands the selection to the enclosing syntax node and Alt + i shrinks it back; Alt + n and Alt + p move to sibling nodes. mi and ma select inside or around a text object — brackets, quotes, or tree-sitter objects such as a function or argument — and mm jumps to the matching bracket. The bracket-pair keys ]f and [f step between functions, ]d and [d between diagnostics.
A leading key opens a menu that shows its options on screen, so the second key never has to be memorised. g is goto: gd definition, gr references, gg file start, ge file end. Space is the picker menu: Space, f files, Space, b buffers, Space, s symbols, Space, a code actions, Space, r rename, Space, / global search. Ctrl + W is window mode with Ctrl + W, V and Ctrl + W, S for vertical and horizontal splits. : opens the command line, where :q, :w and :tutor live.
The order is reversed: select a region first, then apply an action. Motions extend the selection, and multiple cursors replace most macros.
Press Escape to return to Normal mode, then type :q and Enter (or :wq to save first).
Select the region (x for lines, % for the file), press s, type the pattern and press Enter. Each match becomes a cursor; c changes them all.
No. Helix detects installed language servers automatically and ships language configuration; run :checkhealth for a status list.
Open your assistant with this page preloaded as the source — great for follow-up questions like "which of these work in other apps?"