dotfiles

dot files
git clone git://git.rr3.xyz/dotfiles
Log | Files | Refs

commit eb4a65111c9dfc5462da545e356cb6ef07cd1ae4
parent 776e0342d7e453dcade36832e2454d044ea44f7f
Author: Robert Russell <robert@rr3.xyz>
Date:   Tue, 14 Oct 2025 22:58:21 -0700

Update zed

Diffstat:
Mzed/keymap.json | 1564++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mzed/settings.json | 5+----
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": {