188 lines
5.4 KiB
JSON
188 lines
5.4 KiB
JSON
[
|
|
{
|
|
"context": "Editor && (vim_mode == normal || vim_mode == visual) && !VimWaiting && !menu",
|
|
"bindings": {
|
|
// Git
|
|
"enter": "vim::PushSneak",
|
|
// Toggle inlay hints
|
|
"space u i": "editor::ToggleInlayHints",
|
|
|
|
// NOTE: Toggle Zen mode, not fully working yet
|
|
"space u z": "workspace::ToggleZoom",
|
|
|
|
// Open recent project
|
|
"space f p": "projects::OpenRecent",
|
|
// Search word under cursor
|
|
"space f w": "pane::DeploySearch",
|
|
|
|
// Go to file with `gf`
|
|
"g f": "editor::OpenExcerpts"
|
|
}
|
|
},
|
|
{
|
|
// move context menus with Ctrl + hjkl in completions
|
|
"context": "(vim_mode == normal || vim_mode == insert) && (showing_code_actions || showing_completions)",
|
|
"bindings": {
|
|
"ctrl-h": "editor::ContextMenuPrevious",
|
|
"ctrl-j": "editor::ContextMenuNext",
|
|
"ctrl-k": "editor::ContextMenuPrevious",
|
|
"ctrl-l": "editor::ContextMenuNext"
|
|
}
|
|
},
|
|
{
|
|
"context": "Editor && (vim_mode == normal || vim_mode == insert)",
|
|
"bindings": {
|
|
"ctrl-shift-v": "editor::Paste"
|
|
}
|
|
},
|
|
{
|
|
// move context menus with Ctrl + hjkl in menus
|
|
"context": "Picker || menu",
|
|
"bindings": {
|
|
"ctrl-h": "menu::SelectPrevious",
|
|
"ctrl-j": "menu::SelectNext",
|
|
"ctrl-k": "menu::SelectPrevious",
|
|
"ctrl-l": "menu::SelectNext"
|
|
}
|
|
},
|
|
{
|
|
"context": "Editor && VimControl && !VimWaiting && !menu",
|
|
"bindings": {
|
|
"|": "pane::SplitVertical",
|
|
|
|
// Window movement bindings
|
|
// Ctrl jklk to move between panes
|
|
"ctrl-h": "workspace::ActivatePaneLeft",
|
|
"ctrl-l": "workspace::ActivatePaneRight",
|
|
"ctrl-k": "workspace::ActivatePaneUp",
|
|
"ctrl-j": "workspace::ActivatePaneDown",
|
|
|
|
"space e": "pane::RevealInProjectPanel",
|
|
|
|
// +LSP
|
|
"space l a": "editor::ToggleCodeActions",
|
|
"space l r": "editor::Rename",
|
|
"g d": "editor::GoToDefinition",
|
|
"g D": "editor::GoToDefinitionSplit",
|
|
"g i": "editor::GoToImplementation",
|
|
"g I": "editor::GoToImplementationSplit",
|
|
"g t": "editor::GoToTypeDefinition",
|
|
"g T": "editor::GoToTypeDefinitionSplit",
|
|
"g r": "editor::FindAllReferences",
|
|
"space l j": "editor::GoToDiagnostic",
|
|
"space l k": "editor::GoToPreviousDiagnostic",
|
|
|
|
// Symbol search
|
|
"space f o": "outline::Toggle",
|
|
"space f O": "project_symbols::Toggle",
|
|
|
|
// Diagnostic
|
|
"space f q": "diagnostics::Deploy",
|
|
|
|
// +Git
|
|
// Git prev/next hunk
|
|
"space g j": "editor::GoToHunk",
|
|
"space g k": "editor::GoToPreviousHunk",
|
|
|
|
// + Buffers
|
|
// Switch between buffers
|
|
"shift-h": "pane::ActivatePreviousItem",
|
|
"shift-l": "pane::ActivateNextItem",
|
|
|
|
// Close active panel
|
|
"space b c": "pane::CloseActiveItem",
|
|
"space b d": "pane::CloseActiveItem",
|
|
// Close other items
|
|
"space b o": "pane::CloseOtherItems",
|
|
// Save file
|
|
"ctrl-s": "workspace::Save",
|
|
// File finder
|
|
"space f f": "file_finder::Toggle",
|
|
// Project search
|
|
"space f W": "pane::DeploySearch"
|
|
}
|
|
},
|
|
{
|
|
"context": "Editor && vim_mode == visual",
|
|
"bindings": {
|
|
"shift-j": "editor::MoveLineDown",
|
|
"shift-k": "editor::MoveLineUp"
|
|
}
|
|
},
|
|
// Empty pane, set of keybindings that are available when there is no active editor
|
|
{
|
|
"context": "(EmptyPane || SharedScreen) && vim_mode != insert",
|
|
"bindings": {
|
|
// Open file finder
|
|
"space f f": "file_finder::Toggle",
|
|
// Open recent project
|
|
"space f p": "projects::OpenRecent"
|
|
}
|
|
},
|
|
{
|
|
"context": "Workspace",
|
|
"bindings": {
|
|
"ctrl-t": "terminal_panel::ToggleFocus"
|
|
}
|
|
},
|
|
{
|
|
"context": "Terminal",
|
|
"bindings": {
|
|
"ctrl-h": "workspace::ActivatePaneLeft",
|
|
"ctrl-l": "workspace::ActivatePaneRight",
|
|
"ctrl-k": "workspace::ActivatePaneUp",
|
|
"ctrl-j": "workspace::ActivatePaneDown"
|
|
}
|
|
},
|
|
// File panel (netrw)
|
|
{
|
|
"context": "ProjectPanel && not_editing",
|
|
"bindings": {
|
|
"a": "project_panel::NewFile",
|
|
"A": "project_panel::NewDirectory",
|
|
"r": "project_panel::Rename",
|
|
"d": "project_panel::Delete",
|
|
"x": "project_panel::Cut",
|
|
"c": "project_panel::Copy",
|
|
"p": "project_panel::Paste",
|
|
"y": "workspace::CopyRelativePath",
|
|
"Y": "workspace::CopyPath",
|
|
"o": ["project_panel::Open", "workspace::toggleLeftDock"],
|
|
// Close project panel as project file panel on the right
|
|
// Navigate between panel
|
|
"ctrl-h": "workspace::ActivatePaneLeft",
|
|
"ctrl-l": "workspace::ActivatePaneRight",
|
|
"ctrl-k": "workspace::ActivatePaneUp",
|
|
"ctrl-j": "workspace::ActivatePaneDown",
|
|
"space e": "workspace::ToggleLeftDock"
|
|
}
|
|
},
|
|
// Panel nagivation
|
|
{
|
|
"context": "Dock",
|
|
"bindings": {
|
|
"ctrl-w h": "workspace::ActivatePaneLeft",
|
|
"ctrl-w l": "workspace::ActivatePaneRight",
|
|
"ctrl-w k": "workspace::ActivatePaneUp",
|
|
"ctrl-w j": "workspace::ActivatePaneDown"
|
|
}
|
|
},
|
|
{
|
|
"context": "vim_operator == a || vim_operator == i || vim_operator == cs",
|
|
"bindings": {
|
|
// mini.ai plugin behavior
|
|
"\"": "vim::MiniQuotes",
|
|
"[": "vim::MiniBrackets",
|
|
"]": "vim::MiniBrackets",
|
|
"q": "vim::MiniQuotes",
|
|
"b": "vim::MiniBrackets"
|
|
}
|
|
},
|
|
{
|
|
"context": "vim_mode == visual",
|
|
"bindings": {
|
|
"shift-s": "vim::PushAddSurrounds",
|
|
"g x": "vim::Exchange"
|
|
}
|
|
}
|
|
]
|