Viewing Keybindings
There are several ways to discover keybindings in Fresh:Command Palette
PressCtrl+P (or ⌘+P on macOS) to open the command palette. Type any command name to see its assigned keybinding.
Keyboard Shortcuts View
Open Help → Keyboard Shortcuts from the menu to view the complete list of all keybindings organized by category.Keybinding Editor
Open Edit → Keybinding Editor to customize keybindings interactively.Keybinding Maps
Fresh supports multiple keybinding maps (styles) that you can switch between:- default - Fresh’s native keybindings (optimized for terminal use)
- emacs - Emacs-style keybindings
- vscode - VS Code-compatible shortcuts
- vim - Vim-style modal editing
Key Contexts
Keybindings are context-sensitive. The same key can perform different actions depending on where you are:- Normal - Default editing context
- Prompt - When entering text in prompts (file open, search, etc.)
- Popup - When viewing popups (completions, hover info, etc.)
- FileExplorer - When the file explorer has focus
- Menu - When navigating the menu bar
Common Keybindings (Default Map)
This section shows common keybindings from the default map. For platform-specific variations and complete listings, use the in-app Help → Keyboard Shortcuts view.
File Operations
Editing
Navigation
Search & Replace
Multi-Cursor
Splits & Tabs
View
LSP (Language Server)
File Explorer (when focused)
Customizing Keybindings
Using the Keybinding Editor
The easiest way to customize keybindings:- Open Edit → Keybinding Editor
- Search for the action you want to rebind
- Click on the keybinding or “Add Binding”
- Press the desired key combination
- Save changes
Manual Configuration
Edit~/.config/fresh/config.json:
Keybinding Schema
string
required
The key to bind. Examples:
"a", "enter", "f1", "space", "tab", "escape"string[]
required
Modifier keys. Can include:
"ctrl", "shift", "alt", "super" (or "cmd" on macOS)string
required
The action to execute. See available actions below.
string
Context condition. Values:
"normal", "prompt", "popup", "file_explorer", "menu"If omitted, defaults to "normal".object
Additional arguments for actions that require parameters.
Creating Custom Keybinding Maps
You can create your own keybinding map:Available Actions
To see all available actions, open the Keybinding Editor and browse the action dropdown, or use the Command Palette (Ctrl+P).
Some commonly used actions:
save,save_as,open,new,close,quitundo,redo,copy,cut,pastesearch,replace,find_next,find_previousgoto_line,lsp_goto_definition,lsp_referencesadd_cursor_above,add_cursor_below,add_cursor_next_matchtoggle_comment,format_buffer,delete_linesplit_horizontal,split_vertical,next_split,prev_splittoggle_file_explorer,toggle_line_numbers,toggle_line_wrap
Debugging Keybindings
If a keybinding isn’t working as expected:Debug Keyboard Events
Use Help → Debug Keyboard Events to see exactly what key codes your terminal sends to Fresh. This helps diagnose:- Missing modifier keys
- Terminal or OS intercepting keys
- Incorrect escape sequences
c to clear history, q or Esc to close.
Input Calibration
Some terminals send non-standard escape sequences. Use View → Calibrate Input to teach Fresh your terminal’s specific key mappings.Platform Differences
macOS
Cmd(⌘) is used instead ofCtrlfor many system-wide shortcuts- The default macOS keymap automatically adjusts for platform conventions
- Native menu bar integration provides standard macOS shortcuts
Windows
Altkey behavior may differ in Windows Terminal vs other terminals- Some
Ctrl+Shiftcombinations may be intercepted by the OS
Linux
- Terminal emulator differences are most prominent on Linux
- Use input calibration if your terminal sends unusual sequences
- GPM (console mouse) is supported on the Linux console
See Also
- Troubleshooting - Debug keyboard issues
- CLI Commands - Command-line options