Welcome to Fresh! If you've used a regular editor before, you'll feel right at home — most standard shortcuts work (Ctrl+S, Ctrl+Z, Ctrl+F…). The main things to learn: everything is discoverable via the Command Palette (Ctrl+P), Fresh runs as a persistent background server (so sessions survive disconnects), and the editor lives in your terminal while still supporting a full mouse, menus, and GUI-style settings.
Getting Started
📦 Installation
📂 Opening Files
freshOpen empty buffer
fresh src/main.rsOpen a file
fresh src/main.rs:42Open file at line 42
fresh file.rs:42:10Open at line 42, col 10
fresh a.rs b.rs:100Open multiple files
fresh user@host:/pathOpen remote file via SSH
fresh user@host:~/projOpen remote directory via SSH
🎯 Command Palette — Ctrl+P
(no prefix)File finder — fuzzy search project files
> command nameSearch & run editor commands
# filenameSwitch between open buffers
: 42Jump to line number
💡 TipFrom anywhere, press Ctrl+P to discover any feature — it's your main navigation tool
Essential Shortcuts
Ctrl+SSave file
Ctrl+ZUndo
Ctrl+YRedo
Ctrl+FFind in current file
Ctrl+RFind & replace in current file
Ctrl+PCommand Palette / file finder
Ctrl+HShow keybindings reference
Ctrl+QQuit (closes client & server)
EscDismiss popup / remove extra cursors
Editing
Multi-Cursor Editing
Ctrl+DAdd cursor at next match of selection
Ctrl+Alt+↑Add cursor above current line
Ctrl+Alt+↓Add cursor below current line
EscRemove all secondary cursors
Alt+Shift+↑/↓Block (column) select up/down
Alt+Shift+←/→Block (column) select left/right
💡 TipSelect a word, then press Ctrl+D repeatedly to select each next match and edit them all at once
Selection
Ctrl+WSelect word under cursor
Ctrl+LSelect current line
Ctrl+ASelect all
Shift+ArrowExtend selection
Ctrl+Shift+←/→Select word left/right
Shift+Home/EndSelect to line start/end
Ctrl+Shift+Home/EndSelect to document start/end
Triple-clickSelect entire line
Line Operations
Alt+↑Move line(s) up
Alt+↓Move line(s) down
Ctrl+/Toggle line comment
TabIndent line(s)
Shift+TabDedent line(s)
Ctrl+KDelete to end of line
Ctrl+TTranspose characters
Alt+UConvert selection to UPPERCASE
Alt+LConvert selection to lowercase
Delete & Clipboard
Ctrl+CCopy
Ctrl+XCut
Ctrl+VPaste
BackspaceDelete backward
DelDelete forward
Ctrl+BackspaceDelete word backward
Ctrl+DelDelete word forward
Smart Editing (Auto)
Auto-indentPreserves indentation; adds extra level after { ( :
Auto-surroundSelect text → type ( [ { " or ` to wrap it
Smart HomeFirst press → first non-whitespace char; second press → column 0
Smart BackspaceRemoves one full indent level when in leading whitespace
Hot ExitUnsaved changes are auto-restored on next launch (on by default)
Ctrl+Right-clickInspect theme scope at cursor position
Keyboard Macros
Ctrl+P > RecordStart recording a macro
F5Stop macro recording
F4Play last recorded macro
💡 TipUse macros to repeat complex edits across many lines without multi-cursor
Navigation
🧭 Cursor Navigation
Ctrl+HomeJump to document start
Ctrl+EndJump to document end
Ctrl+GGo to specific line number
Ctrl+P :42Go to line 42 via Command Palette
Alt+←Navigate back in position history
Alt+→Navigate forward in position history
💡 TipPosition history tracks where you've been — great for jumping between definition and callsite
🔖 Bookmarks
Ctrl+Shift+0–9Set bookmark 0–9 at current position
Alt+0–9Jump to bookmark 0–9
💡 TipSet bookmark 1 at your primary work location and 2 at a reference file to jump between them instantly
🗂 File Explorer
Ctrl+BToggle sidebar (show/hide file explorer)
Ctrl+ESwitch focus: explorer ↔ editor
↑ / ↓Navigate file tree
EnterOpen file (keep focus on explorer)
Double-clickOpen file and focus editor
💡 TipExplorer shows Git status indicators (modified/untracked files). Respects .gitignore by default
🍎 macOS Readline Shortcuts
Ctrl+AMove to line start
Ctrl+EMove to line end
Ctrl+Shift+ASelect to line start
Ctrl+Shift+ESelect to line end
Ctrl+KKill (delete) to end of line
Ctrl+UKill (delete) to start of line
Ctrl+YYank (paste from kill ring)
💡 TipmacOS Terminal.app may intercept some keys — configure escape sequences in terminal preferences if shortcuts don't work
Search & Replace
🔍 Search & Replace
Ctrl+FSearch in current buffer
Ctrl+RFind & replace in current buffer
Ctrl+Alt+RInteractive replace (y/n/!/q per match)
F3Find next match
Shift+F3Find previous match
Alt+N / Ctrl+F3Find next occurrence of selection
Alt+P / Ctrl+Shift+F3Find previous occurrence of selection
Alt+EnterProject-wide search/replace
Search Options & Regex
Case SensitiveToggle in search toolbar
Whole WordToggle in search toolbar
RegexToggle in search toolbar
$1, $2Regex capture groups in replacement
${name}Named capture group in replacement
💡 TipUse Alt+Enter to search across the whole project — it opens a panel with all matches you can jump through
🐚 Shell Commands on Buffer
Alt+|Run shell command on buffer/selection; show output
Alt+Shift+|Run shell command; replace selection with output
💡 TipSelect some text and pipe it through sort, jq, or any shell tool — the result replaces your selection
Code Intelligence (LSP)
🧠 LSP & Diagnostics
F8Jump to next error/diagnostic
Shift+F8Jump to previous error/diagnostic
Alt+.Open code actions (quick fix, refactor)
Ctrl+SpaceTrigger 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
💡 TipInstall the language server for your stack (e.g. rust-analyzer, typescript-language-server) — Fresh picks it up automatically
Views, Splits & Terminal
Split Views
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+KCycle focus between split panes
Integrated Terminal
Ctrl+P > "Open Terminal"Open terminal in editor
Ctrl+SpaceToggle Terminal ↔ Scrollback Mode
Ctrl+]Exit terminal mode (alternative)
F9Toggle key capture (all keys → terminal)
↑/↓, PgUp/PgDnScroll output (in Scrollback Mode)
Ctrl+Home / EndJump to start/end of scrollback history
Ctrl+FSearch through terminal output
💡 TipTerminal Mode = shell input. Scrollback Mode = read-only review of output (auto-exits when new output arrives)
Session Persistence
💾 How Sessions Work
Ctrl+Shift+DDetach (client exits, server keeps running)
Ctrl+QQuit (closes both client and server)
💡 ConceptFresh runs a background server per directory. Closing your terminal doesn't kill your session — just re-run fresh to reattach
🔌 Session CLI Commands
fresh -aAttach to current directory's session
fresh -a <name>Attach to a named session
fresh --cmd session listList all active sessions
fresh --cmd session new <name>Create a new named session
fresh --cmd session killKill current directory's session
fresh --cmd session kill <name>Kill a named session
fresh --cmd session kill --allKill all sessions
fresh --cmd session open-file . file:line:colOpen file in running session at position
Customization & Config
Keybinding Editor
Ctrl+P > "Keybinding Editor"Open the visual keybinding browser
↑ / ↓Navigate bindings list
/Text search (by action, key, context)
rRecord a key combo to search by it
cCycle context filter (global/normal/prompt…)
EnterEdit selected binding
aAdd new custom binding
d / DelDelete custom binding
Ctrl+SSave all changes to config file
Configuration
~/.config/fresh/config.jsonUser config (Linux/macOS)
%APPDATA%\fresh\config.jsonUser config (Windows)
.fresh/config.jsonProject-level config (in repo root)
auto_saveOff by default (interval: 30s)
hot_exitOn — unsaved changes restored on next launch
tab_sizeDefault: 4
line_wrapOff by default
bracket_matchingOn by default
💡 TipProject config overrides user config — commit .fresh/config.json to share settings with your team
Git Integration
🌱 Git Features
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 indicatorsShows modified/added/removed lines inline
File explorerShows modified/untracked file status
💡 TipThe Review Diff view lists staged/unstaged/untracked files on the left — navigate with arrow keys, Tab to switch panels