commit eb4a65111c9dfc5462da545e356cb6ef07cd1ae4
parent 776e0342d7e453dcade36832e2454d044ea44f7f
Author: Robert Russell <robert@rr3.xyz>
Date: Tue, 14 Oct 2025 22:58:21 -0700
Update zed
Diffstat:
2 files changed, 783 insertions(+), 786 deletions(-)
diff --git a/zed/keymap.json b/zed/keymap.json
@@ -3,786 +3,786 @@
// commands. In a few cases, we use CTRL instead of ALT for consistency with
// other applications (e.g., web browsers).
[
- // Zed application
- {
- // No "context" field means always active.
- "bindings": {
- // Confirm/cancel
- "enter": "menu::Confirm",
- "escape": "menu::Cancel",
-
- // Buffer font size
- "ctrl-alt-pageup": ["zed::IncreaseBufferFontSize", { "persist": false }],
- "ctrl-alt-pagedown": ["zed::DecreaseBufferFontSize", { "persist": false }],
- "ctrl-alt-home": ["zed::ResetBufferFontSize", { "persist": false }],
-
- // UI font size
- "ctrl-alt-shift-pageup": ["zed::IncreaseUiFontSize", { "persist": false }],
- "ctrl-alt-shift-pagedown": ["zed::DecreaseUiFontSize", { "persist": false }],
- "ctrl-alt-shift-home": ["zed::ResetUiFontSize", { "persist": false }],
-
- // Keymap configuration
- "f9": "zed::OpenKeymap",
- "shift-f9": "zed::OpenDefaultKeymap",
- "ctrl-f9": "vim::OpenDefaultKeymap",
- "ctrl-shift-f9": "debug::OpenKeyContextView",
-
- // Settings configuration
- "f10": "zed::OpenSettings",
- "shift-f10": "zed::OpenDefaultSettings",
- "ctrl-f10": "zed::OpenProjectSettings",
-
- // Fullscreen
- "f11": "zed::ToggleFullScreen"
- }
- },
-
- // Menus
- {
- "context": "Picker || menu",
- "bindings": {
- // Navigation
- "up": "menu::SelectPrevious",
- "down": "menu::SelectNext",
- "home": "menu::SelectFirst",
- "end": "menu::SelectLast",
- "pageup": "menu::SelectFirst",
- "pagedown": "menu::SelectLast",
- "tab": "menu::SelectNext",
- "shift-tab": "menu::SelectPrevious"
- }
- },
-
- {
- "context": "Workspace",
- "bindings": {
- "alt-space": "command_palette::Toggle",
- "alt-`": "workspace::ToggleZoom",
-
- // Open new things
- "ctrl-t": "workspace::NewFile",
- "ctrl-n": "workspace::NewWindow",
- "alt-t": "workspace::NewCenterTerminal",
- "alt-f": "workspace::NewSearch",
- "alt-p": "file_finder::Toggle",
-
- // Activate panes
- "ctrl-alt-up": "workspace::ActivatePaneUp",
- "ctrl-alt-down": "workspace::ActivatePaneDown",
- "ctrl-alt-left": "workspace::ActivatePaneLeft",
- "ctrl-alt-right": "workspace::ActivatePaneRight",
-
- // Move panes
- "ctrl-alt-shift-up": "workspace::SwapPaneUp",
- "ctrl-alt-shift-down": "workspace::SwapPaneDown",
- "ctrl-alt-shift-left": "workspace::SwapPaneLeft",
- "ctrl-alt-shift-right": "workspace::SwapPaneRight",
-
- // Open/focus side panes
- "alt-e": "project_panel::ToggleFocus",
- "alt-g": "git_panel::ToggleFocus",
- "alt-o": "outline_panel::ToggleFocus",
-
- // Close side panes
- // Ideally, alt-shift-g would only close the git panel and alt-shift-o
- // would only close the outline panel, but this is the best we can get
- // right now.
- "alt-shift-e": "workspace::ToggleLeftDock",
- "alt-shift-g": "workspace::ToggleRightDock",
- "alt-shift-o": "workspace::ToggleRightDock"
- }
- },
-
- {
- "context": "Pane",
- "bindings": {
- // Activate tabs
- "alt-1": ["pane::ActivateItem", 0],
- "alt-2": ["pane::ActivateItem", 1],
- "alt-3": ["pane::ActivateItem", 2],
- "alt-4": ["pane::ActivateItem", 3],
- "alt-5": ["pane::ActivateItem", 4],
- "alt-6": ["pane::ActivateItem", 5],
- "alt-7": ["pane::ActivateItem", 6],
- "alt-8": ["pane::ActivateItem", 7],
- "alt-left": "pane::ActivatePreviousItem",
- "alt-right": "pane::ActivateNextItem",
-
- // Move tabs
- "alt-down": "pane::SwapItemLeft",
- "alt-up": "pane::SwapItemRight",
-
- // Close and reopen tabs
- "ctrl-w": "pane::CloseActiveItem",
- "ctrl-shift-t": "pane::ReopenClosedItem",
-
- // Search settings
- "alt-r": "search::ToggleRegex",
- "alt-c": "search::ToggleCaseSensitive"
- }
- },
-
- // Editor (multi-line or single-line)
- {
- "context": "Editor",
- "bindings": {
- // Navigation
- "up": "editor::MoveUp",
- "down": "editor::MoveDown",
- "left": "editor::MoveLeft",
- "right": "editor::MoveRight",
- "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
- "end": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": true }],
- "pageup": "editor::MovePageUp",
- "pagedown": "editor::MovePageDown",
- "ctrl-up": "editor::LineUp",
- "ctrl-down": "editor::LineDown",
-
- // Selections
- "shift-up": "editor::SelectUp",
- "shift-down": "editor::SelectDown",
- "shift-left": "editor::SelectLeft",
- "shift-right": "editor::SelectRight",
- "shift-home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
- "shift-end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": true }],
- "shift-pageup": "editor::SelectPageUp",
- "shift-pagedown": "editor::SelectPageDown",
- "ctrl-a": "editor::SelectAll",
-
- "tab": "editor::Tab",
- "shift-tab": "editor::Backtab",
- "backspace": "editor::Backspace",
- "shift-backspace": "editor::Backspace",
- "delete": "editor::Delete",
-
- "escape": "editor::Cancel",
- "f2": "editor::Rename",
-
- "ctrl-x": "editor::Cut",
- "ctrl-c": "editor::Copy",
- "ctrl-v": "editor::Paste",
-
- "ctrl-z": "editor::Undo",
- "ctrl-shift-z": "editor::Redo"
- }
- },
-
- // Editor (multi-line)
- {
- "context": "Editor && mode == full",
- "bindings": {
- // Newlines
- "enter": "editor::Newline",
- "shift-enter": "editor::Newline",
- "ctrl-enter": "editor::NewlineBelow",
- "ctrl-shift-enter": "editor::NewlineAbove",
-
- "ctrl-f": "buffer_search::Deploy"
- }
- },
-
- {
- "context": "Editor && renaming",
- "bindings": {
- "enter": "editor::ConfirmRename"
- }
- },
-
- {
- "context": "Editor && showing_completions",
- "bindings": {
- "enter": "editor::ConfirmCompletion"
- }
- },
-
- {
- "context": "Editor && (showing_code_actions || showing_completions)",
- "bindings": {
- "up": "editor::ContextMenuPrevious",
- "down": "editor::ContextMenuNext",
- "pageup": "editor::ContextMenuFirst",
- "pagedown": "editor::ContextMenuLast"
- }
- },
-
- {
- // Currently, "VimControl" is an alias for "vim_mode == normal ||
- // vim_mode == visual || vim_mode == operator", but this could change.
- "context": "VimControl && !menu",
- "bindings": {
- "up": ["vim::Up", { "display_lines": true }],
- "shift-up": "editor::AddSelectionAbove",
- "ctrl-up": "vim::LineUp",
- "ctrl-shift-up": "editor::MoveLineUp",
-
- "down": ["vim::Down", { "display_lines": true }],
- "shift-down": "editor::AddSelectionBelow",
- "ctrl-down": "vim::LineDown",
- "ctrl-shift-down": "editor::MoveLineDown",
-
- "left": "vim::Left",
- "shift-left": null, // TODO
- "ctrl-left": "vim::PreviousWordStart",
- "ctrl-shift-left": "editor::SelectToPreviousWordStart",
-
- "right": "vim::Right",
- "shift-right": null, // TODO
- "ctrl-right": "vim::NextWordStart",
- "ctrl-shift-right": "editor::SelectToNextWordEnd",
-
- "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
- "shift-home": null,
- "ctrl-home": ["vim::StartOfLine", { "display_lines": false }],
- "ctrl-shift-home": null,
-
- "end": ["vim::EndOfLine", { "display_lines": true }],
- "shift-end": null,
- "ctrl-end": ["vim::EndOfLine", { "display_lines": false }],
- "ctrl-shift-end": null,
-
- "pageup": "vim::PageUp",
- "shift-pageup": "vim::MoveToPrevious",
- "ctrl-pageup": "vim::ScrollUp",
- "ctrl-shift-pageup": "vim::StartOfDocument",
-
- "pagedown": "vim::PageDown",
- "shift-pagedown": "vim::MoveToNext",
- "ctrl-pagedown": "vim::ScrollDown",
- "ctrl-shift-pagedown": "vim::EndOfDocument",
-
- "enter": "editor::NewlineBelow",
- "shift-enter": "editor::NewlineAbove",
- "ctrl-enter": null,
- "ctrl-shift-enter": null,
-
- "escape": "vim::SwitchToNormalMode",
- "shift-escape": null,
- "ctrl-escape": null,
- "ctrl-shift-escape": null,
-
- "insert": null,
- "shift-insert": null,
- "ctrl-insert": null,
- "ctrl-shift-insert": null,
-
- "delete": "vim::DeleteRight",
- "shift-delete": null,
- "ctrl-delete": null,
- "ctrl-shift-delete": null,
-
- "space": "vim::WrappingRight",
- "shift-space": null,
- "ctrl-space": null,
- "shift-ctrl-space": null,
-
- "backspace": "vim::WrappingLeft",
- "shift-backspace": null,
- "ctrl-backspace": null,
- "shift-ctrl-backspace": null,
-
- "tab": null,
- "shift-tab": null,
- "ctrl-tab": null,
- "ctrl-shift-tab": null,
-
- "0": ["vim::Number", 0],
- ")": null,
- "ctrl-0": null,
- "ctrl-)": null,
-
- "1": ["vim::Number", 1],
- "!": null,
- "ctrl-1": null,
- "ctrl-!": null,
-
- "2": ["vim::Number", 2],
- "@": "vim::PushReplayRegister",
- "ctrl-2": null,
- "ctrl-@": null,
-
- "3": ["vim::Number", 3],
- "#": null,
- "ctrl-3": null,
- "ctrl-#": null,
-
- "4": ["vim::Number", 4],
- "$": null,
- "ctrl-4": null,
- "ctrl-$": null,
-
- "5": ["vim::Number", 5],
- "%": null,
- "ctrl-5": null,
- "ctrl-%": null,
-
- "6": ["vim::Number", 6],
- "^": null,
- "ctrl-6": null,
- "ctrl-^": null,
-
- "7": ["vim::Number", 7],
- "&": null,
- "ctrl-7": null,
- "ctrl-&": null,
-
- "8": ["vim::Number", 8],
- "*": null,
- "ctrl-8": null,
- "ctrl-*": null,
-
- "9": ["vim::Number", 9],
- "(": null,
- "ctrl-9": null,
- "ctrl-(": null,
-
- "a": ["vim::PushObject", { "around": true }],
- "A": null,
- "ctrl-a": null,
- "ctrl-A": null,
-
- "b": null,
- "B": null,
- "ctrl-b": null,
- "ctrl-B": null,
-
- "c": null,
- "C": null,
- "ctrl-c": null,
- "ctrl-C": null,
-
- "d": null,
- "D": null,
- "ctrl-d": null,
- "ctrl-D": null,
-
- "e": "vim::NextWordEnd",
- "E": "vim::PreviousWordEnd",
- "ctrl-e": "vim::NextSubwordEnd",
- "ctrl-E": "vim::PreviousSubwordEnd",
-
- "f": ["vim::PushFindForward", { "before": false }],
- "F": ["vim::PushFindBackward", { "after": false }],
- "ctrl-f": "vim::RepeatFind",
- "ctrl-F": "vim::RepeatFindReversed",
-
- "g": ["vim::PushFindForward", { "before": true }],
- "G": ["vim::PushFindBackward", { "after": true }],
- "ctrl-g": "vim::RepeatFind",
- "ctrl-G": "vim::RepeatFindReversed",
-
- "h": "editor::Hover",
- "H": null,
- "ctrl-h": null,
- "ctrl-H": null,
-
- "i": ["vim::PushObject", { "around": false }],
- "I": null,
- "ctrl-i": null,
- "ctrl-I": null,
-
- "j": "vim::JoinLines",
- "J": "vim::JoinLinesNoWhitespace",
- "ctrl-j": null,
- "ctrl-J": null,
-
- "k": null,
- "K": null,
- "ctrl-k": null,
- "ctrl-K": null,
-
- "l": null,
- "L": null,
- "ctrl-l": null,
- "ctrl-L": null,
-
- "m": null,
- "M": null,
- "ctrl-m": null,
- "ctrl-M": null,
-
- "n": "vim::MoveToNextMatch",
- "N": "vim::MoveToPreviousMatch",
- "ctrl-n": "workspace::NewWindow",
- "ctrl-N": null,
-
- "o": null,
- "O": null,
- "ctrl-o": null,
- "ctrl-O": null,
-
- "p": null,
- "P": null,
- "ctrl-p": null,
- "ctrl-P": null,
-
- "q": "vim::ToggleRecord",
- "Q": "vim::ReplayLastRecording",
- "ctrl-q": null,
- "ctrl-Q": null,
-
- "r": null,
- "R": null,
- "ctrl-r": null,
- "ctrl-R": null,
-
- "s": null,
- "S": null,
- "ctrl-s": null,
- "ctrl-S": null,
-
- "t": null,
- "T": null,
- "ctrl-t": "workspace::NewFile",
- "ctrl-T": "pane::ReopenClosedItem",
-
- "u": null,
- "U": null,
- "ctrl-u": null,
- "ctrl-U": null,
-
- "v": "vim::ToggleVisual",
- "V": "vim::ToggleVisualLine",
- "ctrl-v": "vim::RestoreVisualSelection",
- "ctrl-V": null,
-
- "w": "vim::NextWordStart",
- "W": "vim::PreviousWordStart",
- "ctrl-w": "vim::NextSubwordStart",
- "ctrl-W": "vim::PreviousSubwordStart",
-
- "x": null,
- "X": null,
- "ctrl-x": null,
- "ctrl-X": null,
-
- "y": null,
- "Y": null,
- "ctrl-y": null,
- "ctrl-Y": null,
-
- "z": null,
- "Z": null,
- "ctrl-z": null,
- "ctrl-Z": null,
-
- "-": null,
- "_": null,
- "ctrl--": null,
- "ctrl-_": null,
-
- "=": null,
- "+": null,
- "ctrl-=": null,
- "ctrl-+": null,
-
- "[": "editor::SelectLargerSyntaxNode",
- "{": null,
- "ctrl-[": null,
- "ctrl-{": null,
-
- "]": "editor::SelectSmallerSyntaxNode",
- "}": null,
- "ctrl-]": null,
- "ctrl-}": null,
-
- "\\": "vim::ToggleComments",
- "|": "vim::GoToColumn",
- "ctrl-\\": null,
- "ctrl-|": null,
-
- ";": null,
- ":": null,
- "ctrl-;": null,
- "ctrl-:": null,
-
- "'": null,
- "\"": null,
- "ctrl-'": null,
- "ctrl-\"": null,
-
- ",": null,
- "<": null,
- "ctrl-,": null,
- "ctrl-<": "vim::Outdent", // For workspace::SendKeystrokes
-
- ".": null,
- ">": null,
- "ctrl-.": null,
- "ctrl->": "vim::Indent", // For workspace::SendKeystrokes
-
- "/": "vim::Search",
- "?": "outline::Toggle",
- "ctrl-/": null,
- "ctrl-?": "project_symbols::Toggle",
-
- "`": null,
- "~": null,
- "ctrl-`": null,
- "ctrl-~": null
-
- //"ctrl-pageup": ["editor::SelectPrevious", { "replace_newest": false }],
- //"ctrl-pagedown": ["editor::SelectNext", { "replace_newest": false }],
- //"ctrl-shift-pageup": ["editor::SelectPrevious", { "replace_newest": true }],
- //"ctrl-shift-pagedown": ["editor::SelectNext", { "replace_newest": true }],
-
- // "": "vim::PushLowercase",
- // "": "vim::PushUppercase",
- // "": "vim::PushOppositeCase",
- // "": "vim::ConvertToLowerCase",
- // "": "vim::ConvertToUpperCase",
- // "": "vim::ChangeCase",
- // "": "vim::Enter",
- // "": "vim::Quotes",
- // "": "vim::Literal",
- // "": "vim::Argument",
- // "": "vim::Exchange",
- // "": "vim::Increment",
- // "": "vim::Decrement",
- // "": "vim::Substitute",
- // "": "editor::SelectAllMatches",
- // TODO: replace mode
- }
- },
-
- {
- "context": "vim_mode == normal",
- "bindings": {
- // TODO: organize
- ":": "command_palette::Toggle",
- ".": "vim::Repeat",
- "escape": "editor::Cancel",
- "+": "vim::Increment",
- "-": "vim::Decrement",
-
- "tab": "vim::Indent",
- "shift-tab": "vim::Outdent",
- "ctrl-tab": null,
- "ctrl-shift-tab": null,
-
- "a": "vim::InsertAfter",
- "A": "vim::InsertEndOfLine",
- "ctrl-a": null,
- "ctrl-A": null,
-
- "c": "vim::PushChange",
- "C": "vim::ChangeToEndOfLine",
- "ctrl-c": null,
- "ctrl-C": null,
-
- "d": "vim::PushDelete",
- "D": "vim::DeleteToEndOfLine",
- "ctrl-d": null,
- "ctrl-D": null,
-
- "i": "vim::InsertBefore",
- "I": "vim::InsertFirstNonWhitespace",
- "ctrl-i": null,
- "ctrl-I": null,
-
- "o": "vim::InsertLineBelow",
- "O": "vim::InsertLineAbove",
- "ctrl-o": null,
- "ctrl-O": null,
-
- "p": ["vim::Paste", { "preserve_clipboard": true, "before": false }],
- "P": ["vim::Paste", { "preserve_clipboard": true, "before": true }],
- "ctrl-p": null,
- "ctrl-P": null,
-
- "r": null,
- "R": null,
- "ctrl-r": "vim::Redo",
- "ctrl-R": null,
-
- "s": "vim::Substitute",
- "S": "vim::SubstituteLine",
- "ctrl-s": null,
- "ctrl-S": null,
-
- "u": "vim::Undo",
- "U": "vim::Redo",
- "ctrl-u": null,
- "ctrl-U": null,
-
- "x": "vim::DeleteRight",
- "X": "editor::DeleteLine",
- "ctrl-x": null,
- "ctrl-X": null,
-
- "y": "vim::PushYank",
- "Y": "vim::YankLine",
- "ctrl-y": null,
- "ctrl-Y": null
- }
- },
-
- {
- "context": "vim_mode == visual",
- "bindings": {
- // TODO: organize
- ":": "vim::VisualCommand",
- "escape": "vim::SwitchToNormalMode",
- "+": "vim::Increment",
- "-": "vim::Decrement",
-
- "home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
-
- "delete": "vim::VisualDelete",
- "shift-delete": null,
- "ctrl-delete": null,
- "ctrl-shift-delete": null,
-
- "tab": ["workspace::SendKeystrokes", "ctrl-> ctrl-v"],
- "shift-tab": ["workspace::SendKeystrokes", "ctrl-< ctrl-v"],
- "ctrl-tab": null,
- "ctrl-shift-tab": null,
-
- "c": "vim::Substitute",
- "C": "vim::SubstituteLine",
- "ctrl-c": null,
- "ctrl-C": null,
-
- "d": "vim::VisualDelete",
- "D": "vim::VisualDeleteLine",
- "ctrl-d": null,
- "ctrl-D": null,
-
- "p": ["vim::Paste", { "preserve_clipboard": true }],
- "P": ["vim::Paste", { "preserve_clipboard": true }],
- "ctrl-p": null,
- "ctrl-P": null,
-
- "s": "vim::Substitute",
- "S": "vim::SubstituteLine",
- "ctrl-s": null,
- "ctrl-S": null,
-
- "x": "vim::VisualDelete",
- "X": "vim::VisualDeleteLine",
- "ctrl-x": null,
- "ctrl-X": null,
-
- "y": "vim::VisualYank",
- "Y": "vim::VisualYankLine",
- "ctrl-y": null,
- "ctrl-Y": null
- }
- },
-
- {
- "context": "vim_mode == insert",
- "bindings": {
- "escape": "vim::NormalBefore",
- "ctrl-c": "editor::Paste",
- "ctrl-space": "editor::ShowCompletions"
- }
- },
-
- // Make escape leave insert mode even if completions are showing.
- {
- "context": "Editor && vim_mode == insert && showing_completions",
- "bindings": {
- "escape": "vim::NormalBefore"
- }
- },
-
- {
- "context": "vim_mode == waiting",
- "bindings": {
- "escape": "vim::ClearOperators"
- }
- },
-
- {
- "context": "vim_mode == operator",
- "bindings": {
- "escape": "vim::ClearOperators"
- }
- },
-
- {
- "context": "vim_operator == a || vim_operator == i",
- "bindings": {
- "w": "vim::Word",
- "'": "vim::Quotes",
- "\"": "vim::DoubleQuotes",
- "`": "vim::BackQuotes",
-
- "(": "vim::Parentheses",
- ")": "vim::Parentheses",
-
- "[": "vim::SquareBrackets",
- "]": "vim::SquareBrackets",
-
- "{": "vim::CurlyBrackets",
- "}": "vim::CurlyBrackets",
-
- "<": "vim::AngleBrackets",
- ">": "vim::AngleBrackets"
- }
- },
-
- {
- "context": "vim_operator == c",
- "bindings": {
- "c": "vim::CurrentLine"
- }
- },
-
- {
- "context": "vim_operator == d",
- "bindings": {
- "d": "vim::CurrentLine"
- }
- },
-
- {
- "context": "vim_operator == y",
- "bindings": {
- "y": "vim::CurrentLine"
- }
- },
-
- {
- "context": "BufferSearchBar",
- "bindings": {
- "enter": "vim::SearchSubmit",
- "escape": "buffer_search::Dismiss"
- }
- },
-
- //"": "vim::Word",
- //"": "vim::Subword",
- //"": "vim::OtherEnd",
- //"": "vim::StartOfLine",
- //"": "vim::EndOfLine",
- //"": "vim::CurrentLine",
- //"": "vim::Quotes",
- //"": "vim::DoubleQuotes",
- //"": "vim::BackQuotes",
- //"": "vim::AnyQuotes",
- //"": "vim::Parentheses",
- //"": "vim::SquareBrackets",
- //"": "vim::CurlyBrackets",
- //"": "vim::AngleBrackets",
- // TODO: Establish "logical" editing language. E.g., instead of `D` to delete
- // to end of line (which is a sort of special case of `d`), use `d l` instead,
- // where `l` is the EndOfLine object (as below).
-
- {
- "context": "Terminal",
- "bindings": {
- "ctrl-shift-c": "terminal::Copy",
- "ctrl-shift-v": "terminal::Paste",
-
- "ctrl-shift-up": "terminal::ScrollLineUp",
- "ctrl-shift-down": "terminal::ScrollLineDown",
-
- "ctrl-shift-pageup": "terminal::ScrollPageUp",
- "ctrl-shift-pagedown": "terminal::ScrollPageDown",
-
- "ctrl-shift-home": "terminal::ScrollToTop",
- "ctrl-shift-end": "terminal::ScrollToBottom"
- }
- }
+ // Zed application
+ {
+ // No "context" field means always active.
+ "bindings": {
+ // Confirm/cancel
+ "enter": "menu::Confirm",
+ "escape": "menu::Cancel",
+
+ // Buffer font size
+ "ctrl-alt-pageup": ["zed::IncreaseBufferFontSize", { "persist": false }],
+ "ctrl-alt-pagedown": ["zed::DecreaseBufferFontSize", { "persist": false }],
+ "ctrl-alt-home": ["zed::ResetBufferFontSize", { "persist": false }],
+
+ // UI font size
+ "ctrl-alt-shift-pageup": ["zed::IncreaseUiFontSize", { "persist": false }],
+ "ctrl-alt-shift-pagedown": ["zed::DecreaseUiFontSize", { "persist": false }],
+ "ctrl-alt-shift-home": ["zed::ResetUiFontSize", { "persist": false }],
+
+ // Keymap configuration
+ "f9": "zed::OpenKeymap",
+ "shift-f9": "zed::OpenDefaultKeymap",
+ "ctrl-f9": "vim::OpenDefaultKeymap",
+ "ctrl-shift-f9": "dev::OpenKeyContextView",
+
+ // Settings configuration
+ "f10": "zed::OpenSettings",
+ "shift-f10": "zed::OpenDefaultSettings",
+ "ctrl-f10": "zed::OpenProjectSettings",
+
+ // Fullscreen
+ "f11": "zed::ToggleFullScreen"
+ }
+ },
+
+ // Menus
+ {
+ "context": "Picker || menu",
+ "bindings": {
+ // Navigation
+ "up": "menu::SelectPrevious",
+ "down": "menu::SelectNext",
+ "home": "menu::SelectFirst",
+ "end": "menu::SelectLast",
+ "pageup": "menu::SelectFirst",
+ "pagedown": "menu::SelectLast",
+ "tab": "menu::SelectNext",
+ "shift-tab": "menu::SelectPrevious"
+ }
+ },
+
+ {
+ "context": "Workspace",
+ "bindings": {
+ "alt-space": "command_palette::Toggle",
+ "alt-`": "workspace::ToggleZoom",
+
+ // Open new things
+ "ctrl-t": "workspace::NewFile",
+ "ctrl-n": "workspace::NewWindow",
+ "alt-t": "workspace::NewCenterTerminal",
+ "alt-f": "workspace::NewSearch",
+ "alt-p": "file_finder::Toggle",
+
+ // Activate panes
+ "ctrl-alt-up": "workspace::ActivatePaneUp",
+ "ctrl-alt-down": "workspace::ActivatePaneDown",
+ "ctrl-alt-left": "workspace::ActivatePaneLeft",
+ "ctrl-alt-right": "workspace::ActivatePaneRight",
+
+ // Move panes
+ "ctrl-alt-shift-up": "workspace::SwapPaneUp",
+ "ctrl-alt-shift-down": "workspace::SwapPaneDown",
+ "ctrl-alt-shift-left": "workspace::SwapPaneLeft",
+ "ctrl-alt-shift-right": "workspace::SwapPaneRight",
+
+ // Open/focus side panes
+ "alt-e": "project_panel::ToggleFocus",
+ "alt-g": "git_panel::ToggleFocus",
+ "alt-o": "outline_panel::ToggleFocus",
+
+ // Close side panes
+ // Ideally, alt-shift-g would only close the git panel and alt-shift-o
+ // would only close the outline panel, but this is the best we can get
+ // right now.
+ "alt-shift-e": "workspace::ToggleLeftDock",
+ "alt-shift-g": "workspace::ToggleRightDock",
+ "alt-shift-o": "workspace::ToggleRightDock"
+ }
+ },
+
+ {
+ "context": "Pane",
+ "bindings": {
+ // Activate tabs
+ "alt-1": ["pane::ActivateItem", 0],
+ "alt-2": ["pane::ActivateItem", 1],
+ "alt-3": ["pane::ActivateItem", 2],
+ "alt-4": ["pane::ActivateItem", 3],
+ "alt-5": ["pane::ActivateItem", 4],
+ "alt-6": ["pane::ActivateItem", 5],
+ "alt-7": ["pane::ActivateItem", 6],
+ "alt-8": ["pane::ActivateItem", 7],
+ "alt-left": "pane::ActivatePreviousItem",
+ "alt-right": "pane::ActivateNextItem",
+
+ // Move tabs
+ "alt-down": "pane::SwapItemLeft",
+ "alt-up": "pane::SwapItemRight",
+
+ // Close and reopen tabs
+ "ctrl-w": "pane::CloseActiveItem",
+ "ctrl-shift-t": "pane::ReopenClosedItem",
+
+ // Search settings
+ "alt-r": "search::ToggleRegex",
+ "alt-c": "search::ToggleCaseSensitive"
+ }
+ },
+
+ // Editor (multi-line or single-line)
+ {
+ "context": "Editor",
+ "bindings": {
+ // Navigation
+ "up": "editor::MoveUp",
+ "down": "editor::MoveDown",
+ "left": "editor::MoveLeft",
+ "right": "editor::MoveRight",
+ "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
+ "end": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": true }],
+ "pageup": "editor::MovePageUp",
+ "pagedown": "editor::MovePageDown",
+ "ctrl-up": "editor::LineUp",
+ "ctrl-down": "editor::LineDown",
+
+ // Selections
+ "shift-up": "editor::SelectUp",
+ "shift-down": "editor::SelectDown",
+ "shift-left": "editor::SelectLeft",
+ "shift-right": "editor::SelectRight",
+ "shift-home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
+ "shift-end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": true }],
+ "shift-pageup": "editor::SelectPageUp",
+ "shift-pagedown": "editor::SelectPageDown",
+ "ctrl-a": "editor::SelectAll",
+
+ "tab": "editor::Tab",
+ "shift-tab": "editor::Backtab",
+ "backspace": "editor::Backspace",
+ "shift-backspace": "editor::Backspace",
+ "delete": "editor::Delete",
+
+ "escape": "editor::Cancel",
+ "f2": "editor::Rename",
+
+ "ctrl-x": "editor::Cut",
+ "ctrl-c": "editor::Copy",
+ "ctrl-v": "editor::Paste",
+
+ "ctrl-z": "editor::Undo",
+ "ctrl-shift-z": "editor::Redo"
+ }
+ },
+
+ // Editor (multi-line)
+ {
+ "context": "Editor && mode == full",
+ "bindings": {
+ // Newlines
+ "enter": "editor::Newline",
+ "shift-enter": "editor::Newline",
+ "ctrl-enter": "editor::NewlineBelow",
+ "ctrl-shift-enter": "editor::NewlineAbove",
+
+ "ctrl-f": "buffer_search::Deploy"
+ }
+ },
+
+ {
+ "context": "Editor && renaming",
+ "bindings": {
+ "enter": "editor::ConfirmRename"
+ }
+ },
+
+ {
+ "context": "Editor && showing_completions",
+ "bindings": {
+ "enter": "editor::ConfirmCompletion"
+ }
+ },
+
+ {
+ "context": "Editor && (showing_code_actions || showing_completions)",
+ "bindings": {
+ "up": "editor::ContextMenuPrevious",
+ "down": "editor::ContextMenuNext",
+ "pageup": "editor::ContextMenuFirst",
+ "pagedown": "editor::ContextMenuLast"
+ }
+ },
+
+ {
+ // Currently, "VimControl" is an alias for "vim_mode == normal ||
+ // vim_mode == visual || vim_mode == operator", but this could change.
+ "context": "VimControl && !menu",
+ "bindings": {
+ "up": ["vim::Up", { "display_lines": true }],
+ "shift-up": "editor::AddSelectionAbove",
+ "ctrl-up": "vim::LineUp",
+ "ctrl-shift-up": "editor::MoveLineUp",
+
+ "down": ["vim::Down", { "display_lines": true }],
+ "shift-down": "editor::AddSelectionBelow",
+ "ctrl-down": "vim::LineDown",
+ "ctrl-shift-down": "editor::MoveLineDown",
+
+ "left": "vim::Left",
+ "shift-left": null, // TODO
+ "ctrl-left": "vim::PreviousWordStart",
+ "ctrl-shift-left": "editor::SelectToPreviousWordStart",
+
+ "right": "vim::Right",
+ "shift-right": null, // TODO
+ "ctrl-right": "vim::NextWordStart",
+ "ctrl-shift-right": "editor::SelectToNextWordEnd",
+
+ "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
+ "shift-home": null,
+ "ctrl-home": ["vim::StartOfLine", { "display_lines": false }],
+ "ctrl-shift-home": null,
+
+ "end": ["vim::EndOfLine", { "display_lines": true }],
+ "shift-end": null,
+ "ctrl-end": ["vim::EndOfLine", { "display_lines": false }],
+ "ctrl-shift-end": null,
+
+ "pageup": "vim::PageUp",
+ "shift-pageup": "vim::MoveToPrevious",
+ "ctrl-pageup": "vim::ScrollUp",
+ "ctrl-shift-pageup": "vim::StartOfDocument",
+
+ "pagedown": "vim::PageDown",
+ "shift-pagedown": "vim::MoveToNext",
+ "ctrl-pagedown": "vim::ScrollDown",
+ "ctrl-shift-pagedown": "vim::EndOfDocument",
+
+ "enter": "editor::NewlineBelow",
+ "shift-enter": "editor::NewlineAbove",
+ "ctrl-enter": null,
+ "ctrl-shift-enter": null,
+
+ "escape": "vim::SwitchToNormalMode",
+ "shift-escape": null,
+ "ctrl-escape": null,
+ "ctrl-shift-escape": null,
+
+ "insert": null,
+ "shift-insert": null,
+ "ctrl-insert": null,
+ "ctrl-shift-insert": null,
+
+ "delete": "vim::DeleteRight",
+ "shift-delete": null,
+ "ctrl-delete": null,
+ "ctrl-shift-delete": null,
+
+ "space": "vim::WrappingRight",
+ "shift-space": null,
+ "ctrl-space": null,
+ "shift-ctrl-space": null,
+
+ "backspace": "vim::WrappingLeft",
+ "shift-backspace": null,
+ "ctrl-backspace": null,
+ "shift-ctrl-backspace": null,
+
+ "tab": null,
+ "shift-tab": null,
+ "ctrl-tab": null,
+ "ctrl-shift-tab": null,
+
+ "0": ["vim::Number", 0],
+ ")": null,
+ "ctrl-0": null,
+ "ctrl-)": null,
+
+ "1": ["vim::Number", 1],
+ "!": null,
+ "ctrl-1": null,
+ "ctrl-!": null,
+
+ "2": ["vim::Number", 2],
+ "@": "vim::PushReplayRegister",
+ "ctrl-2": null,
+ "ctrl-@": null,
+
+ "3": ["vim::Number", 3],
+ "#": null,
+ "ctrl-3": null,
+ "ctrl-#": null,
+
+ "4": ["vim::Number", 4],
+ "$": null,
+ "ctrl-4": null,
+ "ctrl-$": null,
+
+ "5": ["vim::Number", 5],
+ "%": null,
+ "ctrl-5": null,
+ "ctrl-%": null,
+
+ "6": ["vim::Number", 6],
+ "^": null,
+ "ctrl-6": null,
+ "ctrl-^": null,
+
+ "7": ["vim::Number", 7],
+ "&": null,
+ "ctrl-7": null,
+ "ctrl-&": null,
+
+ "8": ["vim::Number", 8],
+ "*": null,
+ "ctrl-8": null,
+ "ctrl-*": null,
+
+ "9": ["vim::Number", 9],
+ "(": null,
+ "ctrl-9": null,
+ "ctrl-(": null,
+
+ "a": ["vim::PushObject", { "around": true }],
+ "A": null,
+ "ctrl-a": null,
+ "ctrl-A": null,
+
+ "b": null,
+ "B": null,
+ "ctrl-b": null,
+ "ctrl-B": null,
+
+ "c": null,
+ "C": null,
+ "ctrl-c": null,
+ "ctrl-C": null,
+
+ "d": null,
+ "D": null,
+ "ctrl-d": null,
+ "ctrl-D": null,
+
+ "e": "vim::NextWordEnd",
+ "E": "vim::PreviousWordEnd",
+ "ctrl-e": "vim::NextSubwordEnd",
+ "ctrl-E": "vim::PreviousSubwordEnd",
+
+ "f": ["vim::PushFindForward", { "before": false, "multiline": false }],
+ "F": ["vim::PushFindBackward", { "after": false, "multiline": false }],
+ "ctrl-f": "vim::RepeatFind",
+ "ctrl-F": "vim::RepeatFindReversed",
+
+ "g": ["vim::PushFindForward", { "before": true, "multiline": false }],
+ "G": ["vim::PushFindBackward", { "after": true, "multiline": false }],
+ "ctrl-g": "vim::RepeatFind",
+ "ctrl-G": "vim::RepeatFindReversed",
+
+ "h": "editor::Hover",
+ "H": null,
+ "ctrl-h": null,
+ "ctrl-H": null,
+
+ "i": ["vim::PushObject", { "around": false }],
+ "I": null,
+ "ctrl-i": null,
+ "ctrl-I": null,
+
+ "j": "vim::JoinLines",
+ "J": "vim::JoinLinesNoWhitespace",
+ "ctrl-j": null,
+ "ctrl-J": null,
+
+ "k": null,
+ "K": null,
+ "ctrl-k": null,
+ "ctrl-K": null,
+
+ "l": null,
+ "L": null,
+ "ctrl-l": null,
+ "ctrl-L": null,
+
+ "m": null,
+ "M": null,
+ "ctrl-m": null,
+ "ctrl-M": null,
+
+ "n": "vim::MoveToNextMatch",
+ "N": "vim::MoveToPreviousMatch",
+ "ctrl-n": "workspace::NewWindow",
+ "ctrl-N": null,
+
+ "o": null,
+ "O": null,
+ "ctrl-o": null,
+ "ctrl-O": null,
+
+ "p": null,
+ "P": null,
+ "ctrl-p": null,
+ "ctrl-P": null,
+
+ "q": "vim::ToggleRecord",
+ "Q": "vim::ReplayLastRecording",
+ "ctrl-q": null,
+ "ctrl-Q": null,
+
+ "r": null,
+ "R": null,
+ "ctrl-r": null,
+ "ctrl-R": null,
+
+ "s": null,
+ "S": null,
+ "ctrl-s": null,
+ "ctrl-S": null,
+
+ "t": null,
+ "T": null,
+ "ctrl-t": "workspace::NewFile",
+ "ctrl-T": "pane::ReopenClosedItem",
+
+ "u": null,
+ "U": null,
+ "ctrl-u": null,
+ "ctrl-U": null,
+
+ "v": "vim::ToggleVisual",
+ "V": "vim::ToggleVisualLine",
+ "ctrl-v": "vim::RestoreVisualSelection",
+ "ctrl-V": null,
+
+ "w": "vim::NextWordStart",
+ "W": "vim::PreviousWordStart",
+ "ctrl-w": "vim::NextSubwordStart",
+ "ctrl-W": "vim::PreviousSubwordStart",
+
+ "x": null,
+ "X": null,
+ "ctrl-x": null,
+ "ctrl-X": null,
+
+ "y": null,
+ "Y": null,
+ "ctrl-y": null,
+ "ctrl-Y": null,
+
+ "z": null,
+ "Z": null,
+ "ctrl-z": null,
+ "ctrl-Z": null,
+
+ "-": null,
+ "_": null,
+ "ctrl--": null,
+ "ctrl-_": null,
+
+ "=": null,
+ "+": null,
+ "ctrl-=": null,
+ "ctrl-+": null,
+
+ "[": "editor::SelectLargerSyntaxNode",
+ "{": null,
+ "ctrl-[": null,
+ "ctrl-{": null,
+
+ "]": "editor::SelectSmallerSyntaxNode",
+ "}": null,
+ "ctrl-]": null,
+ "ctrl-}": null,
+
+ "\\": "vim::ToggleComments",
+ "|": "vim::GoToColumn",
+ "ctrl-\\": null,
+ "ctrl-|": null,
+
+ ";": null,
+ ":": null,
+ "ctrl-;": null,
+ "ctrl-:": null,
+
+ "'": null,
+ "\"": null,
+ "ctrl-'": null,
+ "ctrl-\"": null,
+
+ ",": null,
+ "<": null,
+ "ctrl-,": null,
+ "ctrl-<": "vim::Outdent", // For workspace::SendKeystrokes
+
+ ".": null,
+ ">": null,
+ "ctrl-.": null,
+ "ctrl->": "vim::Indent", // For workspace::SendKeystrokes
+
+ "/": "vim::Search",
+ "?": "outline::Toggle",
+ "ctrl-/": null,
+ "ctrl-?": "project_symbols::Toggle",
+
+ "`": null,
+ "~": null,
+ "ctrl-`": null,
+ "ctrl-~": null
+
+ //"ctrl-pageup": ["editor::SelectPrevious", { "replace_newest": false }],
+ //"ctrl-pagedown": ["editor::SelectNext", { "replace_newest": false }],
+ //"ctrl-shift-pageup": ["editor::SelectPrevious", { "replace_newest": true }],
+ //"ctrl-shift-pagedown": ["editor::SelectNext", { "replace_newest": true }],
+
+ // "": "vim::PushLowercase",
+ // "": "vim::PushUppercase",
+ // "": "vim::PushOppositeCase",
+ // "": "vim::ConvertToLowerCase",
+ // "": "vim::ConvertToUpperCase",
+ // "": "vim::ChangeCase",
+ // "": "vim::Enter",
+ // "": "vim::Quotes",
+ // "": "vim::Literal",
+ // "": "vim::Argument",
+ // "": "vim::Exchange",
+ // "": "vim::Increment",
+ // "": "vim::Decrement",
+ // "": "vim::Substitute",
+ // "": "editor::SelectAllMatches",
+ // TODO: replace mode
+ }
+ },
+
+ {
+ "context": "vim_mode == normal",
+ "bindings": {
+ // TODO: organize
+ ":": "command_palette::Toggle",
+ ".": "vim::Repeat",
+ "escape": "editor::Cancel",
+ "+": "vim::Increment",
+ "-": "vim::Decrement",
+
+ "tab": "vim::Indent",
+ "shift-tab": "vim::Outdent",
+ "ctrl-tab": null,
+ "ctrl-shift-tab": null,
+
+ "a": "vim::InsertAfter",
+ "A": "vim::InsertEndOfLine",
+ "ctrl-a": null,
+ "ctrl-A": null,
+
+ "c": "vim::PushChange",
+ "C": "vim::ChangeToEndOfLine",
+ "ctrl-c": null,
+ "ctrl-C": null,
+
+ "d": "vim::PushDelete",
+ "D": "vim::DeleteToEndOfLine",
+ "ctrl-d": null,
+ "ctrl-D": null,
+
+ "i": "vim::InsertBefore",
+ "I": "vim::InsertFirstNonWhitespace",
+ "ctrl-i": null,
+ "ctrl-I": null,
+
+ "o": "vim::InsertLineBelow",
+ "O": "vim::InsertLineAbove",
+ "ctrl-o": null,
+ "ctrl-O": null,
+
+ "p": ["vim::Paste", { "preserve_clipboard": true, "before": false }],
+ "P": ["vim::Paste", { "preserve_clipboard": true, "before": true }],
+ "ctrl-p": null,
+ "ctrl-P": null,
+
+ "r": null,
+ "R": null,
+ "ctrl-r": "vim::Redo",
+ "ctrl-R": null,
+
+ "s": "vim::Substitute",
+ "S": "vim::SubstituteLine",
+ "ctrl-s": null,
+ "ctrl-S": null,
+
+ "u": "vim::Undo",
+ "U": "vim::Redo",
+ "ctrl-u": null,
+ "ctrl-U": null,
+
+ "x": "vim::DeleteRight",
+ "X": "editor::DeleteLine",
+ "ctrl-x": null,
+ "ctrl-X": null,
+
+ "y": "vim::PushYank",
+ "Y": "vim::YankLine",
+ "ctrl-y": null,
+ "ctrl-Y": null
+ }
+ },
+
+ {
+ "context": "vim_mode == visual",
+ "bindings": {
+ // TODO: organize
+ ":": "vim::VisualCommand",
+ "escape": "vim::SwitchToNormalMode",
+ "+": "vim::Increment",
+ "-": "vim::Decrement",
+
+ "home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
+
+ "delete": "vim::VisualDelete",
+ "shift-delete": null,
+ "ctrl-delete": null,
+ "ctrl-shift-delete": null,
+
+ "tab": ["workspace::SendKeystrokes", "ctrl-> ctrl-v"],
+ "shift-tab": ["workspace::SendKeystrokes", "ctrl-< ctrl-v"],
+ "ctrl-tab": null,
+ "ctrl-shift-tab": null,
+
+ "c": "vim::Substitute",
+ "C": "vim::SubstituteLine",
+ "ctrl-c": null,
+ "ctrl-C": null,
+
+ "d": "vim::VisualDelete",
+ "D": "vim::VisualDeleteLine",
+ "ctrl-d": null,
+ "ctrl-D": null,
+
+ "p": ["vim::Paste", { "preserve_clipboard": true }],
+ "P": ["vim::Paste", { "preserve_clipboard": true }],
+ "ctrl-p": null,
+ "ctrl-P": null,
+
+ "s": "vim::Substitute",
+ "S": "vim::SubstituteLine",
+ "ctrl-s": null,
+ "ctrl-S": null,
+
+ "x": "vim::VisualDelete",
+ "X": "vim::VisualDeleteLine",
+ "ctrl-x": null,
+ "ctrl-X": null,
+
+ "y": "vim::VisualYank",
+ "Y": "vim::VisualYankLine",
+ "ctrl-y": null,
+ "ctrl-Y": null
+ }
+ },
+
+ {
+ "context": "vim_mode == insert",
+ "bindings": {
+ "escape": "vim::NormalBefore",
+ "ctrl-c": "editor::Paste",
+ "ctrl-space": "editor::ShowCompletions"
+ }
+ },
+
+ // Make escape leave insert mode even if completions are showing.
+ {
+ "context": "Editor && vim_mode == insert && showing_completions",
+ "bindings": {
+ "escape": "vim::NormalBefore"
+ }
+ },
+
+ {
+ "context": "vim_mode == waiting",
+ "bindings": {
+ "escape": "vim::ClearOperators"
+ }
+ },
+
+ {
+ "context": "vim_mode == operator",
+ "bindings": {
+ "escape": "vim::ClearOperators"
+ }
+ },
+
+ {
+ "context": "vim_operator == a || vim_operator == i",
+ "bindings": {
+ "w": "vim::Word",
+ "'": "vim::Quotes",
+ "\"": "vim::DoubleQuotes",
+ "`": "vim::BackQuotes",
+
+ "(": "vim::Parentheses",
+ ")": "vim::Parentheses",
+
+ "[": "vim::SquareBrackets",
+ "]": "vim::SquareBrackets",
+
+ "{": "vim::CurlyBrackets",
+ "}": "vim::CurlyBrackets",
+
+ "<": "vim::AngleBrackets",
+ ">": "vim::AngleBrackets"
+ }
+ },
+
+ {
+ "context": "vim_operator == c",
+ "bindings": {
+ "c": "vim::CurrentLine"
+ }
+ },
+
+ {
+ "context": "vim_operator == d",
+ "bindings": {
+ "d": "vim::CurrentLine"
+ }
+ },
+
+ {
+ "context": "vim_operator == y",
+ "bindings": {
+ "y": "vim::CurrentLine"
+ }
+ },
+
+ {
+ "context": "BufferSearchBar",
+ "bindings": {
+ "enter": "vim::SearchSubmit",
+ "escape": "buffer_search::Dismiss"
+ }
+ },
+
+ //"": "vim::Word",
+ //"": "vim::Subword",
+ //"": "vim::OtherEnd",
+ //"": "vim::StartOfLine",
+ //"": "vim::EndOfLine",
+ //"": "vim::CurrentLine",
+ //"": "vim::Quotes",
+ //"": "vim::DoubleQuotes",
+ //"": "vim::BackQuotes",
+ //"": "vim::AnyQuotes",
+ //"": "vim::Parentheses",
+ //"": "vim::SquareBrackets",
+ //"": "vim::CurlyBrackets",
+ //"": "vim::AngleBrackets",
+ // TODO: Establish "logical" editing language. E.g., instead of `D` to delete
+ // to end of line (which is a sort of special case of `d`), use `d l` instead,
+ // where `l` is the EndOfLine object (as below).
+
+ {
+ "context": "Terminal",
+ "bindings": {
+ "ctrl-shift-c": "terminal::Copy",
+ "ctrl-shift-v": "terminal::Paste",
+
+ "ctrl-shift-up": "terminal::ScrollLineUp",
+ "ctrl-shift-down": "terminal::ScrollLineDown",
+
+ "ctrl-shift-pageup": "terminal::ScrollPageUp",
+ "ctrl-shift-pagedown": "terminal::ScrollPageDown",
+
+ "ctrl-shift-home": "terminal::ScrollToTop",
+ "ctrl-shift-end": "terminal::ScrollToBottom"
+ }
+ }
]
diff --git a/zed/settings.json b/zed/settings.json
@@ -68,10 +68,7 @@
},
// Disable some crap
- "assistant": {
- "version": "1", // I don't know what this is. The settings linter says it's necessary.
- "button": false
- },
+ "disable_ai": true,
"features": { "edit_prediction_provider": "none" },
"collaboration_panel": { "button": false },
"tab_bar": {