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: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:1
Type characters
Type
abc in the editor2
Move cursor
Move the cursor with arrow keys (readonly action)
3
Undo
Press
Ctrl+Z — this undos both the cursor movement AND the last typed characterMulti-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
Multi-Cursor Workflow Example
1
Select a word
Position your cursor on a variable name like
value2
Add cursors at matches
Press
Ctrl+D repeatedly to add cursors at each occurrence of value3
Edit simultaneously
Type to replace all occurrences at once, or use arrow keys to move all cursors together
4
Clear cursors
Press
Esc to return to a single cursorAll 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
How Block Selection Works
1
Start selection
Position your cursor where you want to start the block
2
Create rectangular region
Press
Alt+Shift+↓ to extend down and Alt+Shift+→ to extend right, creating a rectangular selection3
Edit or copy
Type to replace the block, or
Ctrl+C to copy only the rectangular regionSelection Commands
Fresh provides powerful selection commands for quickly selecting text:Basic Editing Operations
Clipboard Operations
With block selections,
Ctrl+C copies only the rectangular region, not the entire lines.Deletion
Indentation
Code Comments
Other Editing
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:1
Enable LSP
Code folding requires an LSP server that supports
foldingRange. See LSP Configuration.2
Click gutter indicator
Click the fold indicator in the gutter to collapse a code block
3
Expand
Click again to expand, or use “Toggle Fold” from the command palette
- 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:1
Add ruler
Open the command palette (
Ctrl+P) and search for “Add Ruler”2
Enter column
Enter the column number (e.g.,
80 or 120)3
Remove ruler
Use “Remove Ruler” from the command palette
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:Using Macros
1
Start recording
Open command palette (
Ctrl+P) and search for “Record Macro”. Enter a register name (0-9).2
Perform actions
Execute the keystrokes you want to record (typing, navigation, editing, etc.)
3
Stop recording
Press
F5 or use “Stop Recording” from the command palette4
Play back
Press
F4 to replay the last macro, or use “Play Macro” to choose a specific registerCustom 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: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:1
Enable compose
Open command palette and search for “Markdown: Toggle Compose”
2
Enjoy clean view
Markup like
**, *, []() is concealed, soft line breaks are applied, and tables are rendered3
Adjust width
Use “Markdown: Set Compose Width” to change the text width
4
Side-by-side view
Open the same file in a vertical split to see source and composed views simultaneously
Related Documentation
Multi-Cursor Guide
Detailed multi-cursor editing workflows
Search & Replace
Find and replace text in files
Navigation
Moving around your codebase