Last active
October 19, 2025 07:09
-
-
Save eugenesvk/e09bd53953915bb730812b6f72eaa614 to your computer and use it in GitHub Desktop.
Zed keybindings in a cleaner KDL format (Vim+Helix), no " : , and other {[syntax noise]}
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| "VimControl && !menu" { | |
| // '⠀' braile non-whitespace used mostly for alignment | |
| // ⦋⠀b (pane)ActivatePreviousItem | |
| // ⦌⇧b (pane)ActivateLastItem | |
| // since symbols resolve conflicts like is 'ge' '>' or 'g e'? It's '⇧,' or '<' | |
| // But could also resolve ambiguity and force a sequence | |
| /-_ {(vim)PushObject around=#false; (vim)Up} // command sequence = nested nodes | |
| i (vim)PushObject around=#false | |
| a (vim)PushObject around=#true | |
| ⌫ (vim)WrappingLeft | |
| ▲ (vim)Up | |
| k (vim)Up | |
| ▼ (vim)Down | |
| j (vim)Down | |
| ⎈j (vim)Down | |
| ◀ (vim)Left | |
| h (vim)Left | |
| ▶ (vim)Right | |
| l (vim)Right | |
| ⎈m (vim)NextLineStart | |
| ⇧≗ (vim)NextLineStart | |
| ⏎ (vim)NextLineStart | |
| - (vim)PreviousLineStart | |
| ⭾ (vim)Tab | |
| ⇧⭾ (vim)Tab | |
| ␠ (vim)WrappingRight | |
| ⇥ (vim)EndOfLine | |
| ⇧4 (vim)EndOfLine | |
| ⇧6 (vim)FirstNonWhiteSpace | |
| ⇧- (vim)StartOfLineDownward | |
| g⇧- (vim)EndOfLineDownward | |
| ⇧g (vim)EndOfDocument | |
| ⇧⦋ (vim)StartOfParagraph | |
| ⇧⦌ (vim)EndOfParagraph | |
| ⇧9 (vim)SentenceBackward | |
| ⇧0 (vim)SentenceForward | |
| ⇧⧵ (vim)GoToColumn | |
| // Word motions | |
| w (vim)NextWordStart | |
| e (vim)NextWordEnd | |
| b (vim)PreviousWordStart | |
| ge (vim)PreviousWordEnd | |
| // Subword motions | |
| /- w (vim)NextSubwordStart | |
| /- b (vim)PreviousSubwordStart | |
| /- e (vim)NextSubwordEnd | |
| /-ge (vim)PreviousSubwordEnd | |
| ⇧w (vim)NextWordStart ignore_punctuation=#true | |
| ⇧e (vim)NextWordEnd ignore_punctuation=#true | |
| ⇧b (vim)PreviousWordStart ignore_punctuation=#true | |
| g⇧e (vim)PreviousWordEnd ignore_punctuation=#true | |
| ⁄ (vim)Search | |
| g⁄ (pane)DeploySearch | |
| ⇧⁄ (vim)Search backwards=#true | |
| ⇧8 (vim)MoveToNext | |
| ⇧3 (vim)MoveToPrevious | |
| n (vim)MoveToNextMatch | |
| ⇧n (vim)MoveToPreviousMatch | |
| ⇧5 (vim)Matching | |
| f (vim)PushFindForward before=#false multiline=#false | |
| t (vim)PushFindForward before=#true multiline=#false | |
| ⇧f (vim)PushFindBackward after=#false multiline=#false | |
| ⇧t (vim)PushFindBackward after=#true multiline=#false | |
| m (vim)PushMark | |
| ' (vim)PushJump line=#true | |
| ` (vim)PushJump line=#false | |
| ; (vim)RepeatFind | |
| , (vim)RepeatFindReversed | |
| ⎈o (pane)GoBack | |
| ⎈i (pane)GoForward | |
| ⎈⦌ (editor)GoToDefinition | |
| ⎋ (vim)SwitchToNormalMode | |
| ⎈⦋ (vim)SwitchToNormalMode | |
| v (vim)ToggleVisual | |
| ⇧v (vim)ToggleVisualLine | |
| ⎈g (vim)ShowLocation | |
| ⎈v (vim)ToggleVisualBlock | |
| ⎈q (vim)ToggleVisualBlock | |
| ⇧k (editor)Hover | |
| ⇧r (vim)ToggleReplace | |
| №0 (vim)StartOfLine | |
| ⇤ (vim)StartOfLine | |
| ⎈f (vim)PageDown | |
| ⇟ (vim)PageDown | |
| ⎈b (vim)PageUp | |
| ⇞ (vim)PageUp | |
| ⎈d (vim)ScrollDown | |
| ⎈u (vim)ScrollUp | |
| ⎈e (vim)LineDown | |
| ⎈y (vim)LineUp | |
| // g minor mode | |
| g⇧r (vim)PushReplaceWithRegister | |
| g⠀rn (editor)Rename | |
| g⠀rr (editor)FindAllReferences | |
| g⠀ri (editor)GoToImplementation | |
| g⠀ra (editor)ToggleCodeActions | |
| g⠀g (vim)StartOfDocument | |
| g⠀h (editor)Hover | |
| g⇧b (editor)BlameHover | |
| g⠀d (editor)GoToDefinition | |
| g⇧d (editor)GoToDeclaration | |
| g⠀y (editor)GoToTypeDefinition | |
| g⇧i (editor)GoToImplementation | |
| g⠀x (editor)OpenUrl | |
| g⠀f (editor)OpenSelectedFilename | |
| g⠀n (vim)SelectNextMatch | |
| g⇧n (vim)SelectPreviousMatch | |
| g⠀l (vim)SelectNext | |
| g⇧l (vim)SelectPrevious | |
| g⇧. (editor)SelectNext replace_newest=#true | |
| g⇧, (editor)SelectPrevious replace_newest=#true | |
| g⠀a (editor)SelectAllMatches | |
| g⠀s (outline)Toggle | |
| g⇧o (outline)Toggle | |
| g⇧s (project_symbols)Toggle | |
| g⠀. (editor)ToggleCodeActions //zed specific | |
| g⇧a (editor)FindAllReferences //zed specific | |
| g⠀␠ (editor)OpenExcerpts //zed specific | |
| g⇧8 (vim)MoveToNext partial_word=#true | |
| g⇧3 (vim)MoveToPrevious partial_word=#true | |
| g⠀j (vim)Down display_lines=#true | |
| g⠀▼ (vim)Down display_lines=#true | |
| g⠀k (vim)Up display_lines=#true | |
| g⠀▲ (vim)Up display_lines=#true | |
| g⇧4 (vim)EndOfLine display_lines=#true | |
| g⠀⇤ (vim)EndOfLine display_lines=#true | |
| g⠀0 (vim)StartOfLine display_lines=#true | |
| g⇥ (vim)StartOfLine display_lines=#true | |
| g⇧m (vim)MiddleOfLine display_lines=#true | |
| g⠀^ (vim)FirstNonWhiteSpace display_lines=#true | |
| g⠀v (vim)RestoreVisualSelection | |
| g⠀⦌ (editor)GoToDiagnostic | |
| g⠀⦋ (editor)GoToPreviousDiagnostic | |
| g⠀i (vim)InsertAtPrevious | |
| g⠀, (vim)ChangeListNewer | |
| g⠀; (vim)ChangeListOlder | |
| ⇧h (vim)WindowTop | |
| ⇧m (vim)WindowMiddle | |
| ⇧l (vim)WindowBottom | |
| q (vim)ToggleRecord | |
| ⇧q (vim)ReplayLastRecording | |
| ⇧2 (vim)PushReplayRegister | |
| // z minor mode | |
| z⠀⏎ (workspace)SendKeystrokes "z t ^" | |
| z⠀- (workspace)SendKeystrokes "z b ^" | |
| z⠀^ (workspace)SendKeystrokes "⇧h k z b ^" | |
| z⠀+ (workspace)SendKeystrokes "⇧l j z t ^" | |
| z⠀t (editor)ScrollCursorTop | |
| z⠀z (editor)ScrollCursorCenter | |
| z⠀. (workspace)SendKeystrokes "z z ^" | |
| z⠀b (editor)ScrollCursorBottom | |
| z⠀a (editor)ToggleFold | |
| z⇧a (editor)ToggleFoldRecursive | |
| z⠀c (editor)Fold | |
| z⇧c (editor)FoldRecursive | |
| z⠀o (editor)UnfoldLines | |
| z⇧o (editor)UnfoldRecursive | |
| z⠀f (editor)FoldSelectedRanges | |
| z⇧m (editor)FoldAll | |
| z⇧r (editor)UnfoldAll | |
| z⠀l (vim)ColumnRight | |
| z⠀h (vim)ColumnLeft | |
| z⇧l (vim)HalfPageRight | |
| z⇧h (vim)HalfPageLeft | |
| ⇧z⇧q (pane)CloseActiveItem save_intent=skip | |
| ⇧z⇧z (pane)CloseActiveItem save_intent=save_all | |
| // Count support | |
| №1 (vim)Number 1 | |
| №2 (vim)Number 2 | |
| №3 (vim)Number 3 | |
| №4 (vim)Number 4 | |
| №5 (vim)Number 5 | |
| №6 (vim)Number 6 | |
| №7 (vim)Number 7 | |
| №8 (vim)Number 8 | |
| №9 (vim)Number 9 | |
| ⎈w⠀d (editor)GoToDefinitionSplit | |
| ⎈wgd (editor)GoToDefinitionSplit | |
| ⎈w⠀⦌ (editor)GoToDefinitionSplit | |
| ⎈w⎈⦌ (editor)GoToDefinitionSplit | |
| ⎈w⠀⇧d (editor)GoToTypeDefinitionSplit | |
| ⎈wg⇧d (editor)GoToTypeDefinitionSplit | |
| ⎈w⠀␠ (editor)OpenExcerptsSplit | |
| ⎈wg␠ (editor)OpenExcerptsSplit | |
| ⎈6 (pane)AlternateFile | |
| ⎈^ (pane)AlternateFile | |
| . (vim)Repeat | |
| } | |
| "vim_mode == normal || vim_mode == visual || vim_mode == operator" { | |
| ⦌⠀⦌ (vim)NextSectionStart | |
| ⦌⠀⦋ (vim)NextSectionEnd | |
| ⦋⠀⦋ (vim)PreviousSectionStart | |
| ⦋⠀⦌ (vim)PreviousSectionEnd | |
| ⦌⠀m (vim)NextMethodStart | |
| ⦌⇧m (vim)NextMethodEnd | |
| ⦋⠀m (vim)PreviousMethodStart | |
| ⦋⇧m (vim)PreviousMethodEnd | |
| ⦋⠀∗ (vim)PreviousComment | |
| ⦋⠀⁄ (vim)PreviousComment | |
| ⦌⠀∗ (vim)NextComment | |
| ⦌⠀⁄ (vim)NextComment | |
| ⦋⠀- (vim)PreviousLesserIndent | |
| ⦋⠀+ (vim)PreviousGreaterIndent | |
| ⦋⠀≗ (vim)PreviousSameIndent | |
| ⦌⠀- (vim)NextLesserIndent | |
| ⦌⠀+ (vim)NextGreaterIndent | |
| ⦌⠀≗ (vim)NextSameIndent | |
| ⦌⠀b (pane)ActivateNextItem | |
| ⦋⠀b (pane)ActivatePreviousItem | |
| ⦌⇧b (pane)ActivateLastItem | |
| ⦋⇧b (pane)ActivateItem 0 | |
| ⦌⠀␠ (vim)InsertEmptyLineBelow | |
| ⦋⠀␠ (vim)InsertEmptyLineAbove | |
| ⦋⠀e (editor)MoveLineUp | |
| ⦌⠀e (editor)MoveLineDown | |
| ⦋⠀f (workspace)FollowNextCollaborator | |
| ⦌⠀f (workspace)FollowNextCollaborator | |
| ⦌⇧⦌ (vim)UnmatchedForward char="}" | |
| ⦋⇧⦋ (vim)UnmatchedBackward char="{" | |
| ⦌⇧9 (vim)UnmatchedForward char=")" | |
| ⦋⇧0 (vim)UnmatchedBackward char="(" | |
| // Tree-Sitter related commands | |
| ⦋⠀x (vim)SelectLargerSyntaxNode | |
| ⦌⠀x (vim)SelectSmallerSyntaxNode | |
| } | |
| "vim_mode == normal" { | |
| i (vim)InsertBefore | |
| a (vim)InsertAfter | |
| ⎈⦋ (editor)Cancel | |
| ⇧; (command_palette)Toggle | |
| c (vim)PushChange | |
| ⇧c (vim)ChangeToEndOfLine | |
| d (vim)PushDelete | |
| ⌦ (vim)DeleteRight | |
| g⇧j (vim)JoinLinesNoWhitespace | |
| y (vim)PushYank | |
| ⇧y (vim)YankLine | |
| x (vim)DeleteRight | |
| ⇧x (vim)DeleteLeft | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| ⎈r (vim)Redo | |
| ⇧. (vim)PushIndent | |
| ⇧, (vim)PushOutdent | |
| ≗ (vim)PushAutoIndent | |
| ⇧1 (vim)PushShellCommand | |
| g⠀u (vim)PushLowercase | |
| g⇧u (vim)PushUppercase | |
| g⠀~ (vim)PushOppositeCase | |
| g⇧⁄ (vim)PushRot13 | |
| /-g⇧⁄ (vim)PushRot47 | |
| g⠀w (vim)PushRewrap | |
| g⠀q (vim)PushRewrap | |
| ⎀ (vim)InsertBefore | |
| ⦌⠀d (editor)GoToDiagnostic | |
| ⦋⠀d (editor)GoToPreviousDiagnostic | |
| ⦌⠀c (editor)GoToHunk | |
| ⦋⠀c (editor)GoToPreviousHunk | |
| g⠀c (vim)PushToggleComments | |
| } | |
| "VimControl && VimCount" { | |
| №0 (vim)Number 0 | |
| ⇧; (vim)CountCommand | |
| ⇧5 (vim)GoToPercentage | |
| } | |
| "vim_mode == visual" { | |
| ⇧; (vim)VisualCommand | |
| u (vim)ConvertToLowerCase | |
| ⇧u (vim)ConvertToUpperCase | |
| ⇧o (vim)OtherEnd | |
| o (vim)OtherEndRowAware | |
| d (vim)VisualDelete | |
| x (vim)VisualDelete | |
| ⌦ (vim)VisualDelete | |
| ⇧d (vim)VisualDeleteLine | |
| ⇧x (vim)VisualDeleteLine | |
| y (vim)VisualYank | |
| ⇧y (vim)VisualYankLine | |
| p (vim)Paste | |
| ⇧p (vim)Paste preserve_clipboard=#true | |
| c (vim)Substitute | |
| s (vim)Substitute | |
| ⇧r (vim)SubstituteLine | |
| ⇧s (vim)SubstituteLine | |
| ~ (vim)ChangeCase | |
| ⇧8 (vim)MoveToNext partial_word=#true | |
| ⇧3 (vim)MoveToPrevious partial_word=#true | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| g⎈a (vim)Increment step=#true | |
| g⎈x (vim)Decrement step=#true | |
| ⇧i (vim)InsertBefore | |
| ⇧a (vim)InsertAfter | |
| g⇧i (vim)VisualInsertFirstNonWhitespace | |
| g⇧a (vim)VisualInsertEndOfLine | |
| ⇧j (vim)JoinLines | |
| g⇧j (vim)JoinLinesNoWhitespace | |
| r (vim)PushReplace | |
| ⎈c (vim)SwitchToNormalMode | |
| ⎈⦋ (vim)SwitchToNormalMode | |
| ⎋ (vim)SwitchToNormalMode | |
| ⇧. (vim)Indent | |
| ⇧, (vim)Outdent | |
| ≗ (vim)AutoIndent | |
| ⇧1 (vim)ShellCommand | |
| i (vim)PushObject around=#false | |
| a (vim)PushObject around=#true | |
| g⇧r (vim)Paste preserve_clipboard=#true | |
| g⠀c (vim)ToggleComments | |
| g⠀q (vim)Rewrap | |
| g⠀w (vim)Rewrap | |
| g⇧⁄ (vim)ConvertToRot13 | |
| /-g⇧⁄ (vim)ConvertToRot47 | |
| ⇧' (vim)PushRegister | |
| } | |
| "vim_mode == helix_select" { | |
| v (vim)NormalBefore | |
| ; (vim)HelixCollapseSelection | |
| ~ (vim)ChangeCase | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| ⇧j (vim)JoinLines | |
| i (vim)InsertBefore | |
| a (vim)InsertAfter | |
| p (vim)Paste | |
| u (vim)Undo | |
| r (vim)PushReplace | |
| s (vim)Substitute | |
| ⎈⇞ (pane)ActivatePreviousItem | |
| ⎈⇟ (pane)ActivateNextItem | |
| . (vim)Repeat | |
| ⎇. (vim)RepeatFind | |
| } | |
| "vim_mode == insert" { | |
| ⎈⠀c (vim)NormalBefore | |
| ⎈⠀⦋ (vim)NormalBefore | |
| ⎋ (vim)NormalBefore | |
| ⎈x #null | |
| ⎈x⎈o (editor)ShowCompletions | |
| ⎈x⎈a (assistant)InlineAssist //zed specific | |
| ⎈x⎈c (editor)ShowEditPrediction //zed specific | |
| ⎈x⎈l (editor)ToggleCodeActions //zed specific | |
| ⎈x⎈z (editor)Cancel | |
| ⎈x⎈e (vim)LineDown | |
| ⎈x⎈y (vim)LineUp | |
| ⎈⠀w (editor)DeleteToPreviousWordStart ignore_newlines=#false ignore_brackets=#false | |
| ⎈⠀u (editor)DeleteToBeginningOfLine | |
| ⎈⠀t (vim)Indent | |
| ⎈⠀d (vim)Outdent | |
| ⎈⠀y (vim)InsertFromAbove | |
| ⎈⠀e (vim)InsertFromBelow | |
| ⎈⠀k (vim)PushDigraph | |
| ⎈⠀v (vim)PushLiteral | |
| ⎈⇧v (editor)Paste // *very* similar to ⎈v in vim, but ⎈⇧v on linux is the typical shortcut for paste when ⎈v is already in use | |
| ⎈⠀q (vim)PushLiteral | |
| ⎈⇧q (vim)PushLiteral | |
| ⎈⠀r (vim)PushRegister | |
| ⎀ (vim)ToggleReplace | |
| ⎈⠀o (vim)TemporaryNormal | |
| ⎈⠀s (editor)ShowSignatureHelp | |
| } | |
| "showing_completions" { | |
| ⎈d (vim)ScrollDown | |
| ⎈u (vim)ScrollUp | |
| ⎈e (vim)LineDown | |
| ⎈y (vim)LineUp | |
| } | |
| "(vim_mode == normal || vim_mode == helix_normal) && !menu" { | |
| ⎋ (editor)Cancel | |
| ⇧d (vim)DeleteToEndOfLine | |
| ⇧j (vim)JoinLines | |
| ⇧y (vim)YankLine | |
| ⇧i (vim)InsertFirstNonWhitespace | |
| ⇧a (vim)InsertEndOfLine | |
| o (vim)InsertLineBelow | |
| ⇧o (vim)InsertLineAbove | |
| ~ (vim)ChangeCase | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| p (vim)Paste | |
| ⇧p (vim)Paste before=#true | |
| u (vim)Undo | |
| ⇧u (vim)UndoLastLine | |
| r (vim)PushReplace | |
| s (vim)Substitute | |
| ⇧s (vim)SubstituteLine | |
| ⇧' (vim)PushRegister | |
| ⎈⇟ (pane)ActivateNextItem | |
| ⎈⇞ (pane)ActivatePreviousItem | |
| } | |
| "vim_mode == helix_normal && !menu" { | |
| i (vim)HelixInsert | |
| a (vim)HelixAppend | |
| ⎈⦋ (editor)Cancel | |
| } | |
| "(vim_mode == helix_normal || vim_mode == helix_select) && !menu" { | |
| // Movement | |
| h (vim)WrappingLeft | |
| ◀ (vim)WrappingLeft | |
| l (vim)WrappingRight | |
| ▶ (vim)WrappingRight | |
| t (vim)PushFindForward before=#true multiline=#true | |
| f (vim)PushFindForward before=#false multiline=#true | |
| ⇧t (vim)PushFindBackward after=#true multiline=#true | |
| ⇧f (vim)PushFindBackward after=#false multiline=#true | |
| ⎇. (vim)RepeatFind | |
| // Changes | |
| ⇧r (editor)Paste | |
| ` (vim)ConvertToLowerCase | |
| ⎇` (vim)ConvertToUpperCase | |
| ⎀ (vim)InsertBefore | |
| ⇧u (editor)Redo | |
| ⎈r (vim)Redo | |
| y (vim)HelixYank | |
| p (vim)HelixPaste | |
| ⇧p (vim)HelixPaste before=#true | |
| ⇧. (vim)Indent | |
| ⇧, (vim)Outdent | |
| ≗ (vim)AutoIndent | |
| d (vim)HelixDelete | |
| c (vim)HelixSubstitute | |
| ⎇c (vim)HelixSubstituteNoYank | |
| // Selection manipulation | |
| s (vim)HelixSelectRegex | |
| ⎇s (editor)SplitSelectionIntoLines keep_selections=#true | |
| ; (vim)HelixCollapseSelection | |
| ⎇; (vim)OtherEnd | |
| , (vim)HelixKeepNewestSelection | |
| ⇧c (vim)HelixDuplicateBelow | |
| ⇧⎇c (vim)HelixDuplicateAbove | |
| ⇧5 (editor)SelectAll | |
| x (vim)HelixSelectLine | |
| ⇧x (editor)SelectLine | |
| ⎈c (editor)ToggleComments | |
| ⎇o (editor)SelectLargerSyntaxNode | |
| ⎇i (editor)SelectSmallerSyntaxNode | |
| ⎇p (editor)SelectPreviousSyntaxNode | |
| ⎇n (editor)SelectNextSyntaxNode | |
| // Goto mode | |
| ge (vim)EndOfDocument | |
| gh (vim)StartOfLine | |
| gl (vim)EndOfLine | |
| gs (vim)FirstNonWhitespace //g⠀s ≝ is ␠⠀s | |
| gt (vim)WindowTop | |
| gc (vim)WindowMiddle | |
| gb (vim)WindowBottom | |
| gr (editor)FindAllReferences //zed specific | |
| gn (pane)ActivateNextItem | |
| ⇧l (pane)ActivateNextItem | |
| gp (pane)ActivatePreviousItem | |
| ⇧h (pane)ActivatePreviousItem | |
| g. (vim)HelixGotoLastModification | |
| // Window mode | |
| ␠wh (workspace)ActivatePaneLeft | |
| ␠wl (workspace)ActivatePaneRight | |
| ␠wk (workspace)ActivatePaneUp | |
| ␠wj (workspace)ActivatePaneDown | |
| ␠wq (pane)CloseActiveItem | |
| ␠ws (pane)SplitRight | |
| ␠wr (pane)SplitRight | |
| ␠wv (pane)SplitDown | |
| ␠wd (pane)SplitDown | |
| // Space mode | |
| ␠⠀f (file_finder)Toggle | |
| ␠⠀k (editor)Hover | |
| ␠⠀s (outline)Toggle | |
| ␠⇧s (project_symbols)Toggle | |
| ␠⠀d (editor)GoToDiagnostic | |
| ␠⠀r (editor)Rename | |
| ␠⠀a (editor)ToggleCodeActions | |
| ␠⠀h (editor)SelectAllMatches | |
| ␠⠀c (editor)ToggleComments | |
| ␠⠀p (editor)Paste | |
| ␠⠀y (editor)Copy | |
| // Other | |
| ⇧; (command_palette)Toggle | |
| m (vim)PushHelixMatch | |
| ⦌ (vim)PushHelixNext around=#true | |
| ⦋ (vim)PushHelixPrevious around=#true | |
| gq (vim)PushRewrap | |
| gw (vim)PushRewrap | |
| /-⭾ (pane)ActivateNextItem | |
| /-⇧⭾ (pane)ActivatePrevItem | |
| } | |
| "vim_mode == insert && !(showing_code_actions || showing_completions)" { | |
| ⎈p (editor)ShowWordCompletions | |
| ⎈n (editor)ShowWordCompletions | |
| } | |
| "(vim_mode == insert || vim_mode == normal) && showing_signature_help && !showing_completions" { | |
| ⎈p (editor)SignatureHelpPrevious | |
| ⎈n (editor)SignatureHelpNext | |
| } | |
| "vim_mode == replace" { | |
| ⎈c (vim)NormalBefore | |
| ⎈⦋ (vim)NormalBefore | |
| ⎋ (vim)NormalBefore | |
| ⎈k (vim)PushDigraph | |
| ⎈v (vim)PushLiteral | |
| ⎈⇧v (editor)Paste // *very* similar to ⎈v in vim, but ⎈⇧v on linux is the typical shortcut for paste when ⎈v is already in use. | |
| ⎈q (vim)PushLiteral | |
| ⎈⇧q (vim)PushLiteral | |
| ⌫ (vim)UndoReplace | |
| ⭾ (vim)Tab | |
| ⏎ (vim)Enter | |
| ⎀ (vim)InsertBefore | |
| } | |
| "vim_mode == waiting" { | |
| ⭾ (vim)Tab | |
| ⏎ (vim)Enter | |
| ⎈c (vim)ClearOperators | |
| ⎈⦋ (vim)ClearOperators | |
| ⎋ (vim)ClearOperators | |
| ⎈k (vim)PushDigraph | |
| ⎈v (vim)PushLiteral | |
| ⎈q (vim)PushLiteral | |
| } | |
| "Editor && vim_mode == waiting && (vim_operator == ys || vim_operator == cs)" { | |
| ⎋ (vim)SwitchToNormalMode | |
| } | |
| "vim_mode == operator" { | |
| ⎈c (vim)ClearOperators | |
| ⎈⦋ (vim)ClearOperators | |
| ⎋ (vim)ClearOperators | |
| gc (vim)Comment | |
| } | |
| "vim_operator == a || vim_operator == i || vim_operator == cs || vim_operator == helix_next || vim_operator == helix_previous" { | |
| w (vim)Word | |
| ⇧w (vim)Word ignore_punctuation=#true | |
| // Subword TextObject | |
| /-w (vim)Subword | |
| /-⇧w (vim)Subword ignore_punctuation=#true | |
| t (vim)Tag | |
| s (vim)Sentence | |
| p (vim)Paragraph | |
| ' (vim)Quotes | |
| ` (vim)BackQuotes | |
| ⇧' (vim)DoubleQuotes | |
| /-q (vim)AnyQuotes | |
| q (vim)MiniQuotes | |
| ⇧⧵ (vim)VerticalBars | |
| ⇧9 (vim)Parentheses opening=#true | |
| ⇧0 (vim)Parentheses | |
| b (vim)Parentheses | |
| /-b (vim)AnyBrackets | |
| /-b (vim)MiniBrackets | |
| ⦋ (vim)SquareBrackets opening=#true | |
| ⦌ (vim)SquareBrackets | |
| r (vim)SquareBrackets | |
| ⇧⦋ (vim)CurlyBrackets opening=#true | |
| ⇧⦌ (vim)CurlyBrackets | |
| ⇧b (vim)CurlyBrackets | |
| ⇧, (vim)AngleBrackets opening=#true | |
| ⇧. (vim)AngleBrackets | |
| a (vim)Argument | |
| i (vim)IndentObj | |
| ⇧i (vim)IndentObj include_below=#true | |
| f (vim)Method | |
| c (vim)Class | |
| e (vim)EntireFile | |
| } | |
| "vim_operator == helix_m" { | |
| m (vim)Matching | |
| } | |
| "vim_operator == helix_next" { | |
| z (vim)NextSectionStart | |
| ⇧z (vim)NextSectionEnd | |
| ⇧8 (vim)NextComment | |
| ⁄ (vim)NextComment | |
| - (vim)NextLesserIndent | |
| ⇧≗ (vim)NextGreaterIndent | |
| ≗ (vim)NextSameIndent | |
| b (pane)ActivateNextItem | |
| ⇧b (pane)ActivateLastItem | |
| x (editor)SelectSmallerSyntaxNode | |
| d (editor)GoToDiagnostic | |
| c (editor)GoToHunk | |
| ␠ (vim)InsertEmptyLineBelow | |
| } | |
| "vim_operator == helix_previous" { | |
| z (vim)PreviousSectionStart | |
| ⇧z (vim)PreviousSectionEnd | |
| ⇧8 (vim)PreviousComment | |
| ⁄ (vim)PreviousComment | |
| - (vim)PreviousLesserIndent | |
| ⇧≗ (vim)PreviousGreaterIndent | |
| ≗ (vim)PreviousSameIndent | |
| b (pane)ActivatePreviousItem | |
| ⇧b (pane)ActivateItem 0 | |
| x (editor)SelectLargerSyntaxNode | |
| d (editor)GoToPreviousDiagnostic | |
| c (editor)GoToPreviousHunk | |
| ␠ (vim)InsertEmptyLineAbove | |
| } | |
| "vim_operator == c" { | |
| c (vim)CurrentLine | |
| x (vim)Exchange | |
| d (editor)Rename //zed specific | |
| s (vim)PushChangeSurrounds | |
| } | |
| "vim_operator == d" { | |
| d (vim)CurrentLine | |
| s (vim)PushDeleteSurrounds | |
| v (vim)PushForcedMotion //d⠀v | |
| o (editor)ToggleSelectedDiffHunks //d⠀o | |
| ⇧o (git)ToggleStaged | |
| p (git)Restore //d⠀p | |
| u (git)StageAndNext //d⠀u | |
| ⇧u (git)UnstageAndNext //d⠀⇧u | |
| } | |
| "vim_operator == gu" {g⠀u (vim)CurrentLine; u (vim)CurrentLine} | |
| "vim_operator == gU" {g⇧u (vim)CurrentLine; ⇧u (vim)CurrentLine} | |
| "vim_operator == g~" {g⇧` (vim)CurrentLine; ⇧` (vim)CurrentLine} | |
| "vim_operator == g?" {g⇧⁄ (vim)CurrentLine; ⇧⁄ (vim)CurrentLine} | |
| "vim_operator == gq" {g⠀q (vim)CurrentLine; q (vim)CurrentLine | |
| g⠀w (vim)CurrentLine; w (vim)CurrentLine} | |
| "vim_operator == y" { y (vim)CurrentLine | |
| v (vim)PushForcedMotion | |
| s (vim)PushAddSurrounds} | |
| "vim_operator == ys" { s (vim)CurrentLine} | |
| "vim_operator == >" {⇧. (vim)CurrentLine} | |
| "vim_operator == <" {⇧, (vim)CurrentLine} | |
| "vim_operator == eq" {≗ (vim)CurrentLine} | |
| "vim_operator == sh" {⇧1 (vim)CurrentLine} | |
| "vim_operator == gc" { c (vim)CurrentLine} | |
| "vim_operator == gR" { r (vim)CurrentLine; ⇧r (vim)CurrentLine} | |
| "vim_operator == cx" { x (vim)CurrentLine; c (vim)ClearExchange} | |
| "vim_mode == literal" { | |
| ⎈@ (vim)Literal ⎈@ "\u{0000}" | |
| ⎈a (vim)Literal ⎈a "\u{0001}" | |
| ⎈b (vim)Literal ⎈b "\u{0002}" | |
| ⎈c (vim)Literal ⎈c "\u{0003}" | |
| ⎈d (vim)Literal ⎈d "\u{0004}" | |
| ⎈e (vim)Literal ⎈e "\u{0005}" | |
| ⎈f (vim)Literal ⎈f "\u{0006}" | |
| ⎈g (vim)Literal ⎈g "\u{0007}" | |
| ⎈h (vim)Literal ⎈h "\u{0008}" | |
| ⎈i (vim)Literal ⎈i "\u{0009}" | |
| ⎈j (vim)Literal ⎈j "\u{000A}" | |
| ⎈k (vim)Literal ⎈k "\u{000B}" | |
| ⎈l (vim)Literal ⎈l "\u{000C}" | |
| ⎈m (vim)Literal ⎈m "\u{000D}" | |
| ⎈n (vim)Literal ⎈n "\u{000E}" | |
| ⎈o (vim)Literal ⎈o "\u{000F}" | |
| ⎈p (vim)Literal ⎈p "\u{0010}" | |
| ⎈q (vim)Literal ⎈q "\u{0011}" | |
| ⎈r (vim)Literal ⎈r "\u{0012}" | |
| ⎈s (vim)Literal ⎈s "\u{0013}" | |
| ⎈t (vim)Literal ⎈t "\u{0014}" | |
| ⎈u (vim)Literal ⎈u "\u{0015}" | |
| ⎈v (vim)Literal ⎈v "\u{0016}" | |
| ⎈w (vim)Literal ⎈w "\u{0017}" | |
| ⎈x (vim)Literal ⎈x "\u{0018}" | |
| ⎈y (vim)Literal ⎈y "\u{0019}" | |
| ⎈z (vim)Literal ⎈z "\u{001A}" | |
| ⎈⦋ (vim)Literal "⎈[" "\u{001B}" | |
| ⎈⧵ (vim)Literal #"⎈\"# "\u{001C}" | |
| ⎈⦌ (vim)Literal "⎈]" "\u{001D}" | |
| ⎈^ (vim)Literal ⎈^ "\u{001E}" | |
| ⎈_ (vim)Literal ⎈_ "\u{001F}" | |
| ⎋ (vim)Literal escape "\u{001B}" | |
| ⏎ (vim)Literal enter "\u{000D}" | |
| ⭾ (vim)Literal tab "\u{0009}" | |
| // Zed extensions . | |
| ⌫ (vim)Literal backspace "\u{0008}" | |
| ⌦ (vim)Literal delete "\u{007F} " | |
| } | |
| "BufferSearchBar && !in_replace" { | |
| ⏎ (vim)SearchSubmit | |
| ⎋ (buffer_search)Dismiss | |
| } | |
| "VimControl && !menu || !Editor && !Terminal" { | |
| // window related minor mode (⎈w X) | |
| ⎈w #null | |
| ⎈w⠀◀ (workspace)ActivatePaneLeft | |
| ⎈w⠀▶ (workspace)ActivatePaneRight | |
| ⎈w⠀▲ (workspace)ActivatePaneUp | |
| ⎈w⠀▼ (workspace)ActivatePaneDown | |
| ⎈w⎈h (workspace)ActivatePaneLeft | |
| ⎈w⎈l (workspace)ActivatePaneRight | |
| ⎈w⎈k (workspace)ActivatePaneUp | |
| ⎈w⎈j (workspace)ActivatePaneDown | |
| ⎈w⠀h (workspace)ActivatePaneLeft | |
| ⎈w⠀l (workspace)ActivatePaneRight | |
| ⎈w⠀k (workspace)ActivatePaneUp | |
| ⎈w⠀j (workspace)ActivatePaneDown | |
| ⎈w⇧◀ (workspace)SwapPaneLeft | |
| ⎈w⇧▶ (workspace)SwapPaneRight | |
| ⎈w⇧▲ (workspace)SwapPaneUp | |
| ⎈w⇧▼ (workspace)SwapPaneDown | |
| ⎈w⇧h (workspace)MovePaneLeft | |
| ⎈w⇧l (workspace)MovePaneRight | |
| ⎈w⇧k (workspace)MovePaneUp | |
| ⎈w⇧j (workspace)MovePaneDown | |
| ⎈w⇧, (vim)ResizePaneRight | |
| ⎈w⇧. (vim)ResizePaneLeft | |
| ⎈w⠀- (vim)ResizePaneDown | |
| ⎈w⠀+ (vim)ResizePaneUp | |
| ⎈w⇧- (vim)MaximizePane | |
| ⎈w⠀≗ (vim)ResetPaneSizes | |
| ⎈w⠀g⠀t (pane)ActivateNextItem | |
| ⎈w⎈g⠀t (pane)ActivateNextItem | |
| ⎈w⠀g⇧t (pane)ActivatePreviousItem | |
| ⎈w⎈g⇧t (pane)ActivatePreviousItem | |
| ⎈w⠀w (workspace)ActivateNextPane | |
| ⎈w⎈w (workspace)ActivateNextPane | |
| ⎈w⠀p (workspace)ActivatePreviousPane | |
| ⎈w⎈p (workspace)ActivatePreviousPane | |
| ⎈w⇧w (workspace)ActivatePreviousPane | |
| ⎈w⎈⇧w (workspace)ActivatePreviousPane | |
| ⎈w⎈v (pane)SplitVertical | |
| ⎈w⠀v (pane)SplitVertical | |
| ⎈w⇧s (pane)SplitHorizontal | |
| ⎈w⎈s (pane)SplitHorizontal | |
| ⎈w⠀s (pane)SplitHorizontal | |
| ⎈w⎈c (pane)CloseActiveItem | |
| ⎈w⠀c (pane)CloseActiveItem | |
| ⎈w⎈q (pane)CloseActiveItem | |
| ⎈w⠀q (pane)CloseActiveItem | |
| ⎈w⎈a (pane)CloseAllItems | |
| ⎈w⠀a (pane)CloseAllItems | |
| ⎈w⎈o (workspace)CloseInactiveTabsAndPanes | |
| ⎈w⠀o (workspace)CloseInactiveTabsAndPanes | |
| ⎈w⎈n (workspace)NewFileSplitHorizontal | |
| ⎈w⠀n (workspace)NewFileSplitHorizontal | |
| g⠀t (vim)GoToTab | |
| g⇧t (vim)GoToPreviousTab | |
| } | |
| "!Editor && !Terminal" { | |
| ⇧; (command_palette)Toggle | |
| g⁄ (pane)DeploySearch | |
| } | |
| "ProjectPanel && not_editing" { | |
| // netrw compatibility | |
| ⇧; (command_palette)Toggle | |
| ⇧5 (project_panel)NewFile | |
| ⁄ (project_panel)NewSearchInDirectory | |
| d (project_panel)NewDirectory | |
| ⏎ (project_panel)OpenPermanent | |
| ⎋ (vim)ToggleProjectPanelFocus | |
| h (project_panel)CollapseSelectedEntry | |
| j (vim)MenuSelectNext | |
| k (vim)MenuSelectPrevious | |
| ▼ (vim)MenuSelectNext | |
| ▲ (vim)MenuSelectPrevious | |
| l (project_panel)ExpandSelectedEntry | |
| ⇧d (project_panel)Delete | |
| ⇧r (project_panel)Rename | |
| t (project_panel)OpenPermanent | |
| v (project_panel)OpenSplitVertical | |
| o (project_panel)OpenSplitHorizontal | |
| p (project_panel)Open | |
| x (project_panel)RevealInFileManager | |
| s (workspace)OpenWithSystem | |
| zd (project_panel)CompareMarkedFiles | |
| ⦌c (project_panel)SelectNextGitEntry | |
| ⦋c (project_panel)SelectPrevGitEntry | |
| ⦌d (project_panel)SelectNextDiagnostic | |
| ⦋d (project_panel)SelectPrevDiagnostic | |
| ⇧⦌ (project_panel)SelectNextDirectory | |
| ⇧⦋ (project_panel)SelectPrevDirectory | |
| ⇧g (menu)SelectLast | |
| gg (menu)SelectFirst | |
| - (project_panel)SelectParent | |
| ⎈u (project_panel)ScrollUp | |
| ⎈d (project_panel)ScrollDown | |
| zt (project_panel)ScrollCursorTop | |
| zz (project_panel)ScrollCursorCenter | |
| zb (project_panel)ScrollCursorBottom | |
| №0 (vim)Number 0 | |
| №1 (vim)Number 1 | |
| №2 (vim)Number 2 | |
| №3 (vim)Number 3 | |
| №4 (vim)Number 4 | |
| №5 (vim)Number 5 | |
| №6 (vim)Number 6 | |
| №7 (vim)Number 7 | |
| №8 (vim)Number 8 | |
| №9 (vim)Number 9 | |
| "OutlinePanel && not_editing" { | |
| j (menu)SelectNext | |
| k (menu)SelectPrevious | |
| ⇧g (menu)SelectLast | |
| gg (menu)SelectFirst | |
| } | |
| "GitPanel && ChangesList" { | |
| k (menu)SelectPrevious | |
| j (menu)SelectNext | |
| gg (menu)SelectFirst | |
| ⇧g (menu)SelectLast | |
| gf (menu)Confirm | |
| i (git_panel)FocusEditor | |
| x (git)ToggleStaged | |
| ⇧x (git)StageAll | |
| gx (git)StageRange | |
| ⇧u (git)UnstageAll | |
| } | |
| "Editor && mode == auto_height && VimControl" { | |
| // TODO: Implement search | |
| ⁄ #null | |
| ⇧8 #null | |
| ⇧3 #null | |
| ⇧⁄ #null | |
| n #null | |
| ⇧n #null | |
| } | |
| "Picker > Editor" { | |
| ⎈h (editor)Backspace | |
| ⎈u (editor)DeleteToBeginningOfLine | |
| ⎈w (editor)DeleteToPreviousWordStart | |
| } | |
| "GitCommit > Editor && VimControl && vim_mode == normal" { | |
| ⎈c (menu)Cancel | |
| ⎋ (menu)Cancel | |
| } | |
| "Editor && edit_prediction"\ | |
| // identical to the binding in the base keymap, but the vim bindings above to `(vim)Tab` shadow it, so it needs to be bound again. */ | |
| ⭾ (editor)AcceptEditPrediction | |
| } | |
| "MessageEditor > Editor && VimControl" { | |
| ⏎ (agent)Chat | |
| } | |
| "os != macos && Editor && edit_prediction_conflict" { | |
| ⎇l (editor)AcceptEditPrediction // provided as an alternative to tab/⎇tab. and will be displayed in the UI. This is because ⎇tab may not be available, as it is often used for window switching on Linux and Windows. | |
| } | |
| /* | |
| ≗⠀;⧵⦋⦌␈⌫␡⌦⇧◆❖⌘⎇⎈⎀⏎⭾ | |
| "Find and Dequote" | |
| [^\n]"[^\\] | |
| \t\"([^\s\[\]\;\/]+) ([^\s\[\]\;\/]+)\" | |
| \t\"([^\s\[\]\;\/\"⦌+) ([^\s\[\]\;\/\"⦌+) ([^\s\[\]\;\/\"⦌+)\" | |
| Types (\w+):: \($1\) | |
| */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| "VimControl && !menu" { | |
| // '⠀' braile non-whitespace used mostly for alignment | |
| // ⦋⠀b (pane)ActivatePreviousItem | |
| // ⦌⇧b (pane)ActivateLastItem | |
| // since symbols resolve conflicts like is 'ge' '>' or 'g e'? It's '⇧,' or '<' | |
| // But could also resolve ambiguity and force a sequence | |
| /-_ {(vim)PushObject around=#false; (vim)Up} // command sequence = nested nodes | |
| i (vim)PushObject around=#false | |
| a (vim)PushObject around=#true | |
| ⌫ (vim)WrappingLeft | |
| ▲ (vim)Up | |
| k (vim)Up | |
| ▼ (vim)Down | |
| j (vim)Down | |
| ⎈j (vim)Down | |
| ◀ (vim)Left | |
| h (vim)Left | |
| ▶ (vim)Right | |
| l (vim)Right | |
| ⎈m (vim)NextLineStart | |
| ⇧≗ (vim)NextLineStart | |
| ⏎ (vim)NextLineStart | |
| - (vim)PreviousLineStart | |
| ⭾ (vim)Tab | |
| ⇧⭾ (vim)Tab | |
| ␠ (vim)WrappingRight | |
| ⇥ (vim)EndOfLine | |
| ⇧4 (vim)EndOfLine | |
| ⇧6 (vim)FirstNonWhiteSpace | |
| ⇧- (vim)StartOfLineDownward | |
| g⇧- (vim)EndOfLineDownward | |
| ⇧g (vim)EndOfDocument | |
| ⇧⦋ (vim)StartOfParagraph | |
| ⇧⦌ (vim)EndOfParagraph | |
| ⇧9 (vim)SentenceBackward | |
| ⇧0 (vim)SentenceForward | |
| ⇧⧵ (vim)GoToColumn | |
| // Word motions | |
| w (vim)NextWordStart | |
| e (vim)NextWordEnd | |
| b (vim)PreviousWordStart | |
| ge (vim)PreviousWordEnd | |
| // Subword motions | |
| /- w (vim)NextSubwordStart | |
| /- b (vim)PreviousSubwordStart | |
| /- e (vim)NextSubwordEnd | |
| /-ge (vim)PreviousSubwordEnd | |
| ⇧w (vim)NextWordStart ignore_punctuation=#true | |
| ⇧e (vim)NextWordEnd ignore_punctuation=#true | |
| ⇧b (vim)PreviousWordStart ignore_punctuation=#true | |
| g⇧e (vim)PreviousWordEnd ignore_punctuation=#true | |
| ⁄ (vim)Search | |
| g⁄ (pane)DeploySearch | |
| ⇧⁄ (vim)Search backwards=#true | |
| ⇧8 (vim)MoveToNext | |
| ⇧3 (vim)MoveToPrevious | |
| n (vim)MoveToNextMatch | |
| ⇧n (vim)MoveToPreviousMatch | |
| ⇧5 (vim)Matching | |
| f (vim)PushFindForward before=#false multiline=#false | |
| t (vim)PushFindForward before=#true multiline=#false | |
| ⇧f (vim)PushFindBackward after=#false multiline=#false | |
| ⇧t (vim)PushFindBackward after=#true multiline=#false | |
| m (vim)PushMark | |
| ' (vim)PushJump line=#true | |
| ` (vim)PushJump line=#false | |
| ; (vim)RepeatFind | |
| , (vim)RepeatFindReversed | |
| ⎈o (pane)GoBack | |
| ⎈i (pane)GoForward | |
| ⎈⦌ (editor)GoToDefinition | |
| ⎋ (vim)SwitchToNormalMode | |
| ⎈⦋ (vim)SwitchToNormalMode | |
| v (vim)ToggleVisual | |
| ⇧v (vim)ToggleVisualLine | |
| ⎈g (vim)ShowLocation | |
| ⎈v (vim)ToggleVisualBlock | |
| ⎈q (vim)ToggleVisualBlock | |
| ⇧k (editor)Hover | |
| ⇧r (vim)ToggleReplace | |
| №0 (vim)StartOfLine | |
| ⇤ (vim)StartOfLine | |
| ⎈f (vim)PageDown | |
| ⇟ (vim)PageDown | |
| ⎈b (vim)PageUp | |
| ⇞ (vim)PageUp | |
| ⎈d (vim)ScrollDown | |
| ⎈u (vim)ScrollUp | |
| ⎈e (vim)LineDown | |
| ⎈y (vim)LineUp | |
| // g minor mode | |
| g⇧r (vim)PushReplaceWithRegister | |
| g⠀rn (editor)Rename | |
| g⠀rr (editor)FindAllReferences | |
| g⠀ri (editor)GoToImplementation | |
| g⠀ra (editor)ToggleCodeActions | |
| g⠀g (vim)StartOfDocument | |
| g⠀h (editor)Hover | |
| g⇧b (editor)BlameHover | |
| g⠀d (editor)GoToDefinition | |
| g⇧d (editor)GoToDeclaration | |
| g⠀y (editor)GoToTypeDefinition | |
| g⇧i (editor)GoToImplementation | |
| g⠀x (editor)OpenUrl | |
| g⠀f (editor)OpenSelectedFilename | |
| g⠀n (vim)SelectNextMatch | |
| g⇧n (vim)SelectPreviousMatch | |
| g⠀l (vim)SelectNext | |
| g⇧l (vim)SelectPrevious | |
| g⇧. (editor)SelectNext replace_newest=#true | |
| g⇧, (editor)SelectPrevious replace_newest=#true | |
| g⠀a (editor)SelectAllMatches | |
| g⠀s (outline)Toggle | |
| g⇧o (outline)Toggle | |
| g⇧s (project_symbols)Toggle | |
| g⠀. (editor)ToggleCodeActions //zed specific | |
| g⇧a (editor)FindAllReferences //zed specific | |
| g⠀␠ (editor)OpenExcerpts //zed specific | |
| g⇧8 (vim)MoveToNext partial_word=#true | |
| g⇧3 (vim)MoveToPrevious partial_word=#true | |
| g⠀j (vim)Down display_lines=#true | |
| g⠀▼ (vim)Down display_lines=#true | |
| g⠀k (vim)Up display_lines=#true | |
| g⠀▲ (vim)Up display_lines=#true | |
| g⇧4 (vim)EndOfLine display_lines=#true | |
| g⠀⇤ (vim)EndOfLine display_lines=#true | |
| g⠀0 (vim)StartOfLine display_lines=#true | |
| g⇥ (vim)StartOfLine display_lines=#true | |
| g⇧m (vim)MiddleOfLine display_lines=#true | |
| g⠀^ (vim)FirstNonWhiteSpace display_lines=#true | |
| g⠀v (vim)RestoreVisualSelection | |
| g⠀⦌ (editor)GoToDiagnostic | |
| g⠀⦋ (editor)GoToPreviousDiagnostic | |
| g⠀i (vim)InsertAtPrevious | |
| g⠀, (vim)ChangeListNewer | |
| g⠀; (vim)ChangeListOlder | |
| ⇧h (vim)WindowTop | |
| ⇧m (vim)WindowMiddle | |
| ⇧l (vim)WindowBottom | |
| q (vim)ToggleRecord | |
| ⇧q (vim)ReplayLastRecording | |
| ⇧2 (vim)PushReplayRegister | |
| // z minor mode | |
| z⠀⏎ (workspace)SendKeystrokes "z t ^" | |
| z⠀- (workspace)SendKeystrokes "z b ^" | |
| z⠀^ (workspace)SendKeystrokes "⇧h k z b ^" | |
| z⠀+ (workspace)SendKeystrokes "⇧l j z t ^" | |
| z⠀t (editor)ScrollCursorTop | |
| z⠀z (editor)ScrollCursorCenter | |
| z⠀. (workspace)SendKeystrokes "z z ^" | |
| z⠀b (editor)ScrollCursorBottom | |
| z⠀a (editor)ToggleFold | |
| z⇧a (editor)ToggleFoldRecursive | |
| z⠀c (editor)Fold | |
| z⇧c (editor)FoldRecursive | |
| z⠀o (editor)UnfoldLines | |
| z⇧o (editor)UnfoldRecursive | |
| z⠀f (editor)FoldSelectedRanges | |
| z⇧m (editor)FoldAll | |
| z⇧r (editor)UnfoldAll | |
| z⠀l (vim)ColumnRight | |
| z⠀h (vim)ColumnLeft | |
| z⇧l (vim)HalfPageRight | |
| z⇧h (vim)HalfPageLeft | |
| ⇧z⇧q (pane)CloseActiveItem save_intent=skip | |
| ⇧z⇧z (pane)CloseActiveItem save_intent=save_all | |
| // Count support | |
| №1 (vim)Number 1 | |
| №2 (vim)Number 2 | |
| №3 (vim)Number 3 | |
| №4 (vim)Number 4 | |
| №5 (vim)Number 5 | |
| №6 (vim)Number 6 | |
| №7 (vim)Number 7 | |
| №8 (vim)Number 8 | |
| №9 (vim)Number 9 | |
| ⎈w⠀d (editor)GoToDefinitionSplit | |
| ⎈wgd (editor)GoToDefinitionSplit | |
| ⎈w⠀⦌ (editor)GoToDefinitionSplit | |
| ⎈w⎈⦌ (editor)GoToDefinitionSplit | |
| ⎈w⠀⇧d (editor)GoToTypeDefinitionSplit | |
| ⎈wg⇧d (editor)GoToTypeDefinitionSplit | |
| ⎈w⠀␠ (editor)OpenExcerptsSplit | |
| ⎈wg␠ (editor)OpenExcerptsSplit | |
| ⎈6 (pane)AlternateFile | |
| ⎈^ (pane)AlternateFile | |
| . (vim)Repeat | |
| } | |
| "vim_mode == normal || vim_mode == visual || vim_mode == operator" { | |
| ⦌⠀⦌ (vim)NextSectionStart | |
| ⦌⠀⦋ (vim)NextSectionEnd | |
| ⦋⠀⦋ (vim)PreviousSectionStart | |
| ⦋⠀⦌ (vim)PreviousSectionEnd | |
| ⦌⠀m (vim)NextMethodStart | |
| ⦌⇧m (vim)NextMethodEnd | |
| ⦋⠀m (vim)PreviousMethodStart | |
| ⦋⇧m (vim)PreviousMethodEnd | |
| ⦋⠀∗ (vim)PreviousComment | |
| ⦋⠀⁄ (vim)PreviousComment | |
| ⦌⠀∗ (vim)NextComment | |
| ⦌⠀⁄ (vim)NextComment | |
| ⦋⠀- (vim)PreviousLesserIndent | |
| ⦋⠀+ (vim)PreviousGreaterIndent | |
| ⦋⠀≗ (vim)PreviousSameIndent | |
| ⦌⠀- (vim)NextLesserIndent | |
| ⦌⠀+ (vim)NextGreaterIndent | |
| ⦌⠀≗ (vim)NextSameIndent | |
| ⦌⠀b (pane)ActivateNextItem | |
| ⦋⠀b (pane)ActivatePreviousItem | |
| ⦌⇧b (pane)ActivateLastItem | |
| ⦋⇧b (pane)ActivateItem 0 | |
| ⦌⠀␠ (vim)InsertEmptyLineBelow | |
| ⦋⠀␠ (vim)InsertEmptyLineAbove | |
| ⦋⠀e (editor)MoveLineUp | |
| ⦌⠀e (editor)MoveLineDown | |
| ⦋⠀f (workspace)FollowNextCollaborator | |
| ⦌⠀f (workspace)FollowNextCollaborator | |
| ⦌⇧⦌ (vim)UnmatchedForward char="}" | |
| ⦋⇧⦋ (vim)UnmatchedBackward char="{" | |
| ⦌⇧9 (vim)UnmatchedForward char=")" | |
| ⦋⇧0 (vim)UnmatchedBackward char="(" | |
| // Tree-Sitter related commands | |
| ⦋⠀x (vim)SelectLargerSyntaxNode | |
| ⦌⠀x (vim)SelectSmallerSyntaxNode | |
| } | |
| "vim_mode == normal" { | |
| i (vim)InsertBefore | |
| a (vim)InsertAfter | |
| ⎈⦋ (editor)Cancel | |
| ⇧; (command_palette)Toggle | |
| c (vim)PushChange | |
| ⇧c (vim)ChangeToEndOfLine | |
| d (vim)PushDelete | |
| ⌦ (vim)DeleteRight | |
| g⇧j (vim)JoinLinesNoWhitespace | |
| y (vim)PushYank | |
| ⇧y (vim)YankLine | |
| x (vim)DeleteRight | |
| ⇧x (vim)DeleteLeft | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| ⎈r (vim)Redo | |
| ⇧. (vim)PushIndent | |
| ⇧, (vim)PushOutdent | |
| ≗ (vim)PushAutoIndent | |
| ⇧1 (vim)PushShellCommand | |
| g⠀u (vim)PushLowercase | |
| g⇧u (vim)PushUppercase | |
| g⠀~ (vim)PushOppositeCase | |
| g⇧⁄ (vim)PushRot13 | |
| /-g⇧⁄ (vim)PushRot47 | |
| g⠀w (vim)PushRewrap | |
| g⠀q (vim)PushRewrap | |
| ⎀ (vim)InsertBefore | |
| ⦌⠀d (editor)GoToDiagnostic | |
| ⦋⠀d (editor)GoToPreviousDiagnostic | |
| ⦌⠀c (editor)GoToHunk | |
| ⦋⠀c (editor)GoToPreviousHunk | |
| g⠀c (vim)PushToggleComments | |
| } | |
| "VimControl && VimCount" { | |
| №0 (vim)Number 0 | |
| ⇧; (vim)CountCommand | |
| ⇧5 (vim)GoToPercentage | |
| } | |
| "vim_mode == visual" { | |
| ⇧; (vim)VisualCommand | |
| u (vim)ConvertToLowerCase | |
| ⇧u (vim)ConvertToUpperCase | |
| ⇧o (vim)OtherEnd | |
| o (vim)OtherEndRowAware | |
| d (vim)VisualDelete | |
| x (vim)VisualDelete | |
| ⌦ (vim)VisualDelete | |
| ⇧d (vim)VisualDeleteLine | |
| ⇧x (vim)VisualDeleteLine | |
| y (vim)VisualYank | |
| ⇧y (vim)VisualYankLine | |
| p (vim)Paste | |
| ⇧p (vim)Paste preserve_clipboard=#true | |
| c (vim)Substitute | |
| s (vim)Substitute | |
| ⇧r (vim)SubstituteLine | |
| ⇧s (vim)SubstituteLine | |
| ~ (vim)ChangeCase | |
| ⇧8 (vim)MoveToNext partial_word=#true | |
| ⇧3 (vim)MoveToPrevious partial_word=#true | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| g⎈a (vim)Increment step=#true | |
| g⎈x (vim)Decrement step=#true | |
| ⇧i (vim)InsertBefore | |
| ⇧a (vim)InsertAfter | |
| g⇧i (vim)VisualInsertFirstNonWhitespace | |
| g⇧a (vim)VisualInsertEndOfLine | |
| ⇧j (vim)JoinLines | |
| g⇧j (vim)JoinLinesNoWhitespace | |
| r (vim)PushReplace | |
| ⎈c (vim)SwitchToNormalMode | |
| ⎈⦋ (vim)SwitchToNormalMode | |
| ⎋ (vim)SwitchToNormalMode | |
| ⇧. (vim)Indent | |
| ⇧, (vim)Outdent | |
| ≗ (vim)AutoIndent | |
| ⇧1 (vim)ShellCommand | |
| i (vim)PushObject around=#false | |
| a (vim)PushObject around=#true | |
| g⇧r (vim)Paste preserve_clipboard=#true | |
| g⠀c (vim)ToggleComments | |
| g⠀q (vim)Rewrap | |
| g⠀w (vim)Rewrap | |
| g⇧⁄ (vim)ConvertToRot13 | |
| /-g⇧⁄ (vim)ConvertToRot47 | |
| ⇧' (vim)PushRegister | |
| } | |
| "vim_mode == helix_select" { | |
| v (vim)NormalBefore | |
| ; (vim)HelixCollapseSelection | |
| ~ (vim)ChangeCase | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| ⇧j (vim)JoinLines | |
| i (vim)InsertBefore | |
| a (vim)InsertAfter | |
| p (vim)Paste | |
| u (vim)Undo | |
| r (vim)PushReplace | |
| s (vim)Substitute | |
| ⎈⇞ (pane)ActivatePreviousItem | |
| ⎈⇟ (pane)ActivateNextItem | |
| . (vim)Repeat | |
| ⎇. (vim)RepeatFind | |
| } | |
| "vim_mode == insert" { | |
| ⎈⠀c (vim)NormalBefore | |
| ⎈⠀⦋ (vim)NormalBefore | |
| ⎋ (vim)NormalBefore | |
| ⎈x #null | |
| ⎈x⎈o (editor)ShowCompletions | |
| ⎈x⎈a (assistant)InlineAssist //zed specific | |
| ⎈x⎈c (editor)ShowEditPrediction //zed specific | |
| ⎈x⎈l (editor)ToggleCodeActions //zed specific | |
| ⎈x⎈z (editor)Cancel | |
| ⎈x⎈e (vim)LineDown | |
| ⎈x⎈y (vim)LineUp | |
| ⎈⠀w (editor)DeleteToPreviousWordStart ignore_newlines=#false ignore_brackets=#false | |
| ⎈⠀u (editor)DeleteToBeginningOfLine | |
| ⎈⠀t (vim)Indent | |
| ⎈⠀d (vim)Outdent | |
| ⎈⠀y (vim)InsertFromAbove | |
| ⎈⠀e (vim)InsertFromBelow | |
| ⎈⠀k (vim)PushDigraph | |
| ⎈⠀v (vim)PushLiteral | |
| ⎈⇧v (editor)Paste // *very* similar to ⎈v in vim, but ⎈⇧v on linux is the typical shortcut for paste when ⎈v is already in use | |
| ⎈⠀q (vim)PushLiteral | |
| ⎈⇧q (vim)PushLiteral | |
| ⎈⠀r (vim)PushRegister | |
| ⎀ (vim)ToggleReplace | |
| ⎈⠀o (vim)TemporaryNormal | |
| ⎈⠀s (editor)ShowSignatureHelp | |
| } | |
| "showing_completions" { | |
| ⎈d (vim)ScrollDown | |
| ⎈u (vim)ScrollUp | |
| ⎈e (vim)LineDown | |
| ⎈y (vim)LineUp | |
| } | |
| "(vim_mode == normal || vim_mode == helix_normal) && !menu" { | |
| ⎋ (editor)Cancel | |
| ⇧d (vim)DeleteToEndOfLine | |
| ⇧j (vim)JoinLines | |
| ⇧y (vim)YankLine | |
| ⇧i (vim)InsertFirstNonWhitespace | |
| ⇧a (vim)InsertEndOfLine | |
| o (vim)InsertLineBelow | |
| ⇧o (vim)InsertLineAbove | |
| ~ (vim)ChangeCase | |
| ⎈a (vim)Increment | |
| ⎈x (vim)Decrement | |
| p (vim)Paste | |
| ⇧p (vim)Paste before=#true | |
| u (vim)Undo | |
| ⇧u (vim)UndoLastLine | |
| r (vim)PushReplace | |
| s (vim)Substitute | |
| ⇧s (vim)SubstituteLine | |
| ⇧' (vim)PushRegister | |
| ⎈⇟ (pane)ActivateNextItem | |
| ⎈⇞ (pane)ActivatePreviousItem | |
| } | |
| "vim_mode == helix_normal && !menu" { | |
| i (vim)HelixInsert | |
| a (vim)HelixAppend | |
| ⎈⦋ (editor)Cancel | |
| } | |
| "(vim_mode == helix_normal || vim_mode == helix_select) && !menu" { | |
| // Movement | |
| h (vim)WrappingLeft | |
| ◀ (vim)WrappingLeft | |
| l (vim)WrappingRight | |
| ▶ (vim)WrappingRight | |
| t (vim)PushFindForward before=#true multiline=#true | |
| f (vim)PushFindForward before=#false multiline=#true | |
| ⇧t (vim)PushFindBackward after=#true multiline=#true | |
| ⇧f (vim)PushFindBackward after=#false multiline=#true | |
| ⎇. (vim)RepeatFind | |
| // Changes | |
| ⇧r (editor)Paste | |
| ` (vim)ConvertToLowerCase | |
| ⎇` (vim)ConvertToUpperCase | |
| ⎀ (vim)InsertBefore | |
| ⇧u (editor)Redo | |
| ⎈r (vim)Redo | |
| y (vim)HelixYank | |
| p (vim)HelixPaste | |
| ⇧p (vim)HelixPaste before=#true | |
| ⇧. (vim)Indent | |
| ⇧, (vim)Outdent | |
| ≗ (vim)AutoIndent | |
| d (vim)HelixDelete | |
| c (vim)HelixSubstitute | |
| ⎇c (vim)HelixSubstituteNoYank | |
| // Selection manipulation | |
| s (vim)HelixSelectRegex | |
| ⎇s (editor)SplitSelectionIntoLines keep_selections=#true | |
| ; (vim)HelixCollapseSelection | |
| ⎇; (vim)OtherEnd | |
| , (vim)HelixKeepNewestSelection | |
| ⇧c (vim)HelixDuplicateBelow | |
| ⇧⎇c (vim)HelixDuplicateAbove | |
| ⇧5 (editor)SelectAll | |
| x (vim)HelixSelectLine | |
| ⇧x (editor)SelectLine | |
| ⎈c (editor)ToggleComments | |
| ⎇o (editor)SelectLargerSyntaxNode | |
| ⎇i (editor)SelectSmallerSyntaxNode | |
| ⎇p (editor)SelectPreviousSyntaxNode | |
| ⎇n (editor)SelectNextSyntaxNode | |
| // Goto mode | |
| ge (vim)EndOfDocument | |
| gh (vim)StartOfLine | |
| gl (vim)EndOfLine | |
| gs (vim)FirstNonWhitespace //g⠀s ≝ is ␠⠀s | |
| gt (vim)WindowTop | |
| gc (vim)WindowMiddle | |
| gb (vim)WindowBottom | |
| gr (editor)FindAllReferences //zed specific | |
| gn (pane)ActivateNextItem | |
| ⇧l (pane)ActivateNextItem | |
| gp (pane)ActivatePreviousItem | |
| ⇧h (pane)ActivatePreviousItem | |
| g. (vim)HelixGotoLastModification | |
| // Window mode | |
| ␠wh (workspace)ActivatePaneLeft | |
| ␠wl (workspace)ActivatePaneRight | |
| ␠wk (workspace)ActivatePaneUp | |
| ␠wj (workspace)ActivatePaneDown | |
| ␠wq (pane)CloseActiveItem | |
| ␠ws (pane)SplitRight | |
| ␠wr (pane)SplitRight | |
| ␠wv (pane)SplitDown | |
| ␠wd (pane)SplitDown | |
| // Space mode | |
| ␠⠀f (file_finder)Toggle | |
| ␠⠀k (editor)Hover | |
| ␠⠀s (outline)Toggle | |
| ␠⇧s (project_symbols)Toggle | |
| ␠⠀d (editor)GoToDiagnostic | |
| ␠⠀r (editor)Rename | |
| ␠⠀a (editor)ToggleCodeActions | |
| ␠⠀h (editor)SelectAllMatches | |
| ␠⠀c (editor)ToggleComments | |
| ␠⠀p (editor)Paste | |
| ␠⠀y (editor)Copy | |
| // Other | |
| ⇧; (command_palette)Toggle | |
| m (vim)PushHelixMatch | |
| ⦌ (vim)PushHelixNext around=#true | |
| ⦋ (vim)PushHelixPrevious around=#true | |
| gq (vim)PushRewrap | |
| gw (vim)PushRewrap | |
| /-⭾ (pane)ActivateNextItem | |
| /-⇧⭾ (pane)ActivatePrevItem | |
| } | |
| "vim_mode == insert && !(showing_code_actions || showing_completions)" { | |
| ⎈p (editor)ShowWordCompletions | |
| ⎈n (editor)ShowWordCompletions | |
| } | |
| "(vim_mode == insert || vim_mode == normal) && showing_signature_help && !showing_completions" { | |
| ⎈p (editor)SignatureHelpPrevious | |
| ⎈n (editor)SignatureHelpNext | |
| } | |
| "vim_mode == replace" { | |
| ⎈c (vim)NormalBefore | |
| ⎈⦋ (vim)NormalBefore | |
| ⎋ (vim)NormalBefore | |
| ⎈k (vim)PushDigraph | |
| ⎈v (vim)PushLiteral | |
| ⎈⇧v (editor)Paste // *very* similar to ⎈v in vim, but ⎈⇧v on linux is the typical shortcut for paste when ⎈v is already in use. | |
| ⎈q (vim)PushLiteral | |
| ⎈⇧q (vim)PushLiteral | |
| ⌫ (vim)UndoReplace | |
| ⭾ (vim)Tab | |
| ⏎ (vim)Enter | |
| ⎀ (vim)InsertBefore | |
| } | |
| "vim_mode == waiting" { | |
| ⭾ (vim)Tab | |
| ⏎ (vim)Enter | |
| ⎈c (vim)ClearOperators | |
| ⎈⦋ (vim)ClearOperators | |
| ⎋ (vim)ClearOperators | |
| ⎈k (vim)PushDigraph | |
| ⎈v (vim)PushLiteral | |
| ⎈q (vim)PushLiteral | |
| } | |
| "Editor && vim_mode == waiting && (vim_operator == ys || vim_operator == cs)" { | |
| ⎋ (vim)SwitchToNormalMode | |
| } | |
| "vim_mode == operator" { | |
| ⎈c (vim)ClearOperators | |
| ⎈⦋ (vim)ClearOperators | |
| ⎋ (vim)ClearOperators | |
| gc (vim)Comment | |
| } | |
| "vim_operator == a || vim_operator == i || vim_operator == cs || vim_operator == helix_next || vim_operator == helix_previous" { | |
| w (vim)Word | |
| ⇧w (vim)Word ignore_punctuation=#true | |
| // Subword TextObject | |
| /-w (vim)Subword | |
| /-⇧w (vim)Subword ignore_punctuation=#true | |
| t (vim)Tag | |
| s (vim)Sentence | |
| p (vim)Paragraph | |
| ' (vim)Quotes | |
| ` (vim)BackQuotes | |
| ⇧' (vim)DoubleQuotes | |
| /-q (vim)AnyQuotes | |
| q (vim)MiniQuotes | |
| ⇧⧵ (vim)VerticalBars | |
| ⇧9 (vim)Parentheses opening=#true | |
| ⇧0 (vim)Parentheses | |
| b (vim)Parentheses | |
| /-b (vim)AnyBrackets | |
| /-b (vim)MiniBrackets | |
| ⦋ (vim)SquareBrackets opening=#true | |
| ⦌ (vim)SquareBrackets | |
| r (vim)SquareBrackets | |
| ⇧⦋ (vim)CurlyBrackets opening=#true | |
| ⇧⦌ (vim)CurlyBrackets | |
| ⇧b (vim)CurlyBrackets | |
| ⇧, (vim)AngleBrackets opening=#true | |
| ⇧. (vim)AngleBrackets | |
| a (vim)Argument | |
| i (vim)IndentObj | |
| ⇧i (vim)IndentObj include_below=#true | |
| f (vim)Method | |
| c (vim)Class | |
| e (vim)EntireFile | |
| } | |
| "vim_operator == helix_m" { | |
| m (vim)Matching | |
| } | |
| "vim_operator == helix_next" { | |
| z (vim)NextSectionStart | |
| ⇧z (vim)NextSectionEnd | |
| ⇧8 (vim)NextComment | |
| ⁄ (vim)NextComment | |
| - (vim)NextLesserIndent | |
| ⇧≗ (vim)NextGreaterIndent | |
| ≗ (vim)NextSameIndent | |
| b (pane)ActivateNextItem | |
| ⇧b (pane)ActivateLastItem | |
| x (editor)SelectSmallerSyntaxNode | |
| d (editor)GoToDiagnostic | |
| c (editor)GoToHunk | |
| ␠ (vim)InsertEmptyLineBelow | |
| } | |
| "vim_operator == helix_previous" { | |
| z (vim)PreviousSectionStart | |
| ⇧z (vim)PreviousSectionEnd | |
| ⇧8 (vim)PreviousComment | |
| ⁄ (vim)PreviousComment | |
| - (vim)PreviousLesserIndent | |
| ⇧≗ (vim)PreviousGreaterIndent | |
| ≗ (vim)PreviousSameIndent | |
| b (pane)ActivatePreviousItem | |
| ⇧b (pane)ActivateItem 0 | |
| x (editor)SelectLargerSyntaxNode | |
| d (editor)GoToPreviousDiagnostic | |
| c (editor)GoToPreviousHunk | |
| ␠ (vim)InsertEmptyLineAbove | |
| } | |
| "vim_operator == c" { | |
| c (vim)CurrentLine | |
| x (vim)Exchange | |
| d (editor)Rename //zed specific | |
| s (vim)PushChangeSurrounds | |
| } | |
| "vim_operator == d" { | |
| d (vim)CurrentLine | |
| s (vim)PushDeleteSurrounds | |
| v (vim)PushForcedMotion //d⠀v | |
| o (editor)ToggleSelectedDiffHunks //d⠀o | |
| ⇧o (git)ToggleStaged | |
| p (git)Restore //d⠀p | |
| u (git)StageAndNext //d⠀u | |
| ⇧u (git)UnstageAndNext //d⠀⇧u | |
| } | |
| "vim_operator == gu" {g⠀u (vim)CurrentLine; u (vim)CurrentLine} | |
| "vim_operator == gU" {g⇧u (vim)CurrentLine; ⇧u (vim)CurrentLine} | |
| "vim_operator == g~" {g⇧` (vim)CurrentLine; ⇧` (vim)CurrentLine} | |
| "vim_operator == g?" {g⇧⁄ (vim)CurrentLine; ⇧⁄ (vim)CurrentLine} | |
| "vim_operator == gq" {g⠀q (vim)CurrentLine; q (vim)CurrentLine | |
| g⠀w (vim)CurrentLine; w (vim)CurrentLine} | |
| "vim_operator == y" { y (vim)CurrentLine | |
| v (vim)PushForcedMotion | |
| s (vim)PushAddSurrounds} | |
| "vim_operator == ys" { s (vim)CurrentLine} | |
| "vim_operator == >" {⇧. (vim)CurrentLine} | |
| "vim_operator == <" {⇧, (vim)CurrentLine} | |
| "vim_operator == eq" {≗ (vim)CurrentLine} | |
| "vim_operator == sh" {⇧1 (vim)CurrentLine} | |
| "vim_operator == gc" { c (vim)CurrentLine} | |
| "vim_operator == gR" { r (vim)CurrentLine; ⇧r (vim)CurrentLine} | |
| "vim_operator == cx" { x (vim)CurrentLine; c (vim)ClearExchange} | |
| "vim_mode == literal" { | |
| ⎈@ (vim)Literal ⎈@ "\u{0000}" | |
| ⎈a (vim)Literal ⎈a "\u{0001}" | |
| ⎈b (vim)Literal ⎈b "\u{0002}" | |
| ⎈c (vim)Literal ⎈c "\u{0003}" | |
| ⎈d (vim)Literal ⎈d "\u{0004}" | |
| ⎈e (vim)Literal ⎈e "\u{0005}" | |
| ⎈f (vim)Literal ⎈f "\u{0006}" | |
| ⎈g (vim)Literal ⎈g "\u{0007}" | |
| ⎈h (vim)Literal ⎈h "\u{0008}" | |
| ⎈i (vim)Literal ⎈i "\u{0009}" | |
| ⎈j (vim)Literal ⎈j "\u{000A}" | |
| ⎈k (vim)Literal ⎈k "\u{000B}" | |
| ⎈l (vim)Literal ⎈l "\u{000C}" | |
| ⎈m (vim)Literal ⎈m "\u{000D}" | |
| ⎈n (vim)Literal ⎈n "\u{000E}" | |
| ⎈o (vim)Literal ⎈o "\u{000F}" | |
| ⎈p (vim)Literal ⎈p "\u{0010}" | |
| ⎈q (vim)Literal ⎈q "\u{0011}" | |
| ⎈r (vim)Literal ⎈r "\u{0012}" | |
| ⎈s (vim)Literal ⎈s "\u{0013}" | |
| ⎈t (vim)Literal ⎈t "\u{0014}" | |
| ⎈u (vim)Literal ⎈u "\u{0015}" | |
| ⎈v (vim)Literal ⎈v "\u{0016}" | |
| ⎈w (vim)Literal ⎈w "\u{0017}" | |
| ⎈x (vim)Literal ⎈x "\u{0018}" | |
| ⎈y (vim)Literal ⎈y "\u{0019}" | |
| ⎈z (vim)Literal ⎈z "\u{001A}" | |
| ⎈⦋ (vim)Literal "⎈[" "\u{001B}" | |
| ⎈⧵ (vim)Literal #"⎈\"# "\u{001C}" | |
| ⎈⦌ (vim)Literal "⎈]" "\u{001D}" | |
| ⎈^ (vim)Literal ⎈^ "\u{001E}" | |
| ⎈_ (vim)Literal ⎈_ "\u{001F}" | |
| ⎋ (vim)Literal escape "\u{001B}" | |
| ⏎ (vim)Literal enter "\u{000D}" | |
| ⭾ (vim)Literal tab "\u{0009}" | |
| // Zed extensions . | |
| ⌫ (vim)Literal backspace "\u{0008}" | |
| ⌦ (vim)Literal delete "\u{007F} " | |
| } | |
| "BufferSearchBar && !in_replace" { | |
| ⏎ (vim)SearchSubmit | |
| ⎋ (buffer_search)Dismiss | |
| } | |
| "VimControl && !menu || !Editor && !Terminal" { | |
| // window related minor mode (⎈w X) | |
| ⎈w #null | |
| ⎈w⠀◀ (workspace)ActivatePaneLeft | |
| ⎈w⠀▶ (workspace)ActivatePaneRight | |
| ⎈w⠀▲ (workspace)ActivatePaneUp | |
| ⎈w⠀▼ (workspace)ActivatePaneDown | |
| ⎈w⎈h (workspace)ActivatePaneLeft | |
| ⎈w⎈l (workspace)ActivatePaneRight | |
| ⎈w⎈k (workspace)ActivatePaneUp | |
| ⎈w⎈j (workspace)ActivatePaneDown | |
| ⎈w⠀h (workspace)ActivatePaneLeft | |
| ⎈w⠀l (workspace)ActivatePaneRight | |
| ⎈w⠀k (workspace)ActivatePaneUp | |
| ⎈w⠀j (workspace)ActivatePaneDown | |
| ⎈w⇧◀ (workspace)SwapPaneLeft | |
| ⎈w⇧▶ (workspace)SwapPaneRight | |
| ⎈w⇧▲ (workspace)SwapPaneUp | |
| ⎈w⇧▼ (workspace)SwapPaneDown | |
| ⎈w⇧h (workspace)MovePaneLeft | |
| ⎈w⇧l (workspace)MovePaneRight | |
| ⎈w⇧k (workspace)MovePaneUp | |
| ⎈w⇧j (workspace)MovePaneDown | |
| ⎈w⇧, (vim)ResizePaneRight | |
| ⎈w⇧. (vim)ResizePaneLeft | |
| ⎈w⠀- (vim)ResizePaneDown | |
| ⎈w⠀+ (vim)ResizePaneUp | |
| ⎈w⇧- (vim)MaximizePane | |
| ⎈w⠀≗ (vim)ResetPaneSizes | |
| ⎈w⠀g⠀t (pane)ActivateNextItem | |
| ⎈w⎈g⠀t (pane)ActivateNextItem | |
| ⎈w⠀g⇧t (pane)ActivatePreviousItem | |
| ⎈w⎈g⇧t (pane)ActivatePreviousItem | |
| ⎈w⠀w (workspace)ActivateNextPane | |
| ⎈w⎈w (workspace)ActivateNextPane | |
| ⎈w⠀p (workspace)ActivatePreviousPane | |
| ⎈w⎈p (workspace)ActivatePreviousPane | |
| ⎈w⇧w (workspace)ActivatePreviousPane | |
| ⎈w⎈⇧w (workspace)ActivatePreviousPane | |
| ⎈w⎈v (pane)SplitVertical | |
| ⎈w⠀v (pane)SplitVertical | |
| ⎈w⇧s (pane)SplitHorizontal | |
| ⎈w⎈s (pane)SplitHorizontal | |
| ⎈w⠀s (pane)SplitHorizontal | |
| ⎈w⎈c (pane)CloseActiveItem | |
| ⎈w⠀c (pane)CloseActiveItem | |
| ⎈w⎈q (pane)CloseActiveItem | |
| ⎈w⠀q (pane)CloseActiveItem | |
| ⎈w⎈a (pane)CloseAllItems | |
| ⎈w⠀a (pane)CloseAllItems | |
| ⎈w⎈o (workspace)CloseInactiveTabsAndPanes | |
| ⎈w⠀o (workspace)CloseInactiveTabsAndPanes | |
| ⎈w⎈n (workspace)NewFileSplitHorizontal | |
| ⎈w⠀n (workspace)NewFileSplitHorizontal | |
| g⠀t (vim)GoToTab | |
| g⇧t (vim)GoToPreviousTab | |
| } | |
| "!Editor && !Terminal" { | |
| ⇧; (command_palette)Toggle | |
| g⁄ (pane)DeploySearch | |
| } | |
| "ProjectPanel && not_editing" { | |
| // netrw compatibility | |
| ⇧; (command_palette)Toggle | |
| ⇧5 (project_panel)NewFile | |
| ⁄ (project_panel)NewSearchInDirectory | |
| d (project_panel)NewDirectory | |
| ⏎ (project_panel)OpenPermanent | |
| ⎋ (vim)ToggleProjectPanelFocus | |
| h (project_panel)CollapseSelectedEntry | |
| j (vim)MenuSelectNext | |
| k (vim)MenuSelectPrevious | |
| ▼ (vim)MenuSelectNext | |
| ▲ (vim)MenuSelectPrevious | |
| l (project_panel)ExpandSelectedEntry | |
| ⇧d (project_panel)Delete | |
| ⇧r (project_panel)Rename | |
| t (project_panel)OpenPermanent | |
| v (project_panel)OpenSplitVertical | |
| o (project_panel)OpenSplitHorizontal | |
| p (project_panel)Open | |
| x (project_panel)RevealInFileManager | |
| s (workspace)OpenWithSystem | |
| zd (project_panel)CompareMarkedFiles | |
| ⦌c (project_panel)SelectNextGitEntry | |
| ⦋c (project_panel)SelectPrevGitEntry | |
| ⦌d (project_panel)SelectNextDiagnostic | |
| ⦋d (project_panel)SelectPrevDiagnostic | |
| ⇧⦌ (project_panel)SelectNextDirectory | |
| ⇧⦋ (project_panel)SelectPrevDirectory | |
| ⇧g (menu)SelectLast | |
| gg (menu)SelectFirst | |
| - (project_panel)SelectParent | |
| ⎈u (project_panel)ScrollUp | |
| ⎈d (project_panel)ScrollDown | |
| zt (project_panel)ScrollCursorTop | |
| zz (project_panel)ScrollCursorCenter | |
| zb (project_panel)ScrollCursorBottom | |
| №0 (vim)Number 0 | |
| №1 (vim)Number 1 | |
| №2 (vim)Number 2 | |
| №3 (vim)Number 3 | |
| №4 (vim)Number 4 | |
| №5 (vim)Number 5 | |
| №6 (vim)Number 6 | |
| №7 (vim)Number 7 | |
| №8 (vim)Number 8 | |
| №9 (vim)Number 9 | |
| "OutlinePanel && not_editing" { | |
| j (menu)SelectNext | |
| k (menu)SelectPrevious | |
| ⇧g (menu)SelectLast | |
| gg (menu)SelectFirst | |
| } | |
| "GitPanel && ChangesList" { | |
| k (menu)SelectPrevious | |
| j (menu)SelectNext | |
| gg (menu)SelectFirst | |
| ⇧g (menu)SelectLast | |
| gf (menu)Confirm | |
| i (git_panel)FocusEditor | |
| x (git)ToggleStaged | |
| ⇧x (git)StageAll | |
| gx (git)StageRange | |
| ⇧u (git)UnstageAll | |
| } | |
| "Editor && mode == auto_height && VimControl" { | |
| // TODO: Implement search | |
| ⁄ #null | |
| ⇧8 #null | |
| ⇧3 #null | |
| ⇧⁄ #null | |
| n #null | |
| ⇧n #null | |
| } | |
| "Picker > Editor" { | |
| ⎈h (editor)Backspace | |
| ⎈u (editor)DeleteToBeginningOfLine | |
| ⎈w (editor)DeleteToPreviousWordStart | |
| } | |
| "GitCommit > Editor && VimControl && vim_mode == normal" { | |
| ⎈c (menu)Cancel | |
| ⎋ (menu)Cancel | |
| } | |
| "Editor && edit_prediction"\ | |
| // identical to the binding in the base keymap, but the vim bindings above to `(vim)Tab` shadow it, so it needs to be bound again. */ | |
| ⭾ (editor)AcceptEditPrediction | |
| } | |
| "MessageEditor > Editor && VimControl" { | |
| ⏎ (agent)Chat | |
| } | |
| "os != macos && Editor && edit_prediction_conflict" { | |
| ⎇l (editor)AcceptEditPrediction // provided as an alternative to tab/⎇tab. and will be displayed in the UI. This is because ⎇tab may not be available, as it is often used for window switching on Linux and Windows. | |
| } | |
| /* | |
| ≗⠀;⧵⦋⦌␈⌫␡⌦⇧◆❖⌘⎇⎈⎀⏎⭾ | |
| "Find and Dequote" | |
| [^\n]"[^\\] | |
| \t\"([^\s\[\]\;\/]+) ([^\s\[\]\;\/]+)\" | |
| \t\"([^\s\[\]\;\/\"⦌+) ([^\s\[\]\;\/\"⦌+) ([^\s\[\]\;\/\"⦌+)\" | |
| Types (\w+):: \($1\) | |
| */ |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Original json https://github.com/zed-industries/zed/blob/main/assets/keymaps/vim.json