keymap.json (19114B)
1 // TODO: git, pane splits?, search (next, etc.), vim, project_panel 2 // For the most part, we use ALT as a modifier for application (Zed)-specific 3 // commands. In a few cases, we use CTRL instead of ALT for consistency with 4 // other applications (e.g., web browsers). 5 [ 6 // Zed application 7 { 8 // No "context" field means always active. 9 "bindings": { 10 // Confirm/cancel 11 "enter": "menu::Confirm", 12 "escape": "menu::Cancel", 13 14 // Buffer font size 15 "ctrl-alt-pageup": [ 16 "zed::IncreaseBufferFontSize", 17 { "persist": false }, 18 ], 19 "ctrl-alt-pagedown": [ 20 "zed::DecreaseBufferFontSize", 21 { "persist": false }, 22 ], 23 "ctrl-alt-home": ["zed::ResetBufferFontSize", { "persist": false }], 24 25 // UI font size 26 "ctrl-alt-shift-pageup": [ 27 "zed::IncreaseUiFontSize", 28 { "persist": false }, 29 ], 30 "ctrl-alt-shift-pagedown": [ 31 "zed::DecreaseUiFontSize", 32 { "persist": false }, 33 ], 34 "ctrl-alt-shift-home": [ 35 "zed::ResetUiFontSize", 36 { "persist": false }, 37 ], 38 39 // Keymap configuration 40 "f9": "zed::OpenKeymapFile", 41 "shift-f9": "zed::OpenDefaultKeymap", 42 "ctrl-f9": "vim::OpenDefaultKeymap", 43 "ctrl-shift-f9": "dev::OpenKeyContextView", 44 45 // Settings configuration 46 "f10": "zed::OpenSettingsFile", 47 "shift-f10": "zed::OpenDefaultSettings", 48 "ctrl-f10": "zed::OpenProjectSettingsFile", 49 50 // Fullscreen 51 "f11": "zed::ToggleFullScreen", 52 53 // Markdown 54 "alt-m": "markdown::OpenPreview", 55 }, 56 }, 57 58 // Menus 59 { 60 "context": "Picker || menu", 61 "bindings": { 62 // Navigation 63 "up": "menu::SelectPrevious", 64 "down": "menu::SelectNext", 65 "home": "menu::SelectFirst", 66 "end": "menu::SelectLast", 67 "pageup": "menu::SelectFirst", 68 "pagedown": "menu::SelectLast", 69 "tab": "menu::SelectNext", 70 "shift-tab": "menu::SelectPrevious", 71 }, 72 }, 73 74 { 75 "context": "Workspace", 76 "bindings": { 77 "alt-space": "command_palette::Toggle", 78 "alt-`": "workspace::ToggleZoom", 79 80 // Open new things 81 "ctrl-t": "workspace::NewFile", 82 "ctrl-n": "workspace::NewWindow", 83 "alt-t": "workspace::NewCenterTerminal", 84 "alt-f": "workspace::NewSearch", 85 "alt-p": "file_finder::Toggle", 86 87 // Activate panes 88 "ctrl-alt-up": "workspace::ActivatePaneUp", 89 "ctrl-alt-down": "workspace::ActivatePaneDown", 90 "ctrl-alt-left": "workspace::ActivatePaneLeft", 91 "ctrl-alt-right": "workspace::ActivatePaneRight", 92 93 // Move panes 94 "ctrl-alt-shift-up": "workspace::SwapPaneUp", 95 "ctrl-alt-shift-down": "workspace::SwapPaneDown", 96 "ctrl-alt-shift-left": "workspace::SwapPaneLeft", 97 "ctrl-alt-shift-right": "workspace::SwapPaneRight", 98 99 // Open/focus side panes 100 "alt-e": "project_panel::ToggleFocus", 101 "alt-g": "git_panel::ToggleFocus", 102 "alt-o": "outline_panel::ToggleFocus", 103 104 // Close side panes 105 // Ideally, alt-shift-g would only close the git panel and alt-shift-o 106 // would only close the outline panel, but this is the best we can get 107 // right now. 108 "alt-shift-e": "workspace::ToggleLeftDock", 109 "alt-shift-g": "workspace::ToggleRightDock", 110 "alt-shift-o": "workspace::ToggleRightDock", 111 }, 112 }, 113 114 { 115 "context": "Pane", 116 "bindings": { 117 // Activate tabs 118 "alt-1": ["pane::ActivateItem", 0], 119 "alt-2": ["pane::ActivateItem", 1], 120 "alt-3": ["pane::ActivateItem", 2], 121 "alt-4": ["pane::ActivateItem", 3], 122 "alt-5": ["pane::ActivateItem", 4], 123 "alt-6": ["pane::ActivateItem", 5], 124 "alt-7": ["pane::ActivateItem", 6], 125 "alt-8": ["pane::ActivateItem", 7], 126 "alt-left": "pane::ActivatePreviousItem", 127 "alt-right": "pane::ActivateNextItem", 128 129 // Move tabs 130 "alt-down": "pane::SwapItemLeft", 131 "alt-up": "pane::SwapItemRight", 132 133 // Close and reopen tabs 134 "ctrl-w": "pane::CloseActiveItem", 135 "ctrl-shift-t": "pane::ReopenClosedItem", 136 137 // Search 138 "alt-s": "project_search::ToggleFilters", 139 "alt-r": "search::ToggleRegex", 140 "alt-c": "search::ToggleCaseSensitive", 141 "alt-d": "search::ToggleReplace", 142 "alt-shift-d": "search::ReplaceNext", 143 "alt-ctrl-d": "search::ReplaceAll", 144 }, 145 }, 146 147 // Editor (multi-line or single-line) 148 { 149 "context": "Editor", 150 "bindings": { 151 // Navigation 152 "up": "editor::MoveUp", 153 "down": "editor::MoveDown", 154 "left": "editor::MoveLeft", 155 "right": "editor::MoveRight", 156 "home": [ 157 "editor::MoveToBeginningOfLine", 158 { "stop_at_soft_wraps": true, "stop_at_indent": true }, 159 ], 160 "end": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": true }], 161 "pageup": "editor::MovePageUp", 162 "pagedown": "editor::MovePageDown", 163 "ctrl-up": "editor::LineUp", 164 "ctrl-down": "editor::LineDown", 165 166 // Selections 167 "shift-up": "editor::SelectUp", 168 "shift-down": "editor::SelectDown", 169 "shift-left": "editor::SelectLeft", 170 "shift-right": "editor::SelectRight", 171 "shift-home": [ 172 "editor::SelectToBeginningOfLine", 173 { "stop_at_soft_wraps": true, "stop_at_indent": true }, 174 ], 175 "shift-end": [ 176 "editor::SelectToEndOfLine", 177 { "stop_at_soft_wraps": true }, 178 ], 179 "shift-pageup": "editor::SelectPageUp", 180 "shift-pagedown": "editor::SelectPageDown", 181 "ctrl-a": "editor::SelectAll", 182 183 "tab": "editor::Tab", 184 "shift-tab": "editor::Backtab", 185 "backspace": "editor::Backspace", 186 "shift-backspace": "editor::Backspace", 187 "delete": "editor::Delete", 188 189 "escape": "editor::Cancel", 190 "f2": "editor::Rename", 191 192 "ctrl-x": "editor::Cut", 193 "ctrl-c": "editor::Copy", 194 "ctrl-v": "editor::Paste", 195 196 "ctrl-z": "editor::Undo", 197 "ctrl-shift-z": "editor::Redo", 198 }, 199 }, 200 201 // Editor (multi-line) 202 { 203 "context": "Editor && mode == full", 204 "bindings": { 205 // Newlines 206 "enter": "editor::Newline", 207 "shift-enter": "editor::Newline", 208 "ctrl-enter": "editor::NewlineBelow", 209 "ctrl-shift-enter": "editor::NewlineAbove", 210 211 "ctrl-f": "buffer_search::Deploy", 212 }, 213 }, 214 215 { 216 "context": "Editor && renaming", 217 "bindings": { 218 "enter": "editor::ConfirmRename", 219 }, 220 }, 221 222 { 223 "context": "Editor && showing_completions", 224 "bindings": { 225 "enter": "editor::ConfirmCompletion", 226 }, 227 }, 228 229 { 230 "context": "Editor && (showing_code_actions || showing_completions)", 231 "bindings": { 232 "up": "editor::ContextMenuPrevious", 233 "down": "editor::ContextMenuNext", 234 "pageup": "editor::ContextMenuFirst", 235 "pagedown": "editor::ContextMenuLast", 236 }, 237 }, 238 239 // Git editor 240 { 241 "context": "GitCommit > Editor && mode == auto_height", 242 "bindings": { 243 "enter": "editor::Newline", 244 "ctrl-enter": "git::Commit", 245 "ctrl-shift-enter": "git::Amend", 246 }, 247 }, 248 249 { 250 // Currently, "VimControl" is an alias for "vim_mode == normal || 251 // vim_mode == visual || vim_mode == operator", but this could change. 252 "context": "VimControl && !menu", 253 "bindings": { 254 "up": ["vim::Up", { "display_lines": true }], 255 "shift-up": "editor::AddSelectionAbove", 256 "ctrl-up": "vim::LineUp", 257 "ctrl-shift-up": "editor::MoveLineUp", 258 259 "down": ["vim::Down", { "display_lines": true }], 260 "shift-down": "editor::AddSelectionBelow", 261 "ctrl-down": "vim::LineDown", 262 "ctrl-shift-down": "editor::MoveLineDown", 263 264 "left": "vim::Left", 265 "shift-left": null, // TODO 266 "ctrl-left": "vim::PreviousWordStart", 267 "ctrl-shift-left": "editor::SelectToPreviousWordStart", 268 269 "right": "vim::Right", 270 "shift-right": null, // TODO 271 "ctrl-right": "vim::NextWordStart", 272 "ctrl-shift-right": "editor::SelectToNextWordEnd", 273 274 "home": [ 275 "editor::MoveToBeginningOfLine", 276 { "stop_at_soft_wraps": true, "stop_at_indent": true }, 277 ], 278 "shift-home": null, 279 "ctrl-home": ["vim::StartOfLine", { "display_lines": false }], 280 "ctrl-shift-home": null, 281 282 "end": ["vim::EndOfLine", { "display_lines": true }], 283 "shift-end": null, 284 "ctrl-end": ["vim::EndOfLine", { "display_lines": false }], 285 "ctrl-shift-end": null, 286 287 "pageup": "vim::PageUp", 288 "shift-pageup": "vim::MoveToPrevious", 289 "ctrl-pageup": "vim::ScrollUp", 290 "ctrl-shift-pageup": "vim::StartOfDocument", 291 292 "pagedown": "vim::PageDown", 293 "shift-pagedown": "vim::MoveToNext", 294 "ctrl-pagedown": "vim::ScrollDown", 295 "ctrl-shift-pagedown": "vim::EndOfDocument", 296 297 "enter": "editor::NewlineBelow", 298 "shift-enter": "editor::NewlineAbove", 299 "ctrl-enter": null, 300 "ctrl-shift-enter": null, 301 302 "escape": "vim::SwitchToNormalMode", 303 "shift-escape": null, 304 "ctrl-escape": null, 305 "ctrl-shift-escape": null, 306 307 "insert": null, 308 "shift-insert": null, 309 "ctrl-insert": null, 310 "ctrl-shift-insert": null, 311 312 "delete": "vim::DeleteRight", 313 "shift-delete": null, 314 "ctrl-delete": null, 315 "ctrl-shift-delete": null, 316 317 "space": "vim::WrappingRight", 318 "shift-space": null, 319 "ctrl-space": null, 320 "shift-ctrl-space": null, 321 322 "backspace": "vim::WrappingLeft", 323 "shift-backspace": null, 324 "ctrl-backspace": null, 325 "shift-ctrl-backspace": null, 326 327 "tab": null, 328 "shift-tab": null, 329 "ctrl-tab": null, 330 "ctrl-shift-tab": null, 331 332 "0": ["vim::Number", 0], 333 ")": null, 334 "ctrl-0": null, 335 "ctrl-)": null, 336 337 "1": ["vim::Number", 1], 338 "!": null, 339 "ctrl-1": null, 340 "ctrl-!": null, 341 342 "2": ["vim::Number", 2], 343 "@": "vim::PushReplayRegister", 344 "ctrl-2": null, 345 "ctrl-@": null, 346 347 "3": ["vim::Number", 3], 348 "#": null, 349 "ctrl-3": null, 350 "ctrl-#": null, 351 352 "4": ["vim::Number", 4], 353 "$": null, 354 "ctrl-4": null, 355 "ctrl-$": null, 356 357 "5": ["vim::Number", 5], 358 "%": null, 359 "ctrl-5": null, 360 "ctrl-%": null, 361 362 "6": ["vim::Number", 6], 363 "^": null, 364 "ctrl-6": null, 365 "ctrl-^": null, 366 367 "7": ["vim::Number", 7], 368 "&": null, 369 "ctrl-7": null, 370 "ctrl-&": null, 371 372 "8": ["vim::Number", 8], 373 "*": null, 374 "ctrl-8": null, 375 "ctrl-*": null, 376 377 "9": ["vim::Number", 9], 378 "(": null, 379 "ctrl-9": null, 380 "ctrl-(": null, 381 382 "a": ["vim::PushObject", { "around": true }], 383 "A": null, 384 "ctrl-a": null, 385 "ctrl-A": null, 386 387 "b": null, 388 "B": null, 389 "ctrl-b": null, 390 "ctrl-B": null, 391 392 "c": null, 393 "C": null, 394 "ctrl-c": null, 395 "ctrl-C": null, 396 397 "d": null, 398 "D": null, 399 "ctrl-d": null, 400 "ctrl-D": null, 401 402 "e": "vim::NextWordEnd", 403 "E": "vim::PreviousWordEnd", 404 "ctrl-e": "vim::NextSubwordEnd", 405 "ctrl-E": "vim::PreviousSubwordEnd", 406 407 "f": [ 408 "vim::PushFindForward", 409 { "before": false, "multiline": false }, 410 ], 411 "F": [ 412 "vim::PushFindBackward", 413 { "after": false, "multiline": false }, 414 ], 415 "ctrl-f": "vim::RepeatFind", 416 "ctrl-F": "vim::RepeatFindReversed", 417 418 "g": [ 419 "vim::PushFindForward", 420 { "before": true, "multiline": false }, 421 ], 422 "G": [ 423 "vim::PushFindBackward", 424 { "after": true, "multiline": false }, 425 ], 426 "ctrl-g": "vim::RepeatFind", 427 "ctrl-G": "vim::RepeatFindReversed", 428 429 "h": "editor::Hover", 430 "H": null, 431 "ctrl-h": null, 432 "ctrl-H": null, 433 434 "i": ["vim::PushObject", { "around": false }], 435 "I": null, 436 "ctrl-i": null, 437 "ctrl-I": null, 438 439 "j": "vim::JoinLines", 440 "J": "vim::JoinLinesNoWhitespace", 441 "ctrl-j": null, 442 "ctrl-J": null, 443 444 "k": null, 445 "K": null, 446 "ctrl-k": null, 447 "ctrl-K": null, 448 449 "l": null, 450 "L": null, 451 "ctrl-l": null, 452 "ctrl-L": null, 453 454 "m": null, 455 "M": null, 456 "ctrl-m": null, 457 "ctrl-M": null, 458 459 "n": "vim::MoveToNextMatch", 460 "N": "vim::MoveToPreviousMatch", 461 "ctrl-n": "workspace::NewWindow", 462 "ctrl-N": null, 463 464 "o": null, 465 "O": null, 466 "ctrl-o": null, 467 "ctrl-O": null, 468 469 "p": null, 470 "P": null, 471 "ctrl-p": null, 472 "ctrl-P": null, 473 474 "q": "vim::ToggleRecord", 475 "Q": "vim::ReplayLastRecording", 476 "ctrl-q": null, 477 "ctrl-Q": null, 478 479 "r": null, 480 "R": null, 481 "ctrl-r": null, 482 "ctrl-R": null, 483 484 "s": null, 485 "S": null, 486 "ctrl-s": null, 487 "ctrl-S": null, 488 489 "t": null, 490 "T": null, 491 "ctrl-t": "workspace::NewFile", 492 "ctrl-T": "pane::ReopenClosedItem", 493 494 "u": null, 495 "U": null, 496 "ctrl-u": null, 497 "ctrl-U": null, 498 499 "v": "vim::ToggleVisual", 500 "V": "vim::ToggleVisualLine", 501 "ctrl-v": "vim::RestoreVisualSelection", 502 "ctrl-V": null, 503 504 "w": "vim::NextWordStart", 505 "W": "vim::PreviousWordStart", 506 "ctrl-w": "vim::NextSubwordStart", 507 "ctrl-W": "vim::PreviousSubwordStart", 508 509 "x": null, 510 "X": null, 511 "ctrl-x": null, 512 "ctrl-X": null, 513 514 "y": null, 515 "Y": null, 516 "ctrl-y": null, 517 "ctrl-Y": null, 518 519 "z": null, 520 "Z": null, 521 "ctrl-z": null, 522 "ctrl-Z": null, 523 524 "-": null, 525 "_": null, 526 "ctrl--": null, 527 "ctrl-_": null, 528 529 "=": null, 530 "+": null, 531 "ctrl-=": null, 532 "ctrl-+": null, 533 534 "[": "editor::SelectLargerSyntaxNode", 535 "{": null, 536 "ctrl-[": null, 537 "ctrl-{": null, 538 539 "]": "editor::SelectSmallerSyntaxNode", 540 "}": null, 541 "ctrl-]": null, 542 "ctrl-}": null, 543 544 "\\": "vim::ToggleComments", 545 "|": "vim::GoToColumn", 546 "ctrl-\\": null, 547 "ctrl-|": null, 548 549 ";": null, 550 ":": null, 551 "ctrl-;": null, 552 "ctrl-:": null, 553 554 "'": null, 555 "\"": null, 556 "ctrl-'": null, 557 "ctrl-\"": null, 558 559 ",": null, 560 "<": null, 561 "ctrl-,": null, 562 "ctrl-<": "vim::Outdent", // For workspace::SendKeystrokes 563 564 ".": null, 565 ">": null, 566 "ctrl-.": null, 567 "ctrl->": "vim::Indent", // For workspace::SendKeystrokes 568 569 "/": "vim::Search", 570 "?": "outline::Toggle", 571 "ctrl-/": null, 572 "ctrl-?": "project_symbols::Toggle", 573 574 "`": null, 575 "~": null, 576 "ctrl-`": null, 577 "ctrl-~": null, 578 579 //"ctrl-pageup": ["editor::SelectPrevious", { "replace_newest": false }], 580 //"ctrl-pagedown": ["editor::SelectNext", { "replace_newest": false }], 581 //"ctrl-shift-pageup": ["editor::SelectPrevious", { "replace_newest": true }], 582 //"ctrl-shift-pagedown": ["editor::SelectNext", { "replace_newest": true }], 583 584 // "": "vim::PushLowercase", 585 // "": "vim::PushUppercase", 586 // "": "vim::PushOppositeCase", 587 // "": "vim::ConvertToLowerCase", 588 // "": "vim::ConvertToUpperCase", 589 // "": "vim::ChangeCase", 590 // "": "vim::Enter", 591 // "": "vim::Quotes", 592 // "": "vim::Literal", 593 // "": "vim::Argument", 594 // "": "vim::Exchange", 595 // "": "vim::Increment", 596 // "": "vim::Decrement", 597 // "": "vim::Substitute", 598 // "": "editor::SelectAllMatches", 599 // TODO: replace mode 600 }, 601 }, 602 603 { 604 "context": "vim_mode == normal", 605 "bindings": { 606 // TODO: organize 607 ":": "command_palette::Toggle", 608 ".": "vim::Repeat", 609 "escape": "editor::Cancel", 610 "+": "vim::Increment", 611 "-": "vim::Decrement", 612 613 "tab": "vim::Indent", 614 "shift-tab": "vim::Outdent", 615 "ctrl-tab": null, 616 "ctrl-shift-tab": null, 617 618 "a": "vim::InsertAfter", 619 "A": "vim::InsertEndOfLine", 620 "ctrl-a": null, 621 "ctrl-A": null, 622 623 "c": "vim::PushChange", 624 "C": "vim::ChangeToEndOfLine", 625 "ctrl-c": null, 626 "ctrl-C": null, 627 628 "d": "vim::PushDelete", 629 "D": "vim::DeleteToEndOfLine", 630 "ctrl-d": null, 631 "ctrl-D": null, 632 633 "i": "vim::InsertBefore", 634 "I": "vim::InsertFirstNonWhitespace", 635 "ctrl-i": null, 636 "ctrl-I": null, 637 638 "o": "vim::InsertLineBelow", 639 "O": "vim::InsertLineAbove", 640 "ctrl-o": null, 641 "ctrl-O": null, 642 643 "p": [ 644 "vim::Paste", 645 { "preserve_clipboard": true, "before": false }, 646 ], 647 "P": ["vim::Paste", { "preserve_clipboard": true, "before": true }], 648 "ctrl-p": null, 649 "ctrl-P": null, 650 651 "r": null, 652 "R": null, 653 "ctrl-r": "vim::Redo", 654 "ctrl-R": null, 655 656 "s": "vim::Substitute", 657 "S": "vim::SubstituteLine", 658 "ctrl-s": null, 659 "ctrl-S": null, 660 661 "u": "vim::Undo", 662 "U": "vim::Redo", 663 "ctrl-u": null, 664 "ctrl-U": null, 665 666 "x": "vim::DeleteRight", 667 "X": "editor::DeleteLine", 668 "ctrl-x": null, 669 "ctrl-X": null, 670 671 "y": "vim::PushYank", 672 "Y": "vim::YankLine", 673 "ctrl-y": null, 674 "ctrl-Y": null, 675 }, 676 }, 677 678 { 679 "context": "vim_mode == visual", 680 "bindings": { 681 // TODO: organize 682 ":": "vim::VisualCommand", 683 "escape": "vim::SwitchToNormalMode", 684 "+": "vim::Increment", 685 "-": "vim::Decrement", 686 687 "home": [ 688 "editor::SelectToBeginningOfLine", 689 { "stop_at_soft_wraps": true, "stop_at_indent": true }, 690 ], 691 692 "delete": "vim::VisualDelete", 693 "shift-delete": null, 694 "ctrl-delete": null, 695 "ctrl-shift-delete": null, 696 697 "tab": ["workspace::SendKeystrokes", "ctrl-> ctrl-v"], 698 "shift-tab": ["workspace::SendKeystrokes", "ctrl-< ctrl-v"], 699 "ctrl-tab": null, 700 "ctrl-shift-tab": null, 701 702 "c": "vim::Substitute", 703 "C": "vim::SubstituteLine", 704 "ctrl-c": null, 705 "ctrl-C": null, 706 707 "d": "vim::VisualDelete", 708 "D": "vim::VisualDeleteLine", 709 "ctrl-d": null, 710 "ctrl-D": null, 711 712 "p": ["vim::Paste", { "preserve_clipboard": true }], 713 "P": ["vim::Paste", { "preserve_clipboard": true }], 714 "ctrl-p": null, 715 "ctrl-P": null, 716 717 "s": "vim::Substitute", 718 "S": "vim::SubstituteLine", 719 "ctrl-s": null, 720 "ctrl-S": null, 721 722 "x": "vim::VisualDelete", 723 "X": "vim::VisualDeleteLine", 724 "ctrl-x": null, 725 "ctrl-X": null, 726 727 "y": "vim::VisualYank", 728 "Y": "vim::VisualYankLine", 729 "ctrl-y": null, 730 "ctrl-Y": null, 731 }, 732 }, 733 734 { 735 "context": "vim_mode == insert", 736 "bindings": { 737 "escape": "vim::NormalBefore", 738 "ctrl-c": "editor::Paste", 739 "ctrl-space": "editor::ShowCompletions", 740 }, 741 }, 742 743 // Make escape leave insert mode even if completions are showing. 744 { 745 "context": "Editor && vim_mode == insert && showing_completions", 746 "bindings": { 747 "escape": "vim::NormalBefore", 748 }, 749 }, 750 751 { 752 "context": "vim_mode == waiting", 753 "bindings": { 754 "escape": "vim::ClearOperators", 755 }, 756 }, 757 758 { 759 "context": "vim_mode == operator", 760 "bindings": { 761 "escape": "vim::ClearOperators", 762 }, 763 }, 764 765 { 766 "context": "vim_operator == a || vim_operator == i", 767 "bindings": { 768 "w": "vim::Word", 769 "'": "vim::Quotes", 770 "\"": "vim::DoubleQuotes", 771 "`": "vim::BackQuotes", 772 773 "(": "vim::Parentheses", 774 ")": "vim::Parentheses", 775 776 "[": "vim::SquareBrackets", 777 "]": "vim::SquareBrackets", 778 779 "{": "vim::CurlyBrackets", 780 "}": "vim::CurlyBrackets", 781 782 "<": "vim::AngleBrackets", 783 ">": "vim::AngleBrackets", 784 }, 785 }, 786 787 { 788 "context": "vim_operator == c", 789 "bindings": { 790 "c": "vim::CurrentLine", 791 }, 792 }, 793 794 { 795 "context": "vim_operator == d", 796 "bindings": { 797 "d": "vim::CurrentLine", 798 }, 799 }, 800 801 { 802 "context": "vim_operator == y", 803 "bindings": { 804 "y": "vim::CurrentLine", 805 }, 806 }, 807 808 { 809 "context": "BufferSearchBar", 810 "bindings": { 811 "enter": "vim::SearchSubmit", 812 "escape": "buffer_search::Dismiss", 813 }, 814 }, 815 816 //"": "vim::Word", 817 //"": "vim::Subword", 818 //"": "vim::OtherEnd", 819 //"": "vim::StartOfLine", 820 //"": "vim::EndOfLine", 821 //"": "vim::CurrentLine", 822 //"": "vim::Quotes", 823 //"": "vim::DoubleQuotes", 824 //"": "vim::BackQuotes", 825 //"": "vim::AnyQuotes", 826 //"": "vim::Parentheses", 827 //"": "vim::SquareBrackets", 828 //"": "vim::CurlyBrackets", 829 //"": "vim::AngleBrackets", 830 // TODO: Establish "logical" editing language. E.g., instead of `D` to delete 831 // to end of line (which is a sort of special case of `d`), use `d l` instead, 832 // where `l` is the EndOfLine object (as below). 833 834 { 835 "context": "Terminal", 836 "bindings": { 837 "ctrl-shift-c": "terminal::Copy", 838 "ctrl-shift-v": "terminal::Paste", 839 840 "ctrl-shift-up": "terminal::ScrollLineUp", 841 "ctrl-shift-down": "terminal::ScrollLineDown", 842 843 "ctrl-shift-pageup": "terminal::ScrollPageUp", 844 "ctrl-shift-pagedown": "terminal::ScrollPageDown", 845 846 "ctrl-shift-home": "terminal::ScrollToTop", 847 "ctrl-shift-end": "terminal::ScrollToBottom", 848 }, 849 }, 850 ]