Cheatsheet & Quick Reference for Newcomers
A fast, modern terminal text editor — feels familiar, but has a few tricks worth knowing • getfresh.dev
brew install fresh-editornpm i -g @getfresh/editorcargo install fresh-editoryay -S fresh-editor.deb package via GitHub Releases.rpm package via GitHub Releases| fresh | Open empty buffer |
| fresh src/main.rs | Open a file |
| fresh src/main.rs:42 | Open file at line 42 |
| fresh file.rs:42:10 | Open at line 42, col 10 |
| fresh a.rs b.rs:100 | Open multiple files |
| fresh user@host:/path | Open remote file via SSH |
| fresh user@host:~/proj | Open remote directory via SSH |
| 💡 Tip | From anywhere, press Ctrl+P to discover any feature — it's your main navigation tool |
| Ctrl+S | Save file |
| Ctrl+Z | Undo |
| Ctrl+Y | Redo |
| Ctrl+F | Find in current file |
| Ctrl+R | Find & replace in current file |
| Ctrl+P | Command Palette / file finder |
| Ctrl+H | Show keybindings reference |
| Ctrl+Q | Quit (closes client & server) |
| Esc | Dismiss popup / remove extra cursors |
| Ctrl+D | Add cursor at next match of selection |
| Ctrl+Alt+↑ | Add cursor above current line |
| Ctrl+Alt+↓ | Add cursor below current line |
| Esc | Remove all secondary cursors |
| Alt+Shift+↑/↓ | Block (column) select up/down |
| Alt+Shift+←/→ | Block (column) select left/right |
| 💡 Tip | Select a word, then press Ctrl+D repeatedly to select each next match and edit them all at once |
| Ctrl+W | Select word under cursor |
| Ctrl+L | Select current line |
| Ctrl+A | Select all |
| Shift+Arrow | Extend selection |
| Ctrl+Shift+←/→ | Select word left/right |
| Shift+Home/End | Select to line start/end |
| Ctrl+Shift+Home/End | Select to document start/end |
| Triple-click | Select entire line |
| Alt+↑ | Move line(s) up |
| Alt+↓ | Move line(s) down |
| Ctrl+/ | Toggle line comment |
| Tab | Indent line(s) |
| Shift+Tab | Dedent line(s) |
| Ctrl+K | Delete to end of line |
| Ctrl+T | Transpose characters |
| Alt+U | Convert selection to UPPERCASE |
| Alt+L | Convert selection to lowercase |
| Ctrl+C | Copy |
| Ctrl+X | Cut |
| Ctrl+V | Paste |
| Backspace | Delete backward |
| Del | Delete forward |
| Ctrl+Backspace | Delete word backward |
| Ctrl+Del | Delete word forward |
| Auto-indent | Preserves indentation; adds extra level after { ( : |
| Auto-surround | Select text → type ( [ { " or ` to wrap it |
| Smart Home | First press → first non-whitespace char; second press → column 0 |
| Smart Backspace | Removes one full indent level when in leading whitespace |
| Hot Exit | Unsaved changes are auto-restored on next launch (on by default) |
| Ctrl+Right-click | Inspect theme scope at cursor position |
| Ctrl+P > Record | Start recording a macro |
| F5 | Stop macro recording |
| F4 | Play last recorded macro |
| 💡 Tip | Use macros to repeat complex edits across many lines without multi-cursor |
| Ctrl+Home | Jump to document start |
| Ctrl+End | Jump to document end |
| Ctrl+G | Go to specific line number |
| Ctrl+P :42 | Go to line 42 via Command Palette |
| Alt+← | Navigate back in position history |
| Alt+→ | Navigate forward in position history |
| 💡 Tip | Position history tracks where you've been — great for jumping between definition and callsite |
| Ctrl+Shift+0–9 | Set bookmark 0–9 at current position |
| Alt+0–9 | Jump to bookmark 0–9 |
| 💡 Tip | Set bookmark 1 at your primary work location and 2 at a reference file to jump between them instantly |
| Ctrl+B | Toggle sidebar (show/hide file explorer) |
| Ctrl+E | Switch focus: explorer ↔ editor |
| ↑ / ↓ | Navigate file tree |
| Enter | Open file (keep focus on explorer) |
| Double-click | Open file and focus editor |
| 💡 Tip | Explorer shows Git status indicators (modified/untracked files). Respects .gitignore by default |
| Ctrl+A | Move to line start |
| Ctrl+E | Move to line end |
| Ctrl+Shift+A | Select to line start |
| Ctrl+Shift+E | Select to line end |
| Ctrl+K | Kill (delete) to end of line |
| Ctrl+U | Kill (delete) to start of line |
| Ctrl+Y | Yank (paste from kill ring) |
| 💡 Tip | macOS Terminal.app may intercept some keys — configure escape sequences in terminal preferences if shortcuts don't work |
| Ctrl+F | Search in current buffer |
| Ctrl+R | Find & replace in current buffer |
| Ctrl+Alt+R | Interactive replace (y/n/!/q per match) |
| F3 | Find next match |
| Shift+F3 | Find previous match |
| Alt+N / Ctrl+F3 | Find next occurrence of selection |
| Alt+P / Ctrl+Shift+F3 | Find previous occurrence of selection |
| Alt+Enter | Project-wide search/replace |
| Case Sensitive | Toggle in search toolbar |
| Whole Word | Toggle in search toolbar |
| Regex | Toggle in search toolbar |
| $1, $2 | Regex capture groups in replacement |
| ${name} | Named capture group in replacement |
| 💡 Tip | Use Alt+Enter to search across the whole project — it opens a panel with all matches you can jump through |
| Alt+| | Run shell command on buffer/selection; show output |
| Alt+Shift+| | Run shell command; replace selection with output |
| 💡 Tip | Select some text and pipe it through sort, jq, or any shell tool — the result replaces your selection |
| F8 | Jump to next error/diagnostic |
| Shift+F8 | Jump to previous error/diagnostic |
| Alt+. | Open code actions (quick fix, refactor) |
| Ctrl+Space | Trigger autocomplete (explicit mode) |
| Ctrl+P > "Go to Definition" | Jump to symbol definition |
| Ctrl+P > "Find References" | List all references to symbol |
| Ctrl+P > "Rename Symbol" | Rename across all files |
| Ctrl+P > "Format Buffer" | Auto-format current file |
| Ctrl+P > "Show Diagnostics" | Open diagnostics panel |
| 💡 Tip | Install the language server for your stack (e.g. rust-analyzer, typescript-language-server) — Fresh picks it up automatically |
| Ctrl+P > "Split Vertical" | Split editor vertically |
| Ctrl+P > "Split Horizontal" | Split editor horizontally |
| Ctrl+P > "Next Split" | Move focus to next pane |
| Ctrl+P > "Previous Split" | Move focus to previous pane |
| Ctrl+P > "Close Split" | Close current pane |
| Ctrl+P > "Toggle Scroll Sync" | Sync scroll for same-buffer splits |
| Ctrl+K | Cycle focus between split panes |
| Ctrl+P > "Open Terminal" | Open terminal in editor |
| Ctrl+Space | Toggle Terminal ↔ Scrollback Mode |
| Ctrl+] | Exit terminal mode (alternative) |
| F9 | Toggle key capture (all keys → terminal) |
| ↑/↓, PgUp/PgDn | Scroll output (in Scrollback Mode) |
| Ctrl+Home / End | Jump to start/end of scrollback history |
| Ctrl+F | Search through terminal output |
| 💡 Tip | Terminal Mode = shell input. Scrollback Mode = read-only review of output (auto-exits when new output arrives) |
| Ctrl+Shift+D | Detach (client exits, server keeps running) |
| Ctrl+Q | Quit (closes both client and server) |
| 💡 Concept | Fresh runs a background server per directory. Closing your terminal doesn't kill your session — just re-run fresh to reattach |
| fresh -a | Attach to current directory's session |
| fresh -a <name> | Attach to a named session |
| fresh --cmd session list | List all active sessions |
| fresh --cmd session new <name> | Create a new named session |
| fresh --cmd session kill | Kill current directory's session |
| fresh --cmd session kill <name> | Kill a named session |
| fresh --cmd session kill --all | Kill all sessions |
| fresh --cmd session open-file . file:line:col | Open file in running session at position |
| Ctrl+P > "Keybinding Editor" | Open the visual keybinding browser |
| ↑ / ↓ | Navigate bindings list |
| / | Text search (by action, key, context) |
| r | Record a key combo to search by it |
| c | Cycle context filter (global/normal/prompt…) |
| Enter | Edit selected binding |
| a | Add new custom binding |
| d / Del | Delete custom binding |
| Ctrl+S | Save all changes to config file |
| ~/.config/fresh/config.json | User config (Linux/macOS) |
| %APPDATA%\fresh\config.json | User config (Windows) |
| .fresh/config.json | Project-level config (in repo root) |
| auto_save | Off by default (interval: 30s) |
| hot_exit | On — unsaved changes restored on next launch |
| tab_size | Default: 4 |
| line_wrap | Off by default |
| bracket_matching | On by default |
| 💡 Tip | Project config overrides user config — commit .fresh/config.json to share settings with your team |
| Ctrl+P > "Git Log" | View git commit log |
| Ctrl+P > "Git Grep" | Search across git history |
| Ctrl+P > "Review Diff" | Split-panel magit-style diff viewer |
| Tab (in diff view) | Switch between files and diff panels |
| Gutter indicators | Shows modified/added/removed lines inline |
| File explorer | Shows modified/untracked file status |
| 💡 Tip | The Review Diff view lists staged/unstaged/untracked files on the left — navigate with arrow keys, Tab to switch panels |