From 5b271b01ad43a18bf2bd2c59308d7bf8ef53dbca Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Mon, 8 Jul 2024 12:05:29 -0700 Subject: [PATCH] Separate out macOS and Linux keymaps (#13792) Release Notes: - Added Linux-Specific keymaps for JetBrains, Atom and Sublime Text - Improved MacOS-specific keymaps for JetBrains and Atom - Improved Linux default keymap (VSCode compatibility) - Windows now uses same keymap as Linux --------- Co-authored-by: Peter Tripp --- assets/keymaps/default-linux.json | 88 +++++++++++++----- assets/keymaps/default-macos.json | 14 +++ assets/keymaps/linux/atom.json | 93 ++++++++++++++++++++ assets/keymaps/linux/jetbrains.json | 90 +++++++++++++++++++ assets/keymaps/linux/sublime_text.json | 53 +++++++++++ assets/keymaps/{ => macos}/atom.json | 44 ++++----- assets/keymaps/{ => macos}/jetbrains.json | 2 +- assets/keymaps/{ => macos}/sublime_text.json | 6 +- assets/keymaps/{ => macos}/textmate.json | 0 crates/welcome/src/base_keymap_setting.rs | 28 +++++- 10 files changed, 368 insertions(+), 50 deletions(-) create mode 100644 assets/keymaps/linux/atom.json create mode 100644 assets/keymaps/linux/jetbrains.json create mode 100644 assets/keymaps/linux/sublime_text.json rename assets/keymaps/{ => macos}/atom.json (71%) rename assets/keymaps/{ => macos}/jetbrains.json (98%) rename assets/keymaps/{ => macos}/sublime_text.json (89%) rename assets/keymaps/{ => macos}/textmate.json (100%) diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index bf64bcc88a5e91f7fc497eae17acdeda68778543..3bd4d27daf719d8c97ce840e0bcc4356169833f3 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -16,8 +16,18 @@ "ctrl-escape": "menu::Cancel", "ctrl-c": "menu::Cancel", "shift-enter": "picker::UseSelectedQuery", - "alt-enter": ["picker::ConfirmInput", { "secondary": false }], - "ctrl-alt-enter": ["picker::ConfirmInput", { "secondary": true }], + "alt-enter": [ + "picker::ConfirmInput", + { + "secondary": false + } + ], + "ctrl-alt-enter": [ + "picker::ConfirmInput", + { + "secondary": true + } + ], "ctrl-shift-w": "workspace::CloseWindow", "shift-escape": "workspace::ToggleZoom", "ctrl-o": "workspace::Open", @@ -148,12 +158,7 @@ "replace_enabled": true } ], - // "cmd-e": [ - // "buffer_search::Deploy", - // { - // "focus": false - // } - // ], + // "cmd-e": ["buffer_search::Deploy", { "focus": false }], "ctrl->": "assistant::QuoteSelection", "ctrl-<": "assistant::InsertIntoEditor", "ctrl-alt-e": "editor::SelectEnclosingSymbol" @@ -268,6 +273,7 @@ "ctrl-pageup": "pane::ActivatePrevItem", "ctrl-pagedown": "pane::ActivateNextItem", "ctrl-w": "pane::CloseActiveItem", + "ctrl-f4": "pane::CloseActiveItem", "alt-ctrl-t": "pane::CloseInactiveItems", "alt-ctrl-shift-w": "workspace::CloseInactiveTabsAndPanes", "ctrl-k u": "pane::CloseCleanItems", @@ -349,16 +355,23 @@ "f2": "editor::Rename", "f12": "editor::GoToDefinition", "alt-f12": "editor::GoToDefinitionSplit", + "ctrl-shift-f10": "editor::GoToDefinitionSplit", "ctrl-f12": "editor::GoToTypeDefinition", "shift-f12": "editor::GoToImplementation", "alt-ctrl-f12": "editor::GoToTypeDefinitionSplit", "alt-shift-f12": "editor::FindAllReferences", "ctrl-m": "editor::MoveToEnclosingBracket", + "ctrl-shift-\\": "editor::MoveToEnclosingBracket", "ctrl-shift-[": "editor::Fold", "ctrl-shift-]": "editor::UnfoldLines", "ctrl-space": "editor::ShowCompletions", "ctrl-.": "editor::ToggleCodeActions", "alt-ctrl-r": "editor::RevealInFinder", + "ctrl-k r": "editor::RevealInFinder", + "ctrl-k p": "editor::CopyPath", + "ctrl-\\": "pane::SplitRight", + "ctrl-k v": "markdown::OpenPreviewToTheSide", + "ctrl-shift-v": "markdown::OpenPreview", "ctrl-alt-shift-c": "editor::DisplayCursorNames" } }, @@ -385,6 +398,8 @@ "ctrl-alt--": "pane::GoBack", "ctrl-alt-_": "pane::GoForward", "ctrl-shift-t": "pane::ReopenClosedItem", + "f3": "search::SelectNextMatch", + "shift-f3": "search::SelectPrevMatch", "ctrl-shift-f": "project_search::ToggleFocus" } }, @@ -392,12 +407,7 @@ "context": "Workspace", "bindings": { // Change the default action on `menu::Confirm` by setting the parameter - // "alt-cmd-o": [ - // "projects::OpenRecent", - // { - // "create_new_window": true - // } - // ] + // "alt-ctrl-o": ["projects::OpenRecent", { "create_new_window": true }], "alt-ctrl-o": "projects::OpenRecent", "alt-ctrl-shift-b": "branches::OpenRecent", "ctrl-~": "workspace::NewTerminal", @@ -432,9 +442,15 @@ "ctrl-shift-t": "project_symbols::Toggle", "ctrl-p": "file_finder::Toggle", "ctrl-tab": "tab_switcher::Toggle", - "ctrl-shift-tab": ["tab_switcher::Toggle", { "select_last": true }], + "ctrl-shift-tab": [ + "tab_switcher::Toggle", + { + "select_last": true + } + ], "ctrl-e": "file_finder::Toggle", "ctrl-shift-p": "command_palette::Toggle", + "f1": "command_palette::Toggle", "ctrl-shift-m": "diagnostics::Deploy", "ctrl-shift-e": "project_panel::ToggleFocus", "ctrl-shift-b": "outline_panel::ToggleFocus", @@ -450,6 +466,7 @@ "ctrl-k shift-right": ["workspace::SwapPaneInDirection", "Right"], "ctrl-k shift-up": ["workspace::SwapPaneInDirection", "Up"], "ctrl-k shift-down": ["workspace::SwapPaneInDirection", "Down"], + "ctrl-shift-x": "zed::Extensions", "alt-t": "task::Rerun", "alt-shift-t": "task::Spawn" } @@ -466,7 +483,7 @@ "ctrl-alt-delete": "editor::DeleteToNextSubwordEnd", "ctrl-alt-d": "editor::DeleteToNextSubwordEnd", "ctrl-alt-left": "editor::MoveToPreviousSubwordStart", - "ctrl-alt-b": "editor::MoveToPreviousSubwordStart", + // "ctrl-alt-b": "editor::MoveToPreviousSubwordStart", "ctrl-alt-right": "editor::MoveToNextSubwordEnd", "ctrl-alt-f": "editor::MoveToNextSubwordEnd", "ctrl-alt-shift-left": "editor::SelectToPreviousSubwordStart", @@ -591,11 +608,36 @@ "alt-ctrl-shift-c": "project_panel::CopyRelativePath", "f2": "project_panel::Rename", "enter": "project_panel::Rename", - "backspace": ["project_panel::Trash", { "skip_prompt": false }], - "shift-delete": ["project_panel::Delete", { "skip_prompt": false }], - "delete": ["project_panel::Trash", { "skip_prompt": false }], - "ctrl-backspace": ["project_panel::Delete", { "skip_prompt": false }], - "ctrl-delete": ["project_panel::Delete", { "skip_prompt": false }], + "backspace": [ + "project_panel::Trash", + { + "skip_prompt": false + } + ], + "shift-delete": [ + "project_panel::Delete", + { + "skip_prompt": false + } + ], + "delete": [ + "project_panel::Trash", + { + "skip_prompt": false + } + ], + "ctrl-backspace": [ + "project_panel::Delete", + { + "skip_prompt": false + } + ], + "ctrl-delete": [ + "project_panel::Delete", + { + "skip_prompt": false + } + ], "alt-ctrl-r": "project_panel::RevealInFinder", "alt-shift-f": "project_panel::NewSearchInDirectory", "shift-down": "menu::SelectNext", @@ -636,7 +678,9 @@ }, { "context": "FileFinder", - "bindings": { "ctrl-shift-p": "file_finder::SelectPrev" } + "bindings": { + "ctrl-shift-p": "file_finder::SelectPrev" + } }, { "context": "TabSwitcher", diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index ce249b89653be919ef7cf451f7ffc84d20f1621c..b94b9d920ef5525a5f0a931b9e7543ab3ab1674f 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -285,6 +285,7 @@ "context": "ProjectSearchBar", "bindings": { "escape": "project_search::ToggleFocus", + "cmd-shift-j": "project_search::ToggleFilters", "cmd-shift-f": "search::FocusSearch", "cmd-shift-h": "search::ToggleReplace", "alt-cmd-g": "search::ToggleRegex", @@ -309,6 +310,7 @@ "context": "ProjectSearchView", "bindings": { "escape": "project_search::ToggleFocus", + "cmd-shift-j": "project_search::ToggleFilters", "cmd-shift-h": "search::ToggleReplace", "alt-cmd-g": "search::ToggleRegex", "alt-cmd-x": "search::ToggleRegex" @@ -400,11 +402,17 @@ "alt-cmd-f12": "editor::GoToTypeDefinitionSplit", "alt-shift-f12": "editor::FindAllReferences", "ctrl-m": "editor::MoveToEnclosingBracket", + "cmd-shift-\\": "editor::MoveToEnclosingBracket", "alt-cmd-[": "editor::Fold", "alt-cmd-]": "editor::UnfoldLines", "ctrl-space": "editor::ShowCompletions", "cmd-.": "editor::ToggleCodeActions", "alt-cmd-r": "editor::RevealInFinder", + "cmd-k r": "editor::RevealInFinder", + "cmd-k p": "editor::CopyPath", + "cmd-\\": "pane::SplitRight", + "cmd-k v": "markdown::OpenPreviewToTheSide", + "cmd-shift-v": "markdown::OpenPreview", "ctrl-cmd-c": "editor::DisplayCursorNames" } }, @@ -495,6 +503,7 @@ "cmd-k shift-right": ["workspace::SwapPaneInDirection", "Right"], "cmd-k shift-up": ["workspace::SwapPaneInDirection", "Up"], "cmd-k shift-down": ["workspace::SwapPaneInDirection", "Down"], + "cmd-shift-x": "zed::Extensions", "alt-t": "task::Rerun", "alt-shift-t": "task::Spawn" } @@ -619,6 +628,7 @@ "cmd-alt-c": "project_panel::CopyPath", "alt-cmd-shift-c": "project_panel::CopyRelativePath", "enter": "project_panel::Rename", + "f2": "project_panel::Rename", "backspace": ["project_panel::Trash", { "skip_prompt": false }], "delete": ["project_panel::Trash", { "skip_prompt": false }], "cmd-backspace": ["project_panel::Trash", { "skip_prompt": true }], @@ -707,10 +717,14 @@ "escape": ["terminal::SendKeystroke", "escape"], "enter": ["terminal::SendKeystroke", "enter"], "ctrl-c": ["terminal::SendKeystroke", "ctrl-c"], + "cmd-up": "terminal::ScrollPageUp", + "cmd-down": "terminal::ScrollPageDown", "shift-pageup": "terminal::ScrollPageUp", "shift-pagedown": "terminal::ScrollPageDown", "shift-up": "terminal::ScrollLineUp", "shift-down": "terminal::ScrollLineDown", + "cmd-home": "terminal::ScrollToTop", + "cmd-end": "terminal::ScrollToBottom", "shift-home": "terminal::ScrollToTop", "shift-end": "terminal::ScrollToBottom" } diff --git a/assets/keymaps/linux/atom.json b/assets/keymaps/linux/atom.json new file mode 100644 index 0000000000000000000000000000000000000000..7f2783fd51dedea172ceaf959a0d8fbb3f6d61c4 --- /dev/null +++ b/assets/keymaps/linux/atom.json @@ -0,0 +1,93 @@ +// Default Keymap (Atom) for Zed on Linux +[ + { + "bindings": { + "ctrl-shift-f5": "workspace::Reload", // window:reload + "ctrl-k ctrl-n": "workspace::ActivatePreviousPane", // window:focus-next-pane + "ctrl-k ctrl-p": "workspace::ActivateNextPane" // window:focus-previous-pane + } + }, + { + "context": "Editor", + "bindings": { + "ctrl-shift-l": "language_selector::Toggle", // grammar-selector:show + "ctrl-|": "pane::RevealInProjectPanel", // tree-view:reveal-active-file + "ctrl-b": "editor::GoToDefinition", // fuzzy-finder:toggle-buffer-finder + "ctrl-alt-b": "editor::GoToDefinitionSplit", // N/A: From JetBrains + "ctrl-<": "editor::ScrollCursorCenter", // editor:scroll-to-cursor + "f3": ["editor::SelectNext", { "replace_newest": true }], // find-and-replace:find-next + "shift-f3": ["editor::SelectPrevious", { "replace_newest": true }], //find-and-replace:find-previous + "alt-shift-down": "editor::AddSelectionBelow", // editor:add-selection-below + "alt-shift-up": "editor::AddSelectionAbove", // editor:add-selection-above + "ctrl-k ctrl-u": "editor::ConvertToUpperCase", // editor:upper-case + "ctrl-k ctrl-l": "editor::ConvertToLowerCase", // editor:lower-case + "ctrl-j": "editor::JoinLines", // editor:join-lines + "ctrl-shift-d": "editor::DuplicateLineDown", // editor:duplicate-lines + "ctrl-up": "editor::MoveLineUp", // editor:move-line-up + "ctrl-down": "editor::MoveLineDown", // editor:move-line-down + "ctrl-shift-m": "markdown::OpenPreviewToTheSide" // markdown-preview:toggle + } + }, + { + "context": "Editor && mode == full", + "bindings": { + "ctrl-r": "outline::Toggle" // symbols-view:toggle-project-symbols + } + }, + { + "context": "BufferSearchBar", + "bindings": { + "ctrl-f3": "search::SelectNextMatch", // find-and-replace:find-next-selected + "ctrl-shift-f3": "search::SelectPrevMatch" // find-and-replace:find-previous-selected + } + }, + { + "context": "Workspace", + "bindings": { + "ctrl-\\": "workspace::ToggleLeftDock", // tree-view:toggle + "ctrl-k ctrl-b": "workspace::ToggleLeftDock", // tree-view:toggle + "ctrl-t": "file_finder::Toggle", // fuzzy-finder:toggle-file-finder + "ctrl-r": "project_symbols::Toggle" // symbols-view:toggle-project-symbols + } + }, + { + "context": "Pane", + "bindings": { + // "ctrl-0": "project_panel::ToggleFocus", // tree-view:toggle-focus + "ctrl-1": ["pane::ActivateItem", 0], // tree-view:open-selected-entry-in-pane-1 + "ctrl-2": ["pane::ActivateItem", 1], // tree-view:open-selected-entry-in-pane-2 + "ctrl-3": ["pane::ActivateItem", 2], // tree-view:open-selected-entry-in-pane-3 + "ctrl-4": ["pane::ActivateItem", 3], // tree-view:open-selected-entry-in-pane-4 + "ctrl-5": ["pane::ActivateItem", 4], // tree-view:open-selected-entry-in-pane-5 + "ctrl-6": ["pane::ActivateItem", 5], // tree-view:open-selected-entry-in-pane-6 + "ctrl-7": ["pane::ActivateItem", 6], // tree-view:open-selected-entry-in-pane-7 + "ctrl-8": ["pane::ActivateItem", 7], // tree-view:open-selected-entry-in-pane-8 + "ctrl-9": ["pane::ActivateItem", 8] // tree-view:open-selected-entry-in-pane-9 + } + }, + { + "context": "ProjectPanel", + "bindings": { + "f2": "project_panel::Rename", // tree-view:rename + "backspace": ["project_panel::Trash", { "skip_prompt": false }], + "ctrl-x": "project_panel::Cut", // tree-view:cut + "ctrl-c": "project_panel::Copy", // tree-view:copy + "ctrl-v": "project_panel::Paste" // tree-view:paste + } + }, + { + "context": "ProjectPanel && not_editing", + "bindings": { + "ctrl-shift-c": "project_panel::CopyPath", // tree-view:copy-full-path + "ctrl-[": "project_panel::CollapseSelectedEntry", // tree-view:collapse-directory + "ctrl-b": "project_panel::CollapseSelectedEntry", // tree-view:collapse-directory + "ctrl-]": "project_panel::ExpandSelectedEntry", // tree-view:expand-item + "ctrl-f": "project_panel::ExpandSelectedEntry", // tree-view:expand-item + "a": "project_panel::NewFile", // tree-view:add-file + "d": "project_panel::Duplicate", // tree-view:duplicate + "home": "menu::SelectFirst", // core:move-to-top + "end": "menu::SelectLast", // core:move-to-bottom + "shift-a": "project_panel::NewDirectory" // tree-view:add-folder + } + } +] diff --git a/assets/keymaps/linux/jetbrains.json b/assets/keymaps/linux/jetbrains.json new file mode 100644 index 0000000000000000000000000000000000000000..db31fd81ae3fee9308df63508e7637a717843e73 --- /dev/null +++ b/assets/keymaps/linux/jetbrains.json @@ -0,0 +1,90 @@ +[ + { + "bindings": { + "ctrl-shift-[": "pane::ActivatePrevItem", + "ctrl-shift-]": "pane::ActivateNextItem" + } + }, + { + "context": "Editor", + "bindings": { + "ctrl->": "zed::IncreaseBufferFontSize", + "ctrl-<": "zed::DecreaseBufferFontSize", + "ctrl-shift-j": "editor::JoinLines", + "ctrl-d": "editor::DuplicateLineDown", + "ctrl-y": "editor::DeleteLine", + "ctrl-pagedown": "editor::MovePageDown", + "ctrl-pageup": "editor::MovePageUp", + // "ctrl-alt-shift-b": "editor::SelectToPreviousWordStart", + "ctrl-alt-enter": "editor::NewlineAbove", + "shift-enter": "editor::NewlineBelow", + // "ctrl--": "editor::Fold", // TODO: `ctrl-numpad--` (numpad not implemented) + // "ctrl-+": "editor::UnfoldLines", // TODO: `ctrl-numpad+` (numpad not implemented) + "alt-shift-g": "editor::SplitSelectionIntoLines", + "alt-j": ["editor::SelectNext", { "replace_newest": false }], + "alt-shift-j": ["editor::SelectPrevious", { "replace_newest": false }], + "ctrl-/": ["editor::ToggleComments", { "advance_downwards": true }], + "alt-up": "editor::SelectLargerSyntaxNode", + "alt-down": "editor::SelectSmallerSyntaxNode", + "shift-alt-up": "editor::MoveLineUp", + "shift-alt-down": "editor::MoveLineDown", + "ctrl-alt-l": "editor::Format", + "shift-f6": "editor::Rename", + "ctrl-alt-left": "pane::GoBack", + "ctrl-alt-right": "pane::GoForward", + "alt-f7": "editor::FindAllReferences", + "ctrl-alt-f7": "editor::FindAllReferences", + // "ctrl-b": "editor::GoToDefinition", // Conflicts with workspace::ToggleLeftDock + // "ctrl-alt-b": "editor::GoToDefinitionSplit", // Conflicts with workspace::ToggleLeftDock + "ctrl-shift-b": "editor::GoToTypeDefinition", + "ctrl-alt-shift-b": "editor::GoToTypeDefinitionSplit", + "f2": "editor::GoToDiagnostic", + "shift-f2": "editor::GoToPrevDiagnostic", + "ctrl-alt-shift-down": "editor::GoToHunk", + "ctrl-alt-shift-up": "editor::GoToPrevHunk", + "ctrl-home": "editor::MoveToBeginning", + "ctrl-end": "editor::MoveToEnd", + "ctrl-shift-home": "editor::SelectToBeginning", + "ctrl-shift-end": "editor::SelectToEnd" + } + }, + { + "context": "Editor && mode == full", + "bindings": { + "ctrl-f12": "outline::Toggle", + "alt-7": "outline::Toggle", + "ctrl-shift-n": "file_finder::Toggle", + "ctrl-g": "go_to_line::Toggle", + "alt-enter": "editor::ToggleCodeActions" + } + }, + { + "context": "Workspace", + "bindings": { + "ctrl-shift-n": "file_finder::Toggle", + "ctrl-shift-a": "command_palette::Toggle", + "shift shift": "command_palette::Toggle", + "ctrl-alt-shift-n": "project_symbols::Toggle", + "alt-1": "workspace::ToggleLeftDock", + "ctrl-e": "tab_switcher::Toggle", + "alt-6": "diagnostics::Deploy" + } + }, + { + "context": "Pane", + "bindings": { + "ctrl-alt-left": "pane::GoBack", + "ctrl-alt-right": "pane::GoForward" + } + }, + { + "context": "ProjectPanel", + "bindings": { + "enter": "project_panel::Open", + "backspace": ["project_panel::Trash", { "skip_prompt": false }], + "delete": ["project_panel::Trash", { "skip_prompt": false }], + "shift-delete": ["project_panel::Delete", { "skip_prompt": false }], + "shift-f6": "project_panel::Rename" + } + } +] diff --git a/assets/keymaps/linux/sublime_text.json b/assets/keymaps/linux/sublime_text.json new file mode 100644 index 0000000000000000000000000000000000000000..a359c040d23e984d6d179785dd5ded5cd68d0252 --- /dev/null +++ b/assets/keymaps/linux/sublime_text.json @@ -0,0 +1,53 @@ +[ + { + "bindings": { + "ctrl-shift-[": "pane::ActivatePrevItem", + "ctrl-shift-]": "pane::ActivateNextItem", + "ctrl-pagedown": "pane::ActivatePrevItem", + "ctrl-pageup": "pane::ActivateNextItem", + "ctrl-shift-tab": "pane::ActivateNextItem", + "ctrl-tab": "pane::ActivatePrevItem" + } + }, + { + "context": "Editor", + "bindings": { + "ctrl-shift-up": "editor::AddSelectionAbove", + "ctrl-shift-down": "editor::AddSelectionBelow", + "ctrl-shift-m": "editor::SelectLargerSyntaxNode", + "ctrl-shift-l": "editor::SplitSelectionIntoLines", + "ctrl-shift-a": "editor::SelectLargerSyntaxNode", + "ctrl-shift-d": "editor::DuplicateLineDown", + "f12": "editor::GoToDefinition", + "ctrl-f12": "editor::GoToDefinitionSplit", + "shift-f12": "editor::FindAllReferences", + "ctrl-shift-f12": "editor::FindAllReferences", + "ctrl-.": "editor::GoToHunk", + "ctrl-,": "editor::GoToPrevHunk", + "shift-alt-m": "markdown::OpenPreviewToTheSide", + "ctrl-backspace": "editor::DeleteToPreviousWordStart", + "ctrl-delete": "editor::DeleteToNextWordEnd" + } + }, + { + "context": "Editor && mode == full", + "bindings": { + "ctrl-r": "outline::Toggle" + } + }, + { + "context": "Pane", + "bindings": { + "f4": "search::SelectNextMatch", + "shift-f4": "search::SelectPrevMatch" + } + }, + { + "context": "Workspace", + "bindings": { + "ctrl-k ctrl-b": "workspace::ToggleLeftDock", + // "ctrl-0": "project_panel::ToggleFocus", // normally resets zoom + "shift-ctrl-r": "project_symbols::Toggle" + } + } +] diff --git a/assets/keymaps/atom.json b/assets/keymaps/macos/atom.json similarity index 71% rename from assets/keymaps/atom.json rename to assets/keymaps/macos/atom.json index b45ae6d4e2e973dc79fa88481a5e43e65036141e..39a59ba978e4c0b6cfbfeeb3661533521d6e060b 100644 --- a/assets/keymaps/atom.json +++ b/assets/keymaps/macos/atom.json @@ -1,6 +1,8 @@ +// Default Keymap (Atom) for Zed on MacOS [ { "bindings": { + "ctrl-alt-cmd-l": "workspace::Reload", "cmd-k cmd-p": "workspace::ActivatePreviousPane", "cmd-k cmd-n": "workspace::ActivateNextPane" } @@ -8,24 +10,23 @@ { "context": "Editor", "bindings": { + "ctrl-shift-l": "language_selector::Toggle", + "cmd-|": "pane::RevealInProjectPanel", "cmd-b": "editor::GoToDefinition", "alt-cmd-b": "editor::GoToDefinitionSplit", "cmd-<": "editor::ScrollCursorCenter", - "cmd-g": [ - "editor::SelectNext", - { - "replace_newest": true - } - ], - "ctrl-cmd-g": [ - "editor::SelectPrevious", - { - "replace_newest": true - } - ], + "cmd-g": ["editor::SelectNext", { "replace_newest": true }], + "cmd-shift-g": ["editor::SelectPrevious", { "replace_newest": true }], "ctrl-shift-down": "editor::AddSelectionBelow", "ctrl-shift-up": "editor::AddSelectionAbove", "cmd-shift-backspace": "editor::DeleteToBeginningOfLine", + "cmd-k cmd-u": "editor::ConvertToUpperCase", + "cmd-k cmd-l": "editor::ConvertToLowerCase", + "alt-enter": "editor::Newline", + "cmd-j": "editor::JoinLines", + "cmd-shift-d": "editor::DuplicateLineDown", + "ctrl-cmd-up": "editor::MoveLineUp", + "ctrl-cmd-down": "editor::MoveLineDown", "ctrl-shift-m": "markdown::OpenPreviewToTheSide" } }, @@ -74,21 +75,22 @@ "backspace": ["project_panel::Trash", { "skip_prompt": false }], "cmd-x": "project_panel::Cut", "cmd-c": "project_panel::Copy", - "cmd-v": "project_panel::Paste", - "ctrl-[": "project_panel::CollapseSelectedEntry", - "ctrl-b": "project_panel::CollapseSelectedEntry", - "alt-b": "project_panel::CollapseSelectedEntry", - "ctrl-]": "project_panel::ExpandSelectedEntry", - "ctrl-f": "project_panel::ExpandSelectedEntry", - "ctrl-shift-c": "project_panel::CopyPath" + "cmd-v": "project_panel::Paste" } }, { "context": "ProjectPanel && not_editing", "bindings": { + "ctrl-shift-c": "project_panel::CopyPath", + "ctrl-[": "project_panel::CollapseSelectedEntry", + "ctrl-b": "project_panel::CollapseSelectedEntry", + "ctrl-]": "project_panel::ExpandSelectedEntry", + "ctrl-f": "project_panel::ExpandSelectedEntry", "a": "project_panel::NewFile", - "shift-a": "project_panel::NewDirectory", - "shift-d": "project_panel::Duplicate" + "d": "project_panel::Duplicate", + "home": "menu::SelectFirst", + "end": "menu::SelectLast", + "shift-a": "project_panel::NewDirectory" } } ] diff --git a/assets/keymaps/jetbrains.json b/assets/keymaps/macos/jetbrains.json similarity index 98% rename from assets/keymaps/jetbrains.json rename to assets/keymaps/macos/jetbrains.json index bd9b881ad082bcfbad31389d67bc7ddbc1e52d6c..798c21333e11e78699aec5674fd732119a0af7fc 100644 --- a/assets/keymaps/jetbrains.json +++ b/assets/keymaps/macos/jetbrains.json @@ -54,7 +54,7 @@ "cmd-shift-b": "editor::GoToTypeDefinition", "cmd-alt-shift-b": "editor::GoToTypeDefinitionSplit", "f2": "editor::GoToDiagnostic", - "cmd-f2": "editor::GoToPrevDiagnostic", + "shift-f2": "editor::GoToPrevDiagnostic", "ctrl-alt-shift-down": "editor::GoToHunk", "ctrl-alt-shift-up": "editor::GoToPrevHunk", "cmd-home": "editor::MoveToBeginning", diff --git a/assets/keymaps/sublime_text.json b/assets/keymaps/macos/sublime_text.json similarity index 89% rename from assets/keymaps/sublime_text.json rename to assets/keymaps/macos/sublime_text.json index 81018240d854f63dd34a5b437acbf4195ecee4f1..d3df97202800f263a37ebbcd49ee141d5ab3c395 100644 --- a/assets/keymaps/sublime_text.json +++ b/assets/keymaps/macos/sublime_text.json @@ -6,8 +6,7 @@ "ctrl-pagedown": "pane::ActivatePrevItem", "ctrl-pageup": "pane::ActivateNextItem", "ctrl-shift-tab": "pane::ActivateNextItem", - "ctrl-tab": "pane::ActivatePrevItem", - "cmd-+": "zed::IncreaseBufferFontSize" + "ctrl-tab": "pane::ActivatePrevItem" } }, { @@ -26,6 +25,9 @@ "alt-shift-cmd-down": "editor::FindAllReferences", "ctrl-.": "editor::GoToHunk", "ctrl-,": "editor::GoToPrevHunk", + "cmd-k cmd-u": "editor::ConvertToUpperCase", + "cmd-k cmd-l": "editor::ConvertToLowerCase", + "shift-alt-m": "markdown::OpenPreviewToTheSide", "ctrl-backspace": "editor::DeleteToPreviousWordStart", "ctrl-delete": "editor::DeleteToNextWordEnd" } diff --git a/assets/keymaps/textmate.json b/assets/keymaps/macos/textmate.json similarity index 100% rename from assets/keymaps/textmate.json rename to assets/keymaps/macos/textmate.json diff --git a/crates/welcome/src/base_keymap_setting.rs b/crates/welcome/src/base_keymap_setting.rs index dd837c39c714e7bed253e9575c802df81b2bac9c..eeddfc6860d385952ae233a0196e4cc9655a5a5e 100644 --- a/crates/welcome/src/base_keymap_setting.rs +++ b/crates/welcome/src/base_keymap_setting.rs @@ -32,6 +32,7 @@ impl Display for BaseKeymap { } impl BaseKeymap { + #[cfg(target_os = "macos")] pub const OPTIONS: [(&'static str, Self); 5] = [ ("VSCode (Default)", Self::VSCode), ("Atom", Self::Atom), @@ -40,12 +41,31 @@ impl BaseKeymap { ("TextMate", Self::TextMate), ]; + #[cfg(not(target_os = "macos"))] + pub const OPTIONS: [(&'static str, Self); 4] = [ + ("VSCode (Default)", Self::VSCode), + ("Atom", Self::Atom), + ("JetBrains", Self::JetBrains), + ("Sublime Text", Self::SublimeText), + ]; + pub fn asset_path(&self) -> Option<&'static str> { + #[cfg(target_os = "macos")] + match self { + BaseKeymap::JetBrains => Some("keymaps/macos/jetbrains.json"), + BaseKeymap::SublimeText => Some("keymaps/macos/sublime_text.json"), + BaseKeymap::Atom => Some("keymaps/macos/atom.json"), + BaseKeymap::TextMate => Some("keymaps/macos/textmate.json"), + BaseKeymap::VSCode => None, + BaseKeymap::None => None, + } + + #[cfg(not(target_os = "macos"))] match self { - BaseKeymap::JetBrains => Some("keymaps/jetbrains.json"), - BaseKeymap::SublimeText => Some("keymaps/sublime_text.json"), - BaseKeymap::Atom => Some("keymaps/atom.json"), - BaseKeymap::TextMate => Some("keymaps/textmate.json"), + BaseKeymap::JetBrains => Some("keymaps/linux/jetbrains.json"), + BaseKeymap::SublimeText => Some("keymaps/linux/sublime_text.json"), + BaseKeymap::Atom => Some("keymaps/linux/atom.json"), + BaseKeymap::TextMate => None, BaseKeymap::VSCode => None, BaseKeymap::None => None, }