# Keyboard shortcuts

Every default binding by context, for macOS and Linux, and how to change one.


Rip has one set of bindings for both platforms. In this guide, `secondary` means ⌘ on macOS and Ctrl on Linux. Use the switch at the top of the page to show the keys for your platform.

## Notation

A keystroke is modifiers and a key, joined with `-`. The modifiers are `ctrl-`, `alt-`, `shift-` and `cmd-`, in that order. `secondary-` stands for `cmd-` on macOS and `ctrl-` on Linux. A chord is two keystrokes with a space between them: `cmd-k cmd-t`.

Named keys: `enter`, `escape`, `backspace`, `delete`, `tab`, `space`, `up`, `down`, `left`, `right`, `pageup`, `pagedown`, `home`, `end`. Letters, digits and punctuation are the character you type.

## Change a binding

Add a `[keys]` table to `config.toml`. Each line maps a keystroke to an action, or to `none` to remove a binding.

```toml
[keys]
"cmd-p" = "workspace::ToggleFileFinder"
"cmd-shift-p" = "workspace::ToggleCommandPalette"
"cmd-d" = "editor::SelectNext"
"ctrl-g" = "none"
```

Your bindings apply in every part of the window. Rip reports a bad line when it loads the config. Run `rip: show keymap` from the command palette to see every action with its binding, including yours.

## Contexts

A default binding can apply to one part of the window only. Examples are the editor, the file tree, a picker, and the diff view. The tables name that part in the last column. A binding with no context works everywhere. A few bindings exist on one platform only, and the switch shows the ones for yours.

## Default bindings

### App / workspace

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>secondary-q</kbd> | rip: Quit<br><code>app::Quit</code> | Everywhere |
| <kbd>secondary-h</kbd> | rip: Hide<br><code>app::Hide</code> | Everywhere |
| <kbd>secondary-alt-h</kbd> | rip: Hide Others<br><code>app::HideOthers</code> | Everywhere |
| <kbd>secondary-,</kbd> | rip: Open Config<br><code>app::OpenConfig</code> | Everywhere |
| <kbd>ctrl-alt-shift-d</kbd> | rip: Debug Dump<br><code>app::DebugDump</code> | Everywhere |
| <kbd>secondary-=</kbd> | rip: Zoom In<br><code>app::ZoomIn</code> | Everywhere |
| <kbd>secondary-shift-=</kbd> | rip: Zoom In<br><code>app::ZoomIn</code> | Everywhere |
| <kbd>secondary--</kbd> | rip: Zoom Out<br><code>app::ZoomOut</code> | Everywhere |
| <kbd>secondary-0</kbd> | rip: Zoom Reset<br><code>app::ZoomReset</code> | Everywhere |
| <kbd>secondary-alt-1</kbd> | Pane: Layout Columns1<br><code>pane::LayoutColumns1</code> | Everywhere |
| <kbd>secondary-alt-2</kbd> | Pane: Layout Columns2<br><code>pane::LayoutColumns2</code> | Everywhere |
| <kbd>secondary-alt-3</kbd> | Pane: Layout Columns3<br><code>pane::LayoutColumns3</code> | Everywhere |
| <kbd>secondary-alt-4</kbd> | Pane: Layout Columns4<br><code>pane::LayoutColumns4</code> | Everywhere |
| <kbd>secondary-alt-5</kbd> | Pane: Layout Grid<br><code>pane::LayoutGrid</code> | Everywhere |
| <kbd>secondary-alt-8</kbd> | Pane: Layout Rows2<br><code>pane::LayoutRows2</code> | Everywhere |
| <kbd>secondary-alt-9</kbd> | Pane: Layout Rows3<br><code>pane::LayoutRows3</code> | Everywhere |
| <kbd>secondary-o</kbd> | Workspace: Open<br><code>workspace::Open</code> | Everywhere |
| <kbd>secondary-n</kbd> | Workspace: New File<br><code>workspace::NewFile</code> | Everywhere |
| <kbd>secondary-shift-n</kbd> | Workspace: New Window<br><code>workspace::NewWindow</code> | Everywhere |
| <kbd>secondary-s</kbd> | Workspace: Save<br><code>workspace::Save</code> | Everywhere |
| <kbd>secondary-shift-s</kbd> | Workspace: Save As<br><code>workspace::SaveAs</code> | Everywhere |
| <kbd>secondary-alt-s</kbd> | Workspace: Save All<br><code>workspace::SaveAll</code> | Everywhere |
| <kbd>secondary-p</kbd> | Workspace: Toggle File Finder<br><code>workspace::ToggleFileFinder</code> | Everywhere |
| <kbd>secondary-shift-p</kbd> | Workspace: Toggle Command Palette<br><code>workspace::ToggleCommandPalette</code> | Everywhere |
| <kbd>secondary-k secondary-t</kbd> | Workspace: Toggle Theme Picker<br><code>workspace::ToggleThemePicker</code> | Everywhere |
| <kbd>secondary-b</kbd> | Workspace: Toggle Sidebar<br><code>workspace::ToggleSidebar</code> | Everywhere |
| <kbd>secondary-shift-b</kbd> | Workspace: Toggle Branch Picker<br><code>workspace::ToggleBranchPicker</code> | Everywhere |
| <kbd>secondary-shift-r</kbd> | Workspace: Toggle Review Panel<br><code>workspace::ToggleReviewPanel</code> | Everywhere |
| <kbd>secondary-shift-m</kbd> | Workspace: Toggle Markdown Preview<br><code>workspace::ToggleMarkdownPreview</code> | Everywhere |
| <kbd>secondary-alt-v</kbd> | Workspace: Toggle Reading View<br><code>workspace::ToggleReadingView</code> | Everywhere |
| <kbd>secondary-shift-e</kbd> | Workspace: Reveal In File Tree<br><code>workspace::RevealInFileTree</code> | Everywhere |
| <kbd>secondary-shift-f</kbd> | Workspace: Toggle Project Search<br><code>workspace::ToggleProjectSearch</code> | Everywhere |
| <kbd>secondary-shift-j</kbd> | Workspace: Toggle Trace View<br><code>workspace::ToggleTraceView</code> | Everywhere |
| <kbd>secondary-alt-b</kbd> | Workspace: Toggle Worktrees<br><code>workspace::ToggleWorktrees</code> | Everywhere |
| <kbd>secondary-alt-l</kbd> | Workspace: Toggle File History<br><code>workspace::ToggleFileHistory</code> | Everywhere |
| <kbd>secondary-alt-p</kbd> | Workspace: Toggle Plan<br><code>workspace::TogglePlan</code> | Everywhere |
| <kbd>secondary-shift-w</kbd> | Workspace: Close Window<br><code>workspace::CloseWindow</code> | Everywhere |
| <kbd>secondary-alt-g</kbd> | Workspace: Toggle Git Status<br><code>workspace::ToggleGitStatus</code> | Everywhere |
| <kbd>secondary-alt-shift-g</kbd> | Workspace: Mark Baseline<br><code>workspace::MarkBaseline</code> | Everywhere |
| <kbd>ctrl-0</kbd> <small class="os-note">macOS only</small> | Workspace: Focus Sidebar<br><code>workspace::FocusSidebar</code> | Everywhere |
| <kbd>alt-0</kbd> <small class="os-note">Linux only</small> | Workspace: Focus Sidebar<br><code>workspace::FocusSidebar</code> | Everywhere |
| <kbd>ctrl-1</kbd> <small class="os-note">macOS only</small> | Workspace: Focus Editor<br><code>workspace::FocusEditor</code> | Everywhere |
| <kbd>alt-1</kbd> <small class="os-note">Linux only</small> | Workspace: Focus Editor<br><code>workspace::FocusEditor</code> | Everywhere |

### Panes / tabs

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>secondary-w</kbd> | Pane: Close Tab<br><code>pane::CloseTab</code> | Everywhere |
| <kbd>secondary-alt-w</kbd> | Pane: Close Other Tabs<br><code>pane::CloseOtherTabs</code> | Everywhere |
| <kbd>secondary-k secondary-w</kbd> | Pane: Close All Tabs<br><code>pane::CloseAllTabs</code> | Everywhere |
| <kbd>secondary-k w</kbd> | Pane: Close Pane<br><code>pane::ClosePane</code> | Everywhere |
| <kbd>ctrl-tab</kbd> | Pane: Next Tab<br><code>pane::NextTab</code> | Everywhere |
| <kbd>ctrl-shift-tab</kbd> | Pane: Previous Tab<br><code>pane::PreviousTab</code> | Everywhere |
| <kbd>secondary-shift-]</kbd> | Pane: Next Tab<br><code>pane::NextTab</code> | Everywhere |
| <kbd>secondary-shift-[</kbd> | Pane: Previous Tab<br><code>pane::PreviousTab</code> | Everywhere |
| <kbd>secondary-alt-right</kbd> | Pane: Next Tab<br><code>pane::NextTab</code> | Everywhere |
| <kbd>secondary-alt-left</kbd> | Pane: Previous Tab<br><code>pane::PreviousTab</code> | Everywhere |
| <kbd>secondary-shift-t</kbd> | Pane: Reopen Closed Tab<br><code>pane::ReopenClosedTab</code> | Everywhere |
| <kbd>secondary-1</kbd> | Pane: Activate Tab1<br><code>pane::ActivateTab1</code> | Everywhere |
| <kbd>secondary-2</kbd> | Pane: Activate Tab2<br><code>pane::ActivateTab2</code> | Everywhere |
| <kbd>secondary-3</kbd> | Pane: Activate Tab3<br><code>pane::ActivateTab3</code> | Everywhere |
| <kbd>secondary-4</kbd> | Pane: Activate Tab4<br><code>pane::ActivateTab4</code> | Everywhere |
| <kbd>secondary-5</kbd> | Pane: Activate Tab5<br><code>pane::ActivateTab5</code> | Everywhere |
| <kbd>secondary-6</kbd> | Pane: Activate Tab6<br><code>pane::ActivateTab6</code> | Everywhere |
| <kbd>secondary-7</kbd> | Pane: Activate Tab7<br><code>pane::ActivateTab7</code> | Everywhere |
| <kbd>secondary-8</kbd> | Pane: Activate Tab8<br><code>pane::ActivateTab8</code> | Everywhere |
| <kbd>secondary-9</kbd> | Pane: Activate Last Tab<br><code>pane::ActivateLastTab</code> | Everywhere |
| <kbd>secondary-\\</kbd> | Pane: Split Right<br><code>pane::SplitRight</code> | Everywhere |
| <kbd>secondary-alt-\\</kbd> | Pane: Split Down<br><code>pane::SplitDown</code> | Everywhere |
| <kbd>secondary-k right</kbd> | Pane: Split Right<br><code>pane::SplitRight</code> | Everywhere |
| <kbd>secondary-k down</kbd> | Pane: Split Down<br><code>pane::SplitDown</code> | Everywhere |
| <kbd>secondary-k left</kbd> | Pane: Split Left<br><code>pane::SplitLeft</code> | Everywhere |
| <kbd>secondary-k up</kbd> | Pane: Split Up<br><code>pane::SplitUp</code> | Everywhere |
| <kbd>secondary-k secondary-right</kbd> | Pane: Activate Pane Right<br><code>pane::ActivatePaneRight</code> | Everywhere |
| <kbd>secondary-k secondary-left</kbd> | Pane: Activate Pane Left<br><code>pane::ActivatePaneLeft</code> | Everywhere |
| <kbd>secondary-k secondary-up</kbd> | Pane: Activate Pane Up<br><code>pane::ActivatePaneUp</code> | Everywhere |
| <kbd>secondary-k secondary-down</kbd> | Pane: Activate Pane Down<br><code>pane::ActivatePaneDown</code> | Everywhere |
| <kbd>secondary-k shift-enter</kbd> | Pane: Zoom Pane<br><code>pane::ZoomPane</code> | Everywhere |
| <kbd>secondary-alt-]</kbd> | Pane: Activate Next Pane<br><code>pane::ActivateNextPane</code> | Everywhere |
| <kbd>secondary-alt-[</kbd> | Pane: Activate Previous Pane<br><code>pane::ActivatePreviousPane</code> | Everywhere |
| <kbd>secondary-k secondary-m</kbd> | Pane: Move Tab To Next Pane<br><code>pane::MoveTabToNextPane</code> | Everywhere |

### Editor: movement

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>left</kbd> | Editor: Move Left<br><code>editor::MoveLeft</code> | Editor |
| <kbd>right</kbd> | Editor: Move Right<br><code>editor::MoveRight</code> | Editor |
| <kbd>up</kbd> | Editor: Move Up<br><code>editor::MoveUp</code> | Editor |
| <kbd>down</kbd> | Editor: Move Down<br><code>editor::MoveDown</code> | Editor |
| <kbd>ctrl-b</kbd> <small class="os-note">macOS only</small> | Editor: Move Left<br><code>editor::MoveLeft</code> | Editor |
| <kbd>ctrl-f</kbd> <small class="os-note">macOS only</small> | Editor: Move Right<br><code>editor::MoveRight</code> | Editor |
| <kbd>ctrl-p</kbd> <small class="os-note">macOS only</small> | Editor: Move Up<br><code>editor::MoveUp</code> | Editor |
| <kbd>ctrl-n</kbd> <small class="os-note">macOS only</small> | Editor: Move Down<br><code>editor::MoveDown</code> | Editor |
| <kbd>shift-left</kbd> | Editor: Select Left<br><code>editor::SelectLeft</code> | Editor |
| <kbd>shift-right</kbd> | Editor: Select Right<br><code>editor::SelectRight</code> | Editor |
| <kbd>shift-up</kbd> | Editor: Select Up<br><code>editor::SelectUp</code> | Editor |
| <kbd>shift-down</kbd> | Editor: Select Down<br><code>editor::SelectDown</code> | Editor |
| <kbd>alt-left</kbd> | Editor: Move To Previous Word Start<br><code>editor::MoveToPreviousWordStart</code> | Editor |
| <kbd>alt-right</kbd> | Editor: Move To Next Word End<br><code>editor::MoveToNextWordEnd</code> | Editor |
| <kbd>alt-b</kbd> | Editor: Move To Previous Word Start<br><code>editor::MoveToPreviousWordStart</code> | Editor |
| <kbd>alt-f</kbd> | Editor: Move To Next Word End<br><code>editor::MoveToNextWordEnd</code> | Editor |
| <kbd>alt-shift-left</kbd> | Editor: Select To Previous Word Start<br><code>editor::SelectToPreviousWordStart</code> | Editor |
| <kbd>alt-shift-right</kbd> | Editor: Select To Next Word End<br><code>editor::SelectToNextWordEnd</code> | Editor |
| <kbd>secondary-left</kbd> <small class="os-note">macOS only</small> | Editor: Move To Beginning Of Line<br><code>editor::MoveToBeginningOfLine</code> | Editor |
| <kbd>secondary-right</kbd> <small class="os-note">macOS only</small> | Editor: Move To End Of Line<br><code>editor::MoveToEndOfLine</code> | Editor |
| <kbd>ctrl-left</kbd> <small class="os-note">Linux only</small> | Editor: Move To Previous Word Start<br><code>editor::MoveToPreviousWordStart</code> | Editor |
| <kbd>ctrl-right</kbd> <small class="os-note">Linux only</small> | Editor: Move To Next Word End<br><code>editor::MoveToNextWordEnd</code> | Editor |
| <kbd>home</kbd> | Editor: Move To Beginning Of Line<br><code>editor::MoveToBeginningOfLine</code> | Editor |
| <kbd>end</kbd> | Editor: Move To End Of Line<br><code>editor::MoveToEndOfLine</code> | Editor |
| <kbd>ctrl-a</kbd> <small class="os-note">macOS only</small> | Editor: Move To Beginning Of Line<br><code>editor::MoveToBeginningOfLine</code> | Editor |
| <kbd>ctrl-e</kbd> <small class="os-note">macOS only</small> | Editor: Move To End Of Line<br><code>editor::MoveToEndOfLine</code> | Editor |
| <kbd>secondary-shift-left</kbd> <small class="os-note">macOS only</small> | Editor: Select To Beginning Of Line<br><code>editor::SelectToBeginningOfLine</code> | Editor |
| <kbd>secondary-shift-right</kbd> <small class="os-note">macOS only</small> | Editor: Select To End Of Line<br><code>editor::SelectToEndOfLine</code> | Editor |
| <kbd>ctrl-shift-left</kbd> <small class="os-note">Linux only</small> | Editor: Select To Previous Word Start<br><code>editor::SelectToPreviousWordStart</code> | Editor |
| <kbd>ctrl-shift-right</kbd> <small class="os-note">Linux only</small> | Editor: Select To Next Word End<br><code>editor::SelectToNextWordEnd</code> | Editor |
| <kbd>shift-home</kbd> | Editor: Select To Beginning Of Line<br><code>editor::SelectToBeginningOfLine</code> | Editor |
| <kbd>shift-end</kbd> | Editor: Select To End Of Line<br><code>editor::SelectToEndOfLine</code> | Editor |
| <kbd>secondary-up</kbd> <small class="os-note">macOS only</small> | Editor: Move To Beginning<br><code>editor::MoveToBeginning</code> | Editor |
| <kbd>secondary-down</kbd> <small class="os-note">macOS only</small> | Editor: Move To End<br><code>editor::MoveToEnd</code> | Editor |
| <kbd>secondary-home</kbd> | Editor: Move To Beginning<br><code>editor::MoveToBeginning</code> | Editor |
| <kbd>secondary-end</kbd> | Editor: Move To End<br><code>editor::MoveToEnd</code> | Editor |
| <kbd>secondary-shift-up</kbd> <small class="os-note">macOS only</small> | Editor: Select To Beginning<br><code>editor::SelectToBeginning</code> | Editor |
| <kbd>secondary-shift-down</kbd> <small class="os-note">macOS only</small> | Editor: Select To End<br><code>editor::SelectToEnd</code> | Editor |
| <kbd>ctrl-up</kbd> | Editor: Move To Previous Paragraph<br><code>editor::MoveToPreviousParagraph</code> | Editor |
| <kbd>ctrl-down</kbd> | Editor: Move To Next Paragraph<br><code>editor::MoveToNextParagraph</code> | Editor |
| <kbd>ctrl-shift-up</kbd> <small class="os-note">macOS only</small> | Editor: Select To Previous Paragraph<br><code>editor::SelectToPreviousParagraph</code> | Editor |
| <kbd>ctrl-shift-down</kbd> <small class="os-note">macOS only</small> | Editor: Select To Next Paragraph<br><code>editor::SelectToNextParagraph</code> | Editor |
| <kbd>pageup</kbd> | Editor: Page Up<br><code>editor::PageUp</code> | Editor |
| <kbd>pagedown</kbd> | Editor: Page Down<br><code>editor::PageDown</code> | Editor |
| <kbd>shift-pageup</kbd> | Editor: Select Page Up<br><code>editor::SelectPageUp</code> | Editor |
| <kbd>shift-pagedown</kbd> | Editor: Select Page Down<br><code>editor::SelectPageDown</code> | Editor |
| <kbd>ctrl-v</kbd> <small class="os-note">macOS only</small> | Editor: Page Down<br><code>editor::PageDown</code> | Editor |
| <kbd>alt-v</kbd> | Editor: Page Up<br><code>editor::PageUp</code> | Editor |
| <kbd>ctrl-l</kbd> <small class="os-note">macOS only</small> | Editor: Center Cursor<br><code>editor::CenterCursor</code> | Editor |
| <kbd>secondary-alt-up</kbd> | Editor: Add Selection Above<br><code>editor::AddSelectionAbove</code> | Editor |
| <kbd>secondary-alt-down</kbd> | Editor: Add Selection Below<br><code>editor::AddSelectionBelow</code> | Editor |
| <kbd>alt-up</kbd> | Editor: Select Larger Syntax Node<br><code>editor::SelectLargerSyntaxNode</code> | Editor |
| <kbd>alt-down</kbd> | Editor: Select Smaller Syntax Node<br><code>editor::SelectSmallerSyntaxNode</code> | Editor |
| <kbd>ctrl-secondary-up</kbd> <small class="os-note">macOS only</small> | Editor: Move Line Up<br><code>editor::MoveLineUp</code> | Editor |
| <kbd>ctrl-secondary-down</kbd> <small class="os-note">macOS only</small> | Editor: Move Line Down<br><code>editor::MoveLineDown</code> | Editor |
| <kbd>ctrl-shift-up</kbd> <small class="os-note">Linux only</small> | Editor: Move Line Up<br><code>editor::MoveLineUp</code> | Editor |
| <kbd>ctrl-shift-down</kbd> <small class="os-note">Linux only</small> | Editor: Move Line Down<br><code>editor::MoveLineDown</code> | Editor |
| <kbd>alt-]</kbd> | Editor: Next Diff Hunk<br><code>editor::NextDiffHunk</code> | Editor |
| <kbd>alt-[</kbd> | Editor: Previous Diff Hunk<br><code>editor::PreviousDiffHunk</code> | Editor |

### Editor: selection

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>secondary-a</kbd> | Editor: Select All<br><code>editor::SelectAll</code> | Editor |
| <kbd>secondary-l</kbd> | Editor: Select Line<br><code>editor::SelectLine</code> | Editor |
| <kbd>secondary-d</kbd> | Editor: Select Next<br><code>editor::SelectNext</code> | Editor |
| <kbd>secondary-shift-l</kbd> | Editor: Select All Matches<br><code>editor::SelectAllMatches</code> | Editor |
| <kbd>secondary-k secondary-d</kbd> | Editor: Skip Select Next<br><code>editor::SkipSelectNext</code> | Editor |
| <kbd>alt-shift-i</kbd> | Editor: Split Selection Into Lines<br><code>editor::SplitSelectionIntoLines</code> | Editor |
| <kbd>escape</kbd> | Editor: Cancel<br><code>editor::Cancel</code> | Editor |

### Editor: editing

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>backspace</kbd> | Editor: Backspace<br><code>editor::Backspace</code> | Editor |
| <kbd>shift-backspace</kbd> | Editor: Backspace<br><code>editor::Backspace</code> | Editor |
| <kbd>ctrl-h</kbd> <small class="os-note">macOS only</small> | Editor: Backspace<br><code>editor::Backspace</code> | Editor |
| <kbd>delete</kbd> | Editor: Delete<br><code>editor::Delete</code> | Editor |
| <kbd>ctrl-d</kbd> <small class="os-note">macOS only</small> | Editor: Delete<br><code>editor::Delete</code> | Editor |
| <kbd>alt-backspace</kbd> | Editor: Delete To Previous Word Start<br><code>editor::DeleteToPreviousWordStart</code> | Editor |
| <kbd>alt-delete</kbd> | Editor: Delete To Next Word End<br><code>editor::DeleteToNextWordEnd</code> | Editor |
| <kbd>secondary-backspace</kbd> | Editor: Delete To Beginning Of Line<br><code>editor::DeleteToBeginningOfLine</code> | Editor |
| <kbd>secondary-delete</kbd> | Editor: Delete To End Of Line<br><code>editor::DeleteToEndOfLine</code> | Editor |
| <kbd>ctrl-k</kbd> <small class="os-note">macOS only</small> | Editor: Delete To End Of Line<br><code>editor::DeleteToEndOfLine</code> | Editor |
| <kbd>secondary-shift-k</kbd> | Editor: Delete Line<br><code>editor::DeleteLine</code> | Editor |
| <kbd>secondary-alt-m</kbd> | Editor: Next Conflict<br><code>editor::NextConflict</code> | Editor |
| <kbd>secondary-alt-shift-m</kbd> | Editor: Previous Conflict<br><code>editor::PreviousConflict</code> | Editor |
| <kbd>secondary-alt-y</kbd> | Editor: Accept Ours<br><code>editor::AcceptOurs</code> | Editor |
| <kbd>secondary-alt-t</kbd> | Editor: Accept Theirs<br><code>editor::AcceptTheirs</code> | Editor |
| <kbd>enter</kbd> | Editor: Newline<br><code>editor::Newline</code> | Editor |
| <kbd>secondary-enter</kbd> | Editor: Newline Below<br><code>editor::NewlineBelow</code> | Editor |
| <kbd>secondary-shift-enter</kbd> | Editor: Newline Above<br><code>editor::NewlineAbove</code> | Editor |
| <kbd>tab</kbd> | Editor: Tab<br><code>editor::Tab</code> | Editor |
| <kbd>shift-tab</kbd> | Editor: Backtab<br><code>editor::Backtab</code> | Editor |
| <kbd>secondary-]</kbd> | Editor: Indent<br><code>editor::Indent</code> | Editor |
| <kbd>secondary-[</kbd> | Editor: Outdent<br><code>editor::Outdent</code> | Editor |
| <kbd>secondary-z</kbd> | Editor: Undo<br><code>editor::Undo</code> | Editor |
| <kbd>secondary-shift-z</kbd> | Editor: Redo<br><code>editor::Redo</code> | Editor |
| <kbd>secondary-x</kbd> | Editor: Cut<br><code>editor::Cut</code> | Editor |
| <kbd>secondary-c</kbd> | Editor: Copy<br><code>editor::Copy</code> | Editor |
| <kbd>secondary-v</kbd> | Editor: Paste<br><code>editor::Paste</code> | Editor |
| <kbd>secondary-shift-d</kbd> | Editor: Duplicate Line<br><code>editor::DuplicateLine</code> | Editor |
| <kbd>secondary-/</kbd> | Editor: Toggle Comment<br><code>editor::ToggleComment</code> | Editor |
| <kbd>ctrl-j</kbd> | Editor: Join Lines<br><code>editor::JoinLines</code> | Editor |
| <kbd>alt-z</kbd> | Editor: Toggle Soft Wrap<br><code>editor::ToggleSoftWrap</code> | Editor |
| <kbd>ctrl-secondary-space</kbd> | Editor: Show Character Palette<br><code>editor::ShowCharacterPalette</code> | Editor |

### Editor: search

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>secondary-f</kbd> | Editor: Find<br><code>editor::Find</code> | Editor |
| <kbd>secondary-alt-f</kbd> | Editor: Replace<br><code>editor::Replace</code> | Editor |
| <kbd>secondary-g</kbd> <small class="os-note">macOS only</small> | Editor: Find Next<br><code>editor::FindNext</code> | Editor |
| <kbd>secondary-shift-g</kbd> <small class="os-note">macOS only</small> | Editor: Find Previous<br><code>editor::FindPrevious</code> | Editor |
| <kbd>f3</kbd> <small class="os-note">Linux only</small> | Editor: Find Next<br><code>editor::FindNext</code> | Editor |
| <kbd>shift-f3</kbd> <small class="os-note">Linux only</small> | Editor: Find Previous<br><code>editor::FindPrevious</code> | Editor |
| <kbd>enter</kbd> | Editor: Find Next<br><code>editor::FindNext</code> | Search bar |
| <kbd>shift-enter</kbd> | Editor: Find Previous<br><code>editor::FindPrevious</code> | Search bar |
| <kbd>secondary-enter</kbd> | Editor: Replace Next<br><code>editor::ReplaceNext</code> | Search bar |
| <kbd>secondary-alt-enter</kbd> | Editor: Replace All<br><code>editor::ReplaceAll</code> | Search bar |
| <kbd>ctrl-g</kbd> | Editor: Go To Line<br><code>editor::GoToLine</code> | Editor |

### Pickers / modals

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Pickers |
| <kbd>down</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Pickers |
| <kbd>ctrl-p</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Pickers |
| <kbd>ctrl-n</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Pickers |
| <kbd>shift-tab</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Pickers |
| <kbd>tab</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Pickers |
| <kbd>home</kbd> | picker: Select First<br><code>picker::SelectFirst</code> | Pickers |
| <kbd>end</kbd> | picker: Select Last<br><code>picker::SelectLast</code> | Pickers |
| <kbd>enter</kbd> | picker: Confirm<br><code>picker::Confirm</code> | Pickers |
| <kbd>secondary-enter</kbd> | picker: Confirm Split<br><code>picker::ConfirmSplit</code> | Pickers |
| <kbd>escape</kbd> | picker: Dismiss<br><code>picker::Dismiss</code> | Pickers |
| <kbd>escape</kbd> | about: Close<br><code>about::Close</code> | About window |
| <kbd>secondary-w</kbd> | about: Close<br><code>about::Close</code> | About window |

### File tree

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | File tree |
| <kbd>down</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | File tree |
| <kbd>left</kbd> | Files: Collapse<br><code>filetree::Collapse</code> | File tree |
| <kbd>right</kbd> | Files: Expand<br><code>filetree::Expand</code> | File tree |
| <kbd>enter</kbd> | Files: Open Selected<br><code>filetree::OpenSelected</code> | File tree |
| <kbd>space</kbd> | Files: Open Selected<br><code>filetree::OpenSelected</code> | File tree |
| <kbd>secondary-n</kbd> | Files: New File Here<br><code>filetree::NewFileHere</code> | File tree |
| <kbd>secondary-shift-n</kbd> | Files: New Folder Here<br><code>filetree::NewFolderHere</code> | File tree |
| <kbd>f2</kbd> | Files: Rename<br><code>filetree::Rename</code> | File tree |
| <kbd>secondary-backspace</kbd> | Files: Trash<br><code>filetree::Trash</code> | File tree |
| <kbd>secondary-c</kbd> | Files: Copy Path<br><code>filetree::CopyPath</code> | File tree |
| <kbd>secondary-alt-c</kbd> | Files: Copy Relative Path<br><code>filetree::CopyRelativePath</code> | File tree |
| <kbd>secondary-alt-r</kbd> | Files: Reveal In Finder<br><code>filetree::RevealInFinder</code> | File tree |
| <kbd>escape</kbd> | Workspace: Focus Editor<br><code>workspace::FocusEditor</code> | File tree |

### Review / diff view

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>]</kbd> | Review: Next Hunk<br><code>review::NextHunk</code> | Diff view |
| <kbd>[</kbd> | Review: Previous Hunk<br><code>review::PreviousHunk</code> | Diff view |
| <kbd>}</kbd> | Review: Next File<br><code>review::NextFile</code> | Diff view |
| <kbd>{</kbd> | Review: Previous File<br><code>review::PreviousFile</code> | Diff view |
| <kbd>n</kbd> | Review: Next Comment<br><code>review::NextComment</code> | Diff view |
| <kbd>p</kbd> | Review: Previous Comment<br><code>review::PreviousComment</code> | Diff view |
| <kbd>down</kbd> | Review: Next Hunk<br><code>review::NextHunk</code> | Diff view |
| <kbd>up</kbd> | Review: Previous Hunk<br><code>review::PreviousHunk</code> | Diff view |
| <kbd>c</kbd> | Review: Add Comment<br><code>review::AddComment</code> | Diff view |
| <kbd>v</kbd> | Review: Toggle Viewed<br><code>review::ToggleViewed</code> | Diff view |
| <kbd>t</kbd> | Review: Toggle Layout<br><code>review::ToggleLayout</code> | Diff view |
| <kbd>w</kbd> | Review: Toggle Whitespace<br><code>review::ToggleWhitespace</code> | Diff view |
| <kbd>r</kbd> | Review: Refresh<br><code>review::Refresh</code> | Diff view |
| <kbd>o</kbd> | Review: Open In Browser<br><code>review::OpenInBrowser</code> | Diff view |
| <kbd>f</kbd> | Review: Toggle File List<br><code>review::ToggleFileList</code> | Diff view |
| <kbd>s</kbd> | Review: Toggle Symbols<br><code>review::ToggleSymbols</code> | Diff view |
| <kbd>m</kbd> | Review: Toggle Rendered<br><code>review::ToggleRendered</code> | Diff view |
| <kbd>ctrl-]</kbd> | Review: Next Symbol<br><code>review::NextSymbol</code> | Diff view |
| <kbd>a</kbd> | Review: Accept Hunk<br><code>review::AcceptHunk</code> | Diff view |
| <kbd>x</kbd> | Review: Revert Hunk<br><code>review::RevertHunk</code> | Diff view |
| <kbd>e</kbd> | Review: Export Notes<br><code>review::ExportNotes</code> | Diff view |
| <kbd>ctrl-[</kbd> | Review: Previous Symbol<br><code>review::PreviousSymbol</code> | Diff view |
| <kbd>secondary-shift-enter</kbd> | Review: Submit Review<br><code>review::SubmitReview</code> | Diff view |
| <kbd>secondary-enter</kbd> | Review: Submit Comment<br><code>review::SubmitComment</code> | Comment editor |
| <kbd>escape</kbd> | Review: Cancel Comment<br><code>review::CancelComment</code> | Comment editor |
| <kbd>secondary-shift-enter</kbd> | Review: Submit Review<br><code>review::SubmitReview</code> | Review panel |
| <kbd>escape</kbd> | Review: Cancel Comment<br><code>review::CancelComment</code> | Review panel |

### Project search

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Project search |
| <kbd>down</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Project search |
| <kbd>enter</kbd> | picker: Confirm<br><code>picker::Confirm</code> | Project search |

### Locations (pasted traces)

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Trace view |
| <kbd>down</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Trace view |
| <kbd>ctrl-n</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Trace view |
| <kbd>ctrl-p</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Trace view |
| <kbd>enter</kbd> | picker: Confirm<br><code>picker::Confirm</code> | Trace view |
| <kbd>escape</kbd> | Workspace: Focus Editor<br><code>workspace::FocusEditor</code> | Trace view |

### File history scrubber

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>left</kbd> | history: Older<br><code>history::Older</code> | File history |
| <kbd>right</kbd> | history: Newer<br><code>history::Newer</code> | File history |
| <kbd>home</kbd> | history: Oldest<br><code>history::Oldest</code> | File history |
| <kbd>end</kbd> | history: Newest<br><code>history::Newest</code> | File history |

### Worktree cockpit

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Worktrees |
| <kbd>down</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Worktrees |
| <kbd>ctrl-n</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Worktrees |
| <kbd>ctrl-p</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Worktrees |
| <kbd>enter</kbd> | picker: Confirm<br><code>picker::Confirm</code> | Worktrees |
| <kbd>secondary-enter</kbd> | picker: Confirm Split<br><code>picker::ConfirmSplit</code> | Worktrees |
| <kbd>r</kbd> | Review: Refresh<br><code>review::Refresh</code> | Worktrees |
| <kbd>escape</kbd> | Workspace: Focus Editor<br><code>workspace::FocusEditor</code> | Worktrees |

### Pull request list

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | picker: Select Previous<br><code>picker::SelectPrevious</code> | Pull requests |
| <kbd>down</kbd> | picker: Select Next<br><code>picker::SelectNext</code> | Pull requests |
| <kbd>enter</kbd> | picker: Confirm<br><code>picker::Confirm</code> | Pull requests |
| <kbd>r</kbd> | Review: Refresh<br><code>review::Refresh</code> | Pull requests |

### Preview

| Keys | Command | Where |
| --- | --- | --- |
| <kbd>up</kbd> | preview: Scroll Up<br><code>preview::ScrollUp</code> | Markdown preview |
| <kbd>down</kbd> | preview: Scroll Down<br><code>preview::ScrollDown</code> | Markdown preview |
| <kbd>pageup</kbd> | preview: Scroll Up<br><code>preview::ScrollUp</code> | Markdown preview |
| <kbd>pagedown</kbd> | preview: Scroll Down<br><code>preview::ScrollDown</code> | Markdown preview |

