Refactor keymap.json for Vim mode bindings

This commit is contained in:
Jason Hilder 2026-03-17 15:23:15 +02:00 committed by GitHub
parent 96ebaf5253
commit 3597948b23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 62 additions and 73 deletions

View File

@ -1,75 +1,64 @@
[ [
// VIM NORMAL MODE // VIM NORMAL MODE
{ {
"context": "VimControl && vim_mode == normal", "context": "VimControl && vim_mode == normal",
"bindings": { "bindings": {
"ctrl-j": "vim::ScrollDown", "ctrl-h": "pane::ActivatePreviousItem",
"ctrl-k": "vim::ScrollUp", "ctrl-l": "pane::ActivateNextItem",
"ctrl-h": "pane::ActivatePreviousItem", "space f": "file_finder::Toggle",
"ctrl-l": "pane::ActivateNextItem", "space t": "workspace::NewCenterTerminal",
"space f": "file_finder::Toggle", "space e": "project_panel::ToggleFocus",
"space c": "pane::CloseActiveItem", "space q": "pane::CloseAllItems",
"space t": "workspace::NewCenterTerminal", "space h": "buffer_search::Dismiss",
"space e": "project_panel::ToggleFocus", "space l s": "project_symbols::Toggle",
"space p e": "workspace::ToggleLeftDock", "space l i": "editor::GoToImplementationSplit",
"space q": "pane::CloseAllItems", "space l r": "editor::Rename",
"space h": "buffer_search::Dismiss", "space s p": "workspace::NewSearch",
"space a": "workspace::SaveAll", "space b e": "pane::ReopenClosedItem",
"space l s": "project_symbols::Toggle", "space g g": "git::Branch",
"space l i": "editor::GoToImplementationSplit", "space p p": "projects::OpenRecent",
"space l r": "editor::Rename", "ctrl-n": "menu::SelectNext", // Navigate down in lists (e.g., file finder, search results)
"space s t": "workspace::NewSearch", "ctrl-p": "menu::SelectPrevious", // Navigate up in lists
"space b l": "pane::CloseItemsToTheRight", "ctrl-/": "editor::ToggleComments",
"space b h": "pane::CloseItemsToTheLeft", "ctrl-space": "workspace::ToggleRightDock",
"space b a": "pane::ReopenClosedItem", }
"space z f": ["workspace::SendKeystrokes", "shift-v shift-f ctrl-c"], },
"space z a": [ "workspace::SendKeystrokes", "g g shift-v shift-g shift-f ctrl-c g g" ], // VIM VISUAL MODE
"space z u": [ "workspace::SendKeystrokes", "g g shift-v shift-g space z z ctrl-c g g" ], {
"space g g": "git::Branch", "context": "Editor && vim_mode == visual && !menu && !Terminal",
"ctrl-n": "menu::SelectNext", // Navigate down in lists (e.g., file finder, search results) "bindings": {
"ctrl-p": "menu::SelectPrevious", // Navigate up in lists "shift-k": "editor::MoveLineUp",
"ctrl-/": "editor::ToggleComments", "shift-j": "editor::MoveLineDown",
"ctrl-space": "workspace::ToggleBottomDock", }
} },
}, {
// VIM VISUAL MODE "context": "Editor && vim_mode != insert && !VimWaiting && mode != single_line",
{ "bindings": {
"context": "Editor && vim_mode == visual && !menu && !Terminal", "g d": "editor::GoToDefinition",
"bindings": { "g i": "editor::GoToImplementation",
"shift-k": "editor::MoveLineUp", "g r": "editor::FindAllReferences"
"shift-j": "editor::MoveLineDown", }
} },
}, // TERMINAL MODE
{ {
"context": "Editor && vim_mode != insert && !VimWaiting && mode != single_line", "context": "Terminal",
"bindings": { "bindings": {
"g d": "editor::GoToDefinition", "ctrl-space": "workspace::ToggleRightDock",
"g i": "editor::GoToImplementation", "ctrl-o": "workspace::NewTerminal",
"g r": "editor::FindAllReferences" "ctrl-l": "pane::ActivateNextItem",
} "ctrl-h": "pane::ActivatePreviousItem",
}, "ctrl-q": "pane::CloseActiveItem",
// TERMINAL MODE "ctrl-j": "terminal::Clear"
{ }
"context": "Terminal", },
"bindings": { // FILE TREE
"ctrl-space": "workspace::ToggleBottomDock", {
"ctrl-o": "workspace::NewTerminal", "context": "!renaming && ProjectPanel && !Terminal && !VimWaiting && vim_mode != insert && !editing",
"ctrl-l": "pane::ActivateNextItem", "bindings": {
"ctrl-h": "pane::ActivatePreviousItem", "a": "project_panel::NewFile",
"ctrl-q": "pane::CloseActiveItem", "d": "project_panel::Delete",
"ctrl-j": "terminal::Clear" "r": "project_panel::Rename",
} "space e": "project_panel::Toggle",
}, }
// FILE TREE },
{
"context": "!renaming && ProjectPanel && !Terminal && !VimWaiting && vim_mode != insert && !editing",
"bindings": {
"a": "project_panel::NewFile",
"d": "project_panel::Delete",
"r": "project_panel::Rename",
"space e": "project_panel::Toggle",
"ctrl-n": "menu::SelectNext", // Navigate project panel list
"ctrl-p": "menu::SelectPrevious"
}
},
] ]