Feature · Navigate

Command palette, keyboard model and the command line

Every command from the keyboard: a fuzzy palette (Ctrl+Shift+P), orthodox F-keys beside VS Code-style chords, rebinding, go-to-file, frecency jump.

Default shortcut: Ctrl+/ · Ctrl+P · Ctrl+J · Ctrl+Shift+B · Alt+D Updated 15 August 2026 View as Markdown

cwdio is built keyboard-first: every command has a name, most have a chord, and the palette makes the rest one keystroke away. The default keymap keeps the orthodox commander row — F5 copy, F6 move, F7 new folder, F8 delete — and puts the developer chords beside it: Ctrl+P go to file, Ctrl+Shift+P palette, Ctrl+Shift+F search, Ctrl+` terminal. The full table is on the keyboard shortcuts page.

What it does

  • Command palette. Ctrl+Shift+P or F1. Fuzzy matching rewards consecutive runs, word boundaries and acronyms; an empty query lists recently used commands first; disabled commands are hidden. Menu categories and palette categories are the same words, so the two tell one story.
  • One keymap, one truth. The chord shown next to a command in the palette, the menus and the shortcuts reference is derived from the same table that runs it, so a hint can never drift from what the key does.
  • Rebinding. Help ▸ Keyboard shortcuts (Ctrl+/) lists every bound command grouped by category with a type-to-filter box; each row has a pencil to capture a new chord and a reset; Reset all clears every override. Conflicts and reserved keys are reported inline and the binding left unchanged.
  • Go to file. Ctrl+P flattens the active panel’s subtree once and fuzzy-ranks the relative paths; Enter navigates to the file’s folder and selects it.
  • Jump to recent folder. Ctrl+J ranks the folders you actually go to by frequency and recency (recent visits weigh more, older ones decay); type to filter, Enter to jump, Delete to forget one.
  • Favourites. Ctrl+Shift+B opens the bookmarked-folder picker; Add current folder bookmarks where you are. Favourites can also sit as one-click buttons on the launcher bar.
  • The address bar from the keyboard. Alt+D makes the breadcrumb editable; the input autocompletes subfolders as you type, and an empty or separator-less draft lists frecent folders instead.
  • Orthodox selection keys. * inverts the selection; + and - select or unselect by wildcard pattern (*.jpg; *.png). Edit ▸ Select also offers select by size, by date, read-only files, and files of the same type as the cursor file.
  • The command line. A one-line command line sits under the panels (the Midnight Commander model): type a command and it runs in the active terminal session, in the panel’s folder. Ctrl+Enter inserts the cursor file’s name, Ctrl+Shift+Enter its full path.
  • A keyboard-operable menu bar. F10 focuses it, Alt+letter opens a menu directly, arrows move, type-ahead jumps. Eight menus — File, Edit, View, Go, Tools, Terminal, Plugins, Help — placed by the same categories the palette uses.

How to use it

  1. Forget the chord and open the palette: Ctrl+Shift+P, type dup for the duplicate finder or siz for the size map. The chord is printed beside the match; next time, use it.
  2. To reach a file deep in a project, Ctrl+P and type part of its name — readme, pkg.json — then Enter.
  3. To go back to a folder you use every day, Ctrl+J and two or three letters of it.
  4. To make a habit official, bookmark it: Ctrl+Shift+B ▸ Add current folder.
  5. Rebind anything that fights your muscle memory in Ctrl+/.

What is reserved, and why

Tab switches panels, Esc closes whatever is open, Enter opens the cursor entry, and F1 / Ctrl+Shift+P open the palette. These are core gestures handled before the keymap, so they cannot be given to a command. Global chords — the terminal toggles — fire even while an input field has focus; every other chord is panel-scoped and ignored while you are typing in the command line, the address bar or a dialog, so a file name can never trigger a file operation.

What it deliberately does not do

  • It does not bind a currently unbound command, offer secondary chords, or unbind (disable) a command yet; rebinding is one chord per command.
  • The palette does not run commands that are disabled in the current state — they are hidden, so a stale hint never leads to a no-op.
  • The command line is not a shell of its own: it writes into the active terminal session, so what runs there is exactly what would run in the terminal.

Questions

How do I find a command I do not know the shortcut for?

Press Ctrl+Shift+P (or F1) and start typing. The palette fuzzy-matches every command — including commands added by plugins — shows each one's current shortcut, and lists your recently used commands first when the box is empty. Commands that cannot run right now (nothing selected, nothing to undo) are hidden rather than greyed.

Can I rebind a shortcut?

Yes. Help ▸ Keyboard shortcuts (Ctrl+/) lists every bound command; the pencil on a row captures your next keystroke, and Reset restores the default. An override replaces the command's default chord and takes that chord away from whatever held it. Tab, Esc, Enter, F1 and Ctrl+Shift+P are reserved and cannot be assigned.

What is the difference between Ctrl+F, Ctrl+P and Ctrl+Shift+F?

Ctrl+F filters the panel you are in as you type. Ctrl+P is go-to-file: a fuzzy finder over every file under the current folder that reveals the match. Ctrl+Shift+F is the recursive search overlay, by name or by content, with saved searches. The split follows VS Code: find here, go to file, find in tree.

What does Ctrl+J do?

It opens Jump to recent folder — a zoxide-style picker ranked by frecency (how often and how recently you went there). Type a fragment, press Enter, and the active panel is there. Only deliberate navigations count; a refresh or a Back never inflates a folder's score.