Some keybindings may not work or may differ on your system due to differences in keyboard layouts, terminal emulators, and operating systems. If a keybinding doesn’t work, check the command palette (
Ctrl+P) for alternative bindings, or see the Keyboard Configuration guide to customize them.Smart Editing
Fresh includes intelligent editing behaviors that adapt to your code:Smart Home
The Home key toggles between the first non-whitespace character and column 0, making navigation more efficient.
Smart Backspace
Backspace in leading whitespace removes one indent level instead of a single character.
Auto-indent
Enter preserves the current indentation level. After
{, (, or :, an extra indent level is automatically added.Bracket Matching
Matching brackets are highlighted automatically. Use “Go to Matching Bracket” from the command palette to jump between them.
Undo and Redo
Fresh provides robust undo/redo functionality that intelligently handles multi-cursor edits:| Shortcut | Action |
|---|---|
Ctrl+Z | Undo last change |
Ctrl+Y | Redo last undone change |
Atomic Multi-cursor Operations: All edits made with multiple cursors are treated as a single atomic operation. One undo restores all cursor positions and their changes simultaneously.
Smart Undo Behavior
Fresh’s undo system skips over readonly actions (like cursor movements) and only undos write actions:
This means you never need multiple undo operations to get back to your actual edits.
Multi-Cursor Editing
Edit multiple locations simultaneously with Fresh’s powerful multi-cursor support. This is one of Fresh’s most powerful features, working exactly like VS Code or Sublime Text.Creating Multiple Cursors
| Shortcut | Action |
|---|---|
Ctrl+D | Add cursor at next occurrence of selection |
Ctrl+Alt+↑ | Add cursor above current position |
Ctrl+Alt+↓ | Add cursor below current position |
Esc | Remove all secondary cursors |
Multi-Cursor Workflow Example
Edit simultaneously
Type to replace all occurrences at once, or use arrow keys to move all cursors together
All multi-cursor edits (typing, deleting, pasting) are atomic — they can be undone with a single
Ctrl+Z.Block Selection
Block selection (also called column selection or rectangular selection) lets you select and edit a rectangular region of text across multiple lines.Block Selection Controls
| Shortcut | Action |
|---|---|
Alt+Shift+↑ | Extend block selection upward |
Alt+Shift+↓ | Extend block selection downward |
Alt+Shift+← | Extend block selection left |
Alt+Shift+→ | Extend block selection right |
Esc | Clear block selection |
How Block Selection Works
Create rectangular region
Press
Alt+Shift+↓ to extend down and Alt+Shift+→ to extend right, creating a rectangular selectionSelection Commands
Fresh provides powerful selection commands for quickly selecting text:| Shortcut | Action |
|---|---|
Ctrl+W | Select word under cursor |
Ctrl+L | Select current line |
Ctrl+A | Select all text in buffer |
Shift+Arrow | Extend selection by character |
Ctrl+Shift+←/→ | Select word left/right |
Shift+Home/End | Select to line start/end |
Ctrl+Shift+Home/End | Select to document start/end |
Shift+PgUp/PgDn | Select page up/down |
Basic Editing Operations
Clipboard Operations
| Shortcut | Action |
|---|---|
Ctrl+C | Copy selection |
Ctrl+X | Cut selection |
Ctrl+V | Paste from clipboard |
With block selections,
Ctrl+C copies only the rectangular region, not the entire lines.Deletion
| Shortcut | Action |
|---|---|
Backspace | Delete character backward |
Del | Delete character forward |
Ctrl+Backspace | Delete word backward |
Ctrl+Del | Delete word forward |
Ctrl+K | Delete from cursor to end of line |
Indentation
| Shortcut | Action |
|---|---|
Tab | Indent selection or insert tab |
Shift+Tab | Dedent selection |
Code Comments
| Shortcut | Action |
|---|---|
Ctrl+/ | Toggle line comment (works with multi-cursor) |
Other Editing
| Shortcut | Action |
|---|---|
Ctrl+T | Transpose characters (swap character before and after cursor) |
Text Transformation
Transform selected text with these commands (available from the command palette):Case Conversion
Alt+U— Convert selection to UPPERCASEAlt+L— Convert selection to lowercase
Line Operations
- Sort Lines — Sort selected lines alphabetically
- Trim Trailing Whitespace — Remove trailing spaces from all lines
Automatic Cleanup on Save
You can configure Fresh to automatically clean up files when saving:config.json
Code Folding
Collapse and expand code blocks to focus on what matters:Enable LSP
Code folding requires an LSP server that supports
foldingRange. See LSP Configuration.- Navigation (up/down arrows) automatically skips over folded regions
- Each split view maintains its own independent fold state
Vertical Rulers
Add visual column guides to enforce line length limits:
Rulers are per-buffer. You can also set default rulers in your config:
config.json
Auto-Save
Fresh supports two types of auto-save:- User Auto-Save
- Crash Recovery
Enable automatic saving at regular intervals:Default interval is 30 seconds.
config.json
Keyboard Macros
Record and replay sequences of keystrokes to automate repetitive tasks:| Shortcut | Action |
|---|---|
F5 | Stop macro recording |
F4 | Play last recorded macro |
Using Macros
Start recording
Open command palette (
Ctrl+P) and search for “Record Macro”. Enter a register name (0-9).Custom Macro Keybindings
Bind specific keys to play macros automatically:config.json
Alt+Shift+1 to play macro 1 and Alt+Shift+2 to play macro 2.
Shell Integration
Run shell commands on your buffer or selection:| Shortcut | Action |
|---|---|
Alt+| | Run shell command on buffer/selection (output shown) |
Alt+Shift+| | Run shell command and replace selection with output |
Examples
Markdown Editing
Smart editing features for Markdown files (provided by the built-inmarkdown_source plugin):
List Continuation
Pressing Enter on a list item automatically continues the list with the same marker (bullets, numbers, checkboxes)
Smart List Removal
Pressing Enter on an empty list marker removes it
List Indentation
Tab indents list items and cycles through bullet styles (
-, *, +)Quote Handling
Single-quote auto-close is disabled so apostrophes don’t interfere with typing
Compose Mode (Experimental)
Enable distraction-free Markdown writing:Enjoy clean view
Markup like
**, *, []() is concealed, soft line breaks are applied, and tables are renderedRelated Documentation
Multi-Cursor Guide
Detailed multi-cursor editing workflows
Search & Replace
Find and replace text in files
Navigation
Moving around your codebase