2022-04-21 23:33:39 +03:00
|
|
|
[
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
2023-06-27 06:46:06 +03:00
|
|
|
"context": "Editor && VimControl && !VimWaiting && !menu",
|
2023-04-20 14:08:30 +03:00
|
|
|
"bindings": {
|
|
|
|
"i": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"Object": {
|
|
|
|
"around": false
|
|
|
|
}
|
2022-04-22 19:43:15 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
|
|
|
"a": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"Object": {
|
|
|
|
"around": true
|
|
|
|
}
|
2022-10-09 07:20:47 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
2023-09-08 07:48:01 +03:00
|
|
|
":": "command_palette::Toggle",
|
2023-04-20 14:08:30 +03:00
|
|
|
"h": "vim::Left",
|
2023-06-21 23:02:32 +03:00
|
|
|
"left": "vim::Left",
|
2023-04-20 14:08:30 +03:00
|
|
|
"backspace": "vim::Backspace",
|
|
|
|
"j": "vim::Down",
|
2023-06-21 23:02:32 +03:00
|
|
|
"down": "vim::Down",
|
2023-04-20 14:08:30 +03:00
|
|
|
"enter": "vim::NextLineStart",
|
2023-07-19 19:24:23 +03:00
|
|
|
"tab": "vim::Tab",
|
|
|
|
"shift-tab": "vim::Tab",
|
2023-04-20 14:08:30 +03:00
|
|
|
"k": "vim::Up",
|
2023-06-21 23:02:32 +03:00
|
|
|
"up": "vim::Up",
|
2023-04-20 14:08:30 +03:00
|
|
|
"l": "vim::Right",
|
2023-06-21 23:02:32 +03:00
|
|
|
"right": "vim::Right",
|
2024-01-30 12:47:39 +03:00
|
|
|
"space": "vim::Space",
|
2023-04-20 14:08:30 +03:00
|
|
|
"$": "vim::EndOfLine",
|
2023-07-03 21:55:41 +03:00
|
|
|
"^": "vim::FirstNonWhitespace",
|
2023-09-11 22:07:11 +03:00
|
|
|
"_": "vim::StartOfLineDownward",
|
|
|
|
"g _": "vim::EndOfLineDownward",
|
2023-04-20 14:08:30 +03:00
|
|
|
"shift-g": "vim::EndOfDocument",
|
2023-06-30 07:45:54 +03:00
|
|
|
"{": "vim::StartOfParagraph",
|
|
|
|
"}": "vim::EndOfParagraph",
|
2023-10-23 07:04:55 +03:00
|
|
|
"|": "vim::GoToColumn",
|
2024-03-08 05:36:12 +03:00
|
|
|
|
|
|
|
// Word motions
|
|
|
|
"w": "vim::NextWordStart",
|
|
|
|
"e": "vim::NextWordEnd",
|
|
|
|
"b": "vim::PreviousWordStart",
|
|
|
|
"g e": "vim::PreviousWordEnd",
|
|
|
|
|
|
|
|
// Subword motions
|
|
|
|
// "w": "vim::NextSubwordStart",
|
|
|
|
// "b": "vim::PreviousSubwordStart",
|
|
|
|
// "e": "vim::NextSubwordEnd",
|
|
|
|
// "g e": "vim::PreviousSubwordEnd",
|
|
|
|
|
2023-04-20 14:08:30 +03:00
|
|
|
"shift-w": [
|
|
|
|
"vim::NextWordStart",
|
|
|
|
{
|
|
|
|
"ignorePunctuation": true
|
2022-04-21 23:33:39 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
|
|
|
"shift-e": [
|
|
|
|
"vim::NextWordEnd",
|
|
|
|
{
|
|
|
|
"ignorePunctuation": true
|
2022-04-22 19:43:15 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
|
|
|
"shift-b": [
|
|
|
|
"vim::PreviousWordStart",
|
|
|
|
{
|
|
|
|
"ignorePunctuation": true
|
2022-04-22 19:43:15 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
2024-03-08 05:36:12 +03:00
|
|
|
"g shift-e": ["vim::PreviousWordEnd", { "ignorePunctuation": true }],
|
|
|
|
|
2024-04-09 00:20:14 +03:00
|
|
|
"/": "vim::Search",
|
|
|
|
"?": [
|
|
|
|
"vim::Search",
|
|
|
|
{
|
|
|
|
"backwards": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"*": "vim::MoveToNext",
|
|
|
|
"#": "vim::MoveToPrev",
|
|
|
|
"n": "vim::MoveToNextMatch",
|
|
|
|
"shift-n": "vim::MoveToPrevMatch",
|
2023-04-20 14:08:30 +03:00
|
|
|
"%": "vim::Matching",
|
|
|
|
"f": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"FindForward": {
|
|
|
|
"before": false
|
|
|
|
}
|
2022-05-23 19:23:25 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
|
|
|
"t": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"FindForward": {
|
|
|
|
"before": true
|
|
|
|
}
|
2022-12-08 03:39:32 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
|
|
|
"shift-f": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"FindBackward": {
|
|
|
|
"after": false
|
|
|
|
}
|
2022-10-06 06:19:30 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
|
|
|
"shift-t": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"FindBackward": {
|
|
|
|
"after": true
|
|
|
|
}
|
2022-05-03 20:29:57 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
vim: Add basic mark support (#11507)
Release Notes:
- vim: Added support for buffer-local marks (`'a-'z`) and some builtin
marks `'<`,`'>`,`'[`,`']`, `'{`, `'}` and `^`. Global marks (`'A-'Z`),
and other builtin marks (`'0-'9`, `'(`, `')`, `''`, `'.`, `'"`) are not
yet implemented. (#5122)
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2024-05-10 03:51:19 +03:00
|
|
|
"m": ["vim::PushOperator", "Mark"],
|
|
|
|
"'": ["vim::PushOperator", { "Jump": { "line": true } }],
|
|
|
|
"`": ["vim::PushOperator", { "Jump": { "line": false } }],
|
2024-02-01 20:13:30 +03:00
|
|
|
";": "vim::RepeatFind",
|
|
|
|
",": "vim::RepeatFindReversed",
|
2023-06-21 23:34:35 +03:00
|
|
|
"ctrl-o": "pane::GoBack",
|
2023-09-28 06:04:13 +03:00
|
|
|
"ctrl-i": "pane::GoForward",
|
2023-06-21 23:34:35 +03:00
|
|
|
"ctrl-]": "editor::GoToDefinition",
|
2024-02-25 22:11:38 +03:00
|
|
|
"escape": ["vim::SwitchMode", "Normal"],
|
|
|
|
"ctrl-[": ["vim::SwitchMode", "Normal"],
|
2023-07-28 06:39:37 +03:00
|
|
|
"v": "vim::ToggleVisual",
|
|
|
|
"shift-v": "vim::ToggleVisualLine",
|
2023-08-15 22:26:04 +03:00
|
|
|
"ctrl-v": "vim::ToggleVisualBlock",
|
2023-08-18 20:39:48 +03:00
|
|
|
"ctrl-q": "vim::ToggleVisualBlock",
|
2024-05-07 01:05:19 +03:00
|
|
|
"shift-k": "editor::Hover",
|
2024-03-15 05:31:53 +03:00
|
|
|
"shift-r": "vim::ToggleReplace",
|
2023-04-20 14:08:30 +03:00
|
|
|
"0": "vim::StartOfLine", // When no number operator present, use start of line motion
|
2023-08-18 00:58:10 +03:00
|
|
|
"ctrl-f": "vim::PageDown",
|
|
|
|
"pagedown": "vim::PageDown",
|
|
|
|
"ctrl-b": "vim::PageUp",
|
|
|
|
"pageup": "vim::PageUp",
|
|
|
|
"ctrl-d": "vim::ScrollDown",
|
|
|
|
"ctrl-u": "vim::ScrollUp",
|
|
|
|
"ctrl-e": "vim::LineDown",
|
|
|
|
"ctrl-y": "vim::LineUp",
|
2023-07-20 03:54:29 +03:00
|
|
|
// "g" commands
|
|
|
|
"g g": "vim::StartOfDocument",
|
|
|
|
"g h": "editor::Hover",
|
|
|
|
"g t": "pane::ActivateNextItem",
|
|
|
|
"g shift-t": "pane::ActivatePrevItem",
|
|
|
|
"g d": "editor::GoToDefinition",
|
|
|
|
"g shift-d": "editor::GoToTypeDefinition",
|
2024-02-18 20:52:50 +03:00
|
|
|
"g x": "editor::OpenUrl",
|
2024-04-06 05:23:37 +03:00
|
|
|
"g n": "vim::SelectNextMatch",
|
|
|
|
"g shift-n": "vim::SelectPreviousMatch",
|
|
|
|
"g l": "vim::SelectNext",
|
|
|
|
"g shift-l": "vim::SelectPrevious",
|
2023-09-26 00:23:14 +03:00
|
|
|
"g >": [
|
|
|
|
"editor::SelectNext",
|
|
|
|
{
|
|
|
|
"replace_newest": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g <": [
|
|
|
|
"editor::SelectPrevious",
|
|
|
|
{
|
|
|
|
"replace_newest": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g a": "editor::SelectAllMatches",
|
2023-09-14 22:49:02 +03:00
|
|
|
"g s": "outline::Toggle",
|
|
|
|
"g shift-s": "project_symbols::Toggle",
|
2023-07-20 18:08:07 +03:00
|
|
|
"g .": "editor::ToggleCodeActions", // zed specific
|
|
|
|
"g shift-a": "editor::FindAllReferences", // zed specific
|
2023-09-28 06:05:58 +03:00
|
|
|
"g space": "editor::OpenExcerpts", // zed specific
|
2023-07-20 03:54:29 +03:00
|
|
|
"g *": [
|
|
|
|
"vim::MoveToNext",
|
|
|
|
{
|
|
|
|
"partialWord": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g #": [
|
|
|
|
"vim::MoveToPrev",
|
|
|
|
{
|
|
|
|
"partialWord": true
|
|
|
|
}
|
|
|
|
],
|
vim: Fix relative line motion
Before this change up and down were in display co-ordinates, after this
change they are in fold coordinates (which matches the vim behaviour).
To make this work without causing usabliity problems, a bunch of extra
keyboard shortcuts now work:
- vim: `z {o,c}` to open,close a fold
- vim: `z f` to fold current visual selection
- vim: `g {j,k,up,down}` to move up/down a display line
- vim: `g {0,^,$,home,end}` to get to start/end of a display line
Fixes: zed-industries/community#1562
2023-08-25 07:11:51 +03:00
|
|
|
"g j": [
|
|
|
|
"vim::Down",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g down": [
|
|
|
|
"vim::Down",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g k": [
|
|
|
|
"vim::Up",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g up": [
|
|
|
|
"vim::Up",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g $": [
|
|
|
|
"vim::EndOfLine",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g end": [
|
|
|
|
"vim::EndOfLine",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g 0": [
|
|
|
|
"vim::StartOfLine",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g home": [
|
|
|
|
"vim::StartOfLine",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g ^": [
|
|
|
|
"vim::FirstNonWhitespace",
|
|
|
|
{
|
|
|
|
"displayLines": true
|
|
|
|
}
|
|
|
|
],
|
2024-04-12 09:05:38 +03:00
|
|
|
"g ]": "editor::GoToDiagnostic",
|
|
|
|
"g [": "editor::GoToPrevDiagnostic",
|
2024-01-31 22:13:35 +03:00
|
|
|
"shift-h": "vim::WindowTop",
|
|
|
|
"shift-m": "vim::WindowMiddle",
|
|
|
|
"shift-l": "vim::WindowBottom",
|
2023-07-20 03:54:29 +03:00
|
|
|
// z commands
|
|
|
|
"z t": "editor::ScrollCursorTop",
|
|
|
|
"z z": "editor::ScrollCursorCenter",
|
2024-03-05 02:34:42 +03:00
|
|
|
"z .": ["workspace::SendKeystrokes", "z z ^"],
|
2023-07-20 03:54:29 +03:00
|
|
|
"z b": "editor::ScrollCursorBottom",
|
vim: Fix relative line motion
Before this change up and down were in display co-ordinates, after this
change they are in fold coordinates (which matches the vim behaviour).
To make this work without causing usabliity problems, a bunch of extra
keyboard shortcuts now work:
- vim: `z {o,c}` to open,close a fold
- vim: `z f` to fold current visual selection
- vim: `g {j,k,up,down}` to move up/down a display line
- vim: `g {0,^,$,home,end}` to get to start/end of a display line
Fixes: zed-industries/community#1562
2023-08-25 07:11:51 +03:00
|
|
|
"z c": "editor::Fold",
|
|
|
|
"z o": "editor::UnfoldLines",
|
|
|
|
"z f": "editor::FoldSelectedRanges",
|
2023-09-08 22:55:13 +03:00
|
|
|
"shift-z shift-q": [
|
|
|
|
"pane::CloseActiveItem",
|
|
|
|
{
|
2023-09-21 05:54:30 +03:00
|
|
|
"saveIntent": "skip"
|
2023-09-08 22:55:13 +03:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"shift-z shift-z": [
|
|
|
|
"pane::CloseActiveItem",
|
|
|
|
{
|
2023-09-21 05:54:30 +03:00
|
|
|
"saveIntent": "saveAll"
|
2023-09-08 22:55:13 +03:00
|
|
|
}
|
|
|
|
],
|
2023-07-20 03:54:29 +03:00
|
|
|
// Count support
|
2024-02-25 22:11:38 +03:00
|
|
|
"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],
|
vim: Add support for ctrl-w commands
Primarily {h,j,k,l,left,right,up,down} for moving to a pane by
direction; but also {w,W,p} for going forward/back, and {v,s} for
splitting a pane vertically/horizontally, and {c,q} to close a pane.
There are a large number of ctrl-w commands that are not supported, and
which fall into three buckets:
* switch this pane with that one (VScode also has this, and it's a
requested feature)
* move to top/bottom/leftmost/rightmost
* counts on any of these
* jump to "definition/file-under-cursor/etc.etc." in a new pane.
2023-07-20 03:29:13 +03:00
|
|
|
// window related commands (ctrl-w X)
|
2024-02-25 22:11:38 +03:00
|
|
|
"ctrl-w left": ["workspace::ActivatePaneInDirection", "Left"],
|
|
|
|
"ctrl-w right": ["workspace::ActivatePaneInDirection", "Right"],
|
|
|
|
"ctrl-w up": ["workspace::ActivatePaneInDirection", "Up"],
|
|
|
|
"ctrl-w down": ["workspace::ActivatePaneInDirection", "Down"],
|
|
|
|
"ctrl-w h": ["workspace::ActivatePaneInDirection", "Left"],
|
|
|
|
"ctrl-w l": ["workspace::ActivatePaneInDirection", "Right"],
|
|
|
|
"ctrl-w k": ["workspace::ActivatePaneInDirection", "Up"],
|
|
|
|
"ctrl-w j": ["workspace::ActivatePaneInDirection", "Down"],
|
|
|
|
"ctrl-w ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
|
|
|
|
"ctrl-w ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
|
|
|
|
"ctrl-w ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
|
|
|
|
"ctrl-w ctrl-j": ["workspace::ActivatePaneInDirection", "Down"],
|
|
|
|
"ctrl-w shift-left": ["workspace::SwapPaneInDirection", "Left"],
|
|
|
|
"ctrl-w shift-right": ["workspace::SwapPaneInDirection", "Right"],
|
|
|
|
"ctrl-w shift-up": ["workspace::SwapPaneInDirection", "Up"],
|
|
|
|
"ctrl-w shift-down": ["workspace::SwapPaneInDirection", "Down"],
|
|
|
|
"ctrl-w shift-h": ["workspace::SwapPaneInDirection", "Left"],
|
|
|
|
"ctrl-w shift-l": ["workspace::SwapPaneInDirection", "Right"],
|
|
|
|
"ctrl-w shift-k": ["workspace::SwapPaneInDirection", "Up"],
|
|
|
|
"ctrl-w shift-j": ["workspace::SwapPaneInDirection", "Down"],
|
vim: Add support for ctrl-w commands
Primarily {h,j,k,l,left,right,up,down} for moving to a pane by
direction; but also {w,W,p} for going forward/back, and {v,s} for
splitting a pane vertically/horizontally, and {c,q} to close a pane.
There are a large number of ctrl-w commands that are not supported, and
which fall into three buckets:
* switch this pane with that one (VScode also has this, and it's a
requested feature)
* move to top/bottom/leftmost/rightmost
* counts on any of these
* jump to "definition/file-under-cursor/etc.etc." in a new pane.
2023-07-20 03:29:13 +03:00
|
|
|
"ctrl-w g t": "pane::ActivateNextItem",
|
|
|
|
"ctrl-w ctrl-g t": "pane::ActivateNextItem",
|
|
|
|
"ctrl-w g shift-t": "pane::ActivatePrevItem",
|
|
|
|
"ctrl-w ctrl-g shift-t": "pane::ActivatePrevItem",
|
|
|
|
"ctrl-w w": "workspace::ActivateNextPane",
|
|
|
|
"ctrl-w ctrl-w": "workspace::ActivateNextPane",
|
|
|
|
"ctrl-w p": "workspace::ActivatePreviousPane",
|
|
|
|
"ctrl-w ctrl-p": "workspace::ActivatePreviousPane",
|
|
|
|
"ctrl-w shift-w": "workspace::ActivatePreviousPane",
|
|
|
|
"ctrl-w ctrl-shift-w": "workspace::ActivatePreviousPane",
|
|
|
|
"ctrl-w v": "pane::SplitLeft",
|
|
|
|
"ctrl-w ctrl-v": "pane::SplitLeft",
|
|
|
|
"ctrl-w s": "pane::SplitUp",
|
|
|
|
"ctrl-w shift-s": "pane::SplitUp",
|
|
|
|
"ctrl-w ctrl-s": "pane::SplitUp",
|
|
|
|
"ctrl-w c": "pane::CloseAllItems",
|
|
|
|
"ctrl-w ctrl-c": "pane::CloseAllItems",
|
|
|
|
"ctrl-w q": "pane::CloseAllItems",
|
2023-09-21 00:00:41 +03:00
|
|
|
"ctrl-w ctrl-q": "pane::CloseAllItems",
|
|
|
|
"ctrl-w o": "workspace::CloseInactiveTabsAndPanes",
|
|
|
|
"ctrl-w ctrl-o": "workspace::CloseInactiveTabsAndPanes",
|
2024-02-25 22:11:38 +03:00
|
|
|
"ctrl-w n": ["workspace::NewFileInDirection", "Up"],
|
|
|
|
"ctrl-w ctrl-n": ["workspace::NewFileInDirection", "Up"],
|
2024-02-29 05:23:36 +03:00
|
|
|
|
2024-02-29 12:06:17 +03:00
|
|
|
"ctrl-w d": "editor::GoToDefinitionSplit",
|
|
|
|
"ctrl-w g d": "editor::GoToDefinitionSplit",
|
|
|
|
"ctrl-w shift-d": "editor::GoToTypeDefinitionSplit",
|
|
|
|
"ctrl-w g shift-d": "editor::GoToTypeDefinitionSplit",
|
2024-02-29 05:23:36 +03:00
|
|
|
"ctrl-w space": "editor::OpenExcerptsSplit",
|
|
|
|
"ctrl-w g space": "editor::OpenExcerptsSplit",
|
2024-02-07 14:50:22 +03:00
|
|
|
"-": "pane::RevealInProjectPanel"
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
2023-08-15 00:51:00 +03:00
|
|
|
{
|
|
|
|
// escape is in its own section so that it cancels a pending count.
|
|
|
|
"context": "Editor && vim_mode == normal && vim_operator == none && !VimWaiting",
|
|
|
|
"bindings": {
|
|
|
|
"escape": "editor::Cancel",
|
2024-01-17 13:07:20 +03:00
|
|
|
"ctrl-[": "editor::Cancel"
|
2023-08-15 00:51:00 +03:00
|
|
|
}
|
|
|
|
},
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
2023-09-11 22:10:01 +03:00
|
|
|
"context": "Editor && vim_mode == normal && vim_operator == none && !VimWaiting",
|
2023-04-20 14:08:30 +03:00
|
|
|
"bindings": {
|
2023-08-22 01:10:13 +03:00
|
|
|
".": "vim::Repeat",
|
2024-02-25 22:11:38 +03:00
|
|
|
"c": ["vim::PushOperator", "Change"],
|
2023-04-20 14:08:30 +03:00
|
|
|
"shift-c": "vim::ChangeToEndOfLine",
|
2024-02-25 22:11:38 +03:00
|
|
|
"d": ["vim::PushOperator", "Delete"],
|
2023-04-20 14:08:30 +03:00
|
|
|
"shift-d": "vim::DeleteToEndOfLine",
|
2023-09-07 19:51:18 +03:00
|
|
|
"shift-j": "vim::JoinLines",
|
2024-02-25 22:11:38 +03:00
|
|
|
"y": ["vim::PushOperator", "Yank"],
|
2023-10-11 03:46:49 +03:00
|
|
|
"shift-y": "vim::YankLine",
|
2023-08-22 01:10:13 +03:00
|
|
|
"i": "vim::InsertBefore",
|
2023-04-20 14:08:30 +03:00
|
|
|
"shift-i": "vim::InsertFirstNonWhitespace",
|
|
|
|
"a": "vim::InsertAfter",
|
|
|
|
"shift-a": "vim::InsertEndOfLine",
|
|
|
|
"x": "vim::DeleteRight",
|
|
|
|
"shift-x": "vim::DeleteLeft",
|
|
|
|
"o": "vim::InsertLineBelow",
|
|
|
|
"shift-o": "vim::InsertLineAbove",
|
2023-06-27 05:19:28 +03:00
|
|
|
"~": "vim::ChangeCase",
|
2023-09-27 21:32:01 +03:00
|
|
|
"ctrl-a": "vim::Increment",
|
|
|
|
"ctrl-x": "vim::Decrement",
|
2023-04-20 14:08:30 +03:00
|
|
|
"p": "vim::Paste",
|
2023-08-21 21:55:59 +03:00
|
|
|
"shift-p": [
|
|
|
|
"vim::Paste",
|
|
|
|
{
|
|
|
|
"before": true
|
|
|
|
}
|
|
|
|
],
|
2023-04-20 14:08:30 +03:00
|
|
|
"u": "editor::Undo",
|
|
|
|
"ctrl-r": "editor::Redo",
|
2024-02-25 22:11:38 +03:00
|
|
|
"r": ["vim::PushOperator", "Replace"],
|
2023-06-26 23:42:47 +03:00
|
|
|
"s": "vim::Substitute",
|
2023-09-01 21:23:45 +03:00
|
|
|
"shift-s": "vim::SubstituteLine",
|
2024-02-28 07:36:12 +03:00
|
|
|
"> >": "vim::Indent",
|
|
|
|
"< <": "vim::Outdent",
|
2023-06-26 23:42:47 +03:00
|
|
|
"ctrl-pagedown": "pane::ActivateNextItem",
|
2024-03-07 08:53:17 +03:00
|
|
|
"ctrl-pageup": "pane::ActivatePrevItem",
|
2024-04-12 09:05:38 +03:00
|
|
|
// tree-sitter related commands
|
|
|
|
"[ x": "editor::SelectLargerSyntaxNode",
|
|
|
|
"] x": "editor::SelectSmallerSyntaxNode"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == visual && vim_operator == none && !VimWaiting",
|
|
|
|
"bindings": {
|
|
|
|
// tree-sitter related commands
|
2024-03-07 08:53:17 +03:00
|
|
|
"[ x": "editor::SelectLargerSyntaxNode",
|
|
|
|
"] x": "editor::SelectSmallerSyntaxNode"
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2023-09-11 22:10:01 +03:00
|
|
|
"context": "Editor && VimCount",
|
2023-04-20 14:08:30 +03:00
|
|
|
"bindings": {
|
2024-02-25 22:11:38 +03:00
|
|
|
"0": ["vim::Number", 0]
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"context": "Editor && vim_operator == c",
|
|
|
|
"bindings": {
|
2023-07-20 18:08:07 +03:00
|
|
|
"c": "vim::CurrentLine",
|
|
|
|
"d": "editor::Rename" // zed specific
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
Add surrounds support for vim (#9400)
For #4965
There are still some minor issues:
1. When change the surround and delete the surround, we should also
decide whether there are spaces inside after deleting/replacing
according to whether it is open parentheses, and replace them
accordingly, but at present, delete and change, haven't done this
adaptation for current pr, I'm not sure if I can fit it in the back or
if it needs to be fitted together.
2. In the selection mode, pressing s plus brackets should also trigger
the Add Surrounds function, but this MR has not adapted the selection
mode for the time being, I think we need to support different add
behaviors for the three selection modes.(Currently in select mode, s is
used for Substitute)
3. For the current change surrounds, if the user does not find the
bracket that needs to be matched after entering cs, but it is a valid
bracket, and will wait for the second input before failing, the better
practice here should be to return to normal mode if the first bracket is
not found
4. I reused BracketPair in language, but two of its properties weren't
used in this mr, so I'm not sure if I should create a new struct with
only start and end, which would have less code
I'm not sure which ones need to be changed in the first issue, and which
ones can be revised in the future, and it seems that they can be solved
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2024-04-08 20:41:06 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == normal && vim_operator == c",
|
|
|
|
"bindings": {
|
|
|
|
"s": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"ChangeSurrounds": {}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_operator == d",
|
|
|
|
"bindings": {
|
|
|
|
"d": "vim::CurrentLine"
|
|
|
|
}
|
|
|
|
},
|
Add surrounds support for vim (#9400)
For #4965
There are still some minor issues:
1. When change the surround and delete the surround, we should also
decide whether there are spaces inside after deleting/replacing
according to whether it is open parentheses, and replace them
accordingly, but at present, delete and change, haven't done this
adaptation for current pr, I'm not sure if I can fit it in the back or
if it needs to be fitted together.
2. In the selection mode, pressing s plus brackets should also trigger
the Add Surrounds function, but this MR has not adapted the selection
mode for the time being, I think we need to support different add
behaviors for the three selection modes.(Currently in select mode, s is
used for Substitute)
3. For the current change surrounds, if the user does not find the
bracket that needs to be matched after entering cs, but it is a valid
bracket, and will wait for the second input before failing, the better
practice here should be to return to normal mode if the first bracket is
not found
4. I reused BracketPair in language, but two of its properties weren't
used in this mr, so I'm not sure if I should create a new struct with
only start and end, which would have less code
I'm not sure which ones need to be changed in the first issue, and which
ones can be revised in the future, and it seems that they can be solved
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2024-04-08 20:41:06 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == normal && vim_operator == d",
|
|
|
|
"bindings": {
|
|
|
|
"s": ["vim::PushOperator", "DeleteSurrounds"]
|
|
|
|
}
|
|
|
|
},
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_operator == y",
|
|
|
|
"bindings": {
|
|
|
|
"y": "vim::CurrentLine"
|
|
|
|
}
|
|
|
|
},
|
Add surrounds support for vim (#9400)
For #4965
There are still some minor issues:
1. When change the surround and delete the surround, we should also
decide whether there are spaces inside after deleting/replacing
according to whether it is open parentheses, and replace them
accordingly, but at present, delete and change, haven't done this
adaptation for current pr, I'm not sure if I can fit it in the back or
if it needs to be fitted together.
2. In the selection mode, pressing s plus brackets should also trigger
the Add Surrounds function, but this MR has not adapted the selection
mode for the time being, I think we need to support different add
behaviors for the three selection modes.(Currently in select mode, s is
used for Substitute)
3. For the current change surrounds, if the user does not find the
bracket that needs to be matched after entering cs, but it is a valid
bracket, and will wait for the second input before failing, the better
practice here should be to return to normal mode if the first bracket is
not found
4. I reused BracketPair in language, but two of its properties weren't
used in this mr, so I'm not sure if I should create a new struct with
only start and end, which would have less code
I'm not sure which ones need to be changed in the first issue, and which
ones can be revised in the future, and it seems that they can be solved
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2024-04-08 20:41:06 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == normal && vim_operator == y",
|
|
|
|
"bindings": {
|
|
|
|
"s": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"AddSurrounds": {}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2024-04-30 04:38:14 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_operator == ys",
|
|
|
|
"bindings": {
|
|
|
|
"s": "vim::CurrentLine"
|
|
|
|
}
|
|
|
|
},
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && VimObject",
|
|
|
|
"bindings": {
|
|
|
|
"w": "vim::Word",
|
|
|
|
"shift-w": [
|
|
|
|
"vim::Word",
|
|
|
|
{
|
|
|
|
"ignorePunctuation": true
|
2023-01-07 01:03:01 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
],
|
2024-02-27 08:48:19 +03:00
|
|
|
"t": "vim::Tag",
|
2023-04-20 14:08:30 +03:00
|
|
|
"s": "vim::Sentence",
|
2024-03-05 02:39:02 +03:00
|
|
|
"p": "vim::Paragraph",
|
2023-04-20 14:08:30 +03:00
|
|
|
"'": "vim::Quotes",
|
|
|
|
"`": "vim::BackQuotes",
|
|
|
|
"\"": "vim::DoubleQuotes",
|
2023-10-23 07:04:55 +03:00
|
|
|
"|": "vim::VerticalBars",
|
2023-04-20 14:08:30 +03:00
|
|
|
"(": "vim::Parentheses",
|
|
|
|
")": "vim::Parentheses",
|
2023-10-23 07:04:55 +03:00
|
|
|
"b": "vim::Parentheses",
|
2023-04-20 14:08:30 +03:00
|
|
|
"[": "vim::SquareBrackets",
|
|
|
|
"]": "vim::SquareBrackets",
|
|
|
|
"{": "vim::CurlyBrackets",
|
|
|
|
"}": "vim::CurlyBrackets",
|
2023-10-23 07:04:55 +03:00
|
|
|
"shift-b": "vim::CurlyBrackets",
|
2023-04-20 14:08:30 +03:00
|
|
|
"<": "vim::AngleBrackets",
|
2024-02-24 05:37:13 +03:00
|
|
|
">": "vim::AngleBrackets",
|
|
|
|
"a": "vim::Argument"
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2023-08-18 02:03:54 +03:00
|
|
|
"context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",
|
2023-04-20 14:08:30 +03:00
|
|
|
"bindings": {
|
2024-01-28 23:13:09 +03:00
|
|
|
"u": "vim::ConvertToLowerCase",
|
|
|
|
"U": "vim::ConvertToUpperCase",
|
2023-07-28 22:54:03 +03:00
|
|
|
"o": "vim::OtherEnd",
|
|
|
|
"shift-o": "vim::OtherEnd",
|
2023-04-20 14:08:30 +03:00
|
|
|
"d": "vim::VisualDelete",
|
|
|
|
"x": "vim::VisualDelete",
|
2023-09-15 19:26:43 +03:00
|
|
|
"shift-d": "vim::VisualDelete",
|
|
|
|
"shift-x": "vim::VisualDelete",
|
2023-04-20 14:08:30 +03:00
|
|
|
"y": "vim::VisualYank",
|
2023-09-15 20:14:04 +03:00
|
|
|
"shift-y": "vim::VisualYank",
|
2023-08-21 21:55:59 +03:00
|
|
|
"p": "vim::Paste",
|
|
|
|
"shift-p": [
|
|
|
|
"vim::Paste",
|
|
|
|
{
|
|
|
|
"preserveClipboard": true
|
|
|
|
}
|
|
|
|
],
|
2023-06-22 00:44:19 +03:00
|
|
|
"s": "vim::Substitute",
|
2023-09-01 21:23:45 +03:00
|
|
|
"shift-s": "vim::SubstituteLine",
|
2023-09-07 01:31:52 +03:00
|
|
|
"shift-r": "vim::SubstituteLine",
|
2023-07-28 23:38:45 +03:00
|
|
|
"c": "vim::Substitute",
|
2023-06-27 05:19:28 +03:00
|
|
|
"~": "vim::ChangeCase",
|
2024-01-19 20:35:25 +03:00
|
|
|
"*": [
|
|
|
|
"vim::MoveToNext",
|
|
|
|
{
|
|
|
|
"partialWord": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"#": [
|
|
|
|
"vim::MoveToPrev",
|
|
|
|
{
|
|
|
|
"partialWord": true
|
|
|
|
}
|
|
|
|
],
|
2023-09-27 21:32:01 +03:00
|
|
|
"ctrl-a": "vim::Increment",
|
|
|
|
"ctrl-x": "vim::Decrement",
|
2023-09-28 01:43:24 +03:00
|
|
|
"g ctrl-a": [
|
|
|
|
"vim::Increment",
|
|
|
|
{
|
|
|
|
"step": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"g ctrl-x": [
|
|
|
|
"vim::Decrement",
|
|
|
|
{
|
|
|
|
"step": true
|
|
|
|
}
|
|
|
|
],
|
2023-09-07 01:31:52 +03:00
|
|
|
"shift-i": "vim::InsertBefore",
|
2023-08-17 20:21:58 +03:00
|
|
|
"shift-a": "vim::InsertAfter",
|
2023-09-07 20:08:07 +03:00
|
|
|
"shift-j": "vim::JoinLines",
|
2024-02-25 22:11:38 +03:00
|
|
|
"r": ["vim::PushOperator", "Replace"],
|
|
|
|
"ctrl-c": ["vim::SwitchMode", "Normal"],
|
|
|
|
"escape": ["vim::SwitchMode", "Normal"],
|
|
|
|
"ctrl-[": ["vim::SwitchMode", "Normal"],
|
2024-02-28 07:36:12 +03:00
|
|
|
">": "vim::Indent",
|
|
|
|
"<": "vim::Outdent",
|
2023-08-18 02:03:54 +03:00
|
|
|
"i": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"Object": {
|
|
|
|
"around": false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"a": [
|
|
|
|
"vim::PushOperator",
|
|
|
|
{
|
|
|
|
"Object": {
|
|
|
|
"around": true
|
|
|
|
}
|
|
|
|
}
|
2023-09-12 03:01:58 +03:00
|
|
|
]
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
2024-04-12 09:05:38 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == normal",
|
|
|
|
"bindings": {
|
|
|
|
"g c c": "editor::ToggleComments"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == visual",
|
|
|
|
"bindings": {
|
|
|
|
"g c": "editor::ToggleComments"
|
|
|
|
}
|
|
|
|
},
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
2023-09-28 06:28:30 +03:00
|
|
|
"context": "Editor && vim_mode == insert",
|
2023-04-20 14:08:30 +03:00
|
|
|
"bindings": {
|
|
|
|
"escape": "vim::NormalBefore",
|
2023-07-17 23:57:21 +03:00
|
|
|
"ctrl-c": "vim::NormalBefore",
|
2023-09-28 06:29:18 +03:00
|
|
|
"ctrl-[": "vim::NormalBefore",
|
|
|
|
"ctrl-x ctrl-o": "editor::ShowCompletions",
|
|
|
|
"ctrl-x ctrl-a": "assistant::InlineAssist", // zed specific
|
Introduce `InlineCompletionProvider` (#9777)
This pull request introduces a new `InlineCompletionProvider` trait,
which enables making `Editor` copilot-agnostic and lets us push all the
copilot functionality into the `copilot_ui` module. Long-term, I would
like to merge `copilot` and `copilot_ui`, but right now `project`
depends on `copilot`, which makes this impossible.
The reason for adding this new trait is so that we can experiment with
other inline completion providers and swap them at runtime using config
settings.
Please, note also that we renamed some of the existing copilot actions
to be more agnostic (see release notes below). We still kept the old
actions bound for backwards-compatibility, but we should probably remove
them at some later version.
Also, as a drive-by, we added new methods to the `Global` trait that let
you read or mutate a global directly, e.g.:
```rs
MyGlobal::update(cx, |global, cx| {
});
```
Release Notes:
- Renamed the `copilot::Suggest` action to
`editor::ShowInlineCompletion`
- Renamed the `copilot::NextSuggestion` action to
`editor::NextInlineCompletion`
- Renamed the `copilot::PreviousSuggestion` action to
`editor::PreviousInlineCompletion`
- Renamed the `editor::AcceptPartialCopilotSuggestion` action to
`editor::AcceptPartialInlineCompletion`
---------
Co-authored-by: Nathan <nathan@zed.dev>
Co-authored-by: Kyle <kylek@zed.dev>
Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
2024-03-26 15:28:06 +03:00
|
|
|
"ctrl-x ctrl-c": "editor::ShowInlineCompletion", // zed specific
|
2023-09-28 06:29:18 +03:00
|
|
|
"ctrl-x ctrl-l": "editor::ToggleCodeActions", // zed specific
|
2024-02-13 22:35:01 +03:00
|
|
|
"ctrl-x ctrl-z": "editor::Cancel",
|
|
|
|
"ctrl-w": "editor::DeleteToPreviousWordStart",
|
2024-02-28 07:36:12 +03:00
|
|
|
"ctrl-u": "editor::DeleteToBeginningOfLine",
|
|
|
|
"ctrl-t": "vim::Indent",
|
2024-03-14 08:12:12 +03:00
|
|
|
"ctrl-d": "vim::Outdent",
|
|
|
|
"ctrl-r \"": "editor::Paste",
|
|
|
|
"ctrl-r +": "editor::Paste"
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
},
|
2024-03-15 05:31:53 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && vim_mode == replace",
|
|
|
|
"bindings": {
|
|
|
|
"escape": "vim::NormalBefore",
|
|
|
|
"ctrl-c": "vim::NormalBefore",
|
|
|
|
"ctrl-[": "vim::NormalBefore",
|
|
|
|
"backspace": "vim::UndoReplace"
|
|
|
|
}
|
|
|
|
},
|
2023-04-20 14:08:30 +03:00
|
|
|
{
|
|
|
|
"context": "Editor && VimWaiting",
|
|
|
|
"bindings": {
|
|
|
|
"tab": "vim::Tab",
|
|
|
|
"enter": "vim::Enter",
|
2024-02-25 22:11:38 +03:00
|
|
|
"escape": ["vim::SwitchMode", "Normal"],
|
|
|
|
"ctrl-[": ["vim::SwitchMode", "Normal"]
|
2022-04-12 01:54:52 +03:00
|
|
|
}
|
2023-06-28 21:48:15 +03:00
|
|
|
},
|
|
|
|
{
|
2024-02-11 02:21:13 +03:00
|
|
|
"context": "BufferSearchBar && !in_replace",
|
2023-06-28 21:48:15 +03:00
|
|
|
"bindings": {
|
2023-07-07 20:33:15 +03:00
|
|
|
"enter": "vim::SearchSubmit",
|
2023-07-06 22:21:01 +03:00
|
|
|
"escape": "buffer_search::Dismiss"
|
2023-06-28 21:48:15 +03:00
|
|
|
}
|
2024-02-15 00:38:07 +03:00
|
|
|
},
|
2024-04-04 23:24:49 +03:00
|
|
|
{
|
|
|
|
"context": "EmptyPane || SharedScreen",
|
|
|
|
"bindings": {
|
|
|
|
":": "command_palette::Toggle"
|
|
|
|
}
|
|
|
|
},
|
2024-02-15 00:38:07 +03:00
|
|
|
{
|
2024-02-17 23:36:08 +03:00
|
|
|
// netrw compatibility
|
2024-02-15 00:38:07 +03:00
|
|
|
"context": "ProjectPanel && not_editing",
|
|
|
|
"bindings": {
|
2024-02-17 23:36:08 +03:00
|
|
|
":": "command_palette::Toggle",
|
2024-02-15 00:38:07 +03:00
|
|
|
"%": "project_panel::NewFile",
|
2024-02-17 23:36:08 +03:00
|
|
|
"/": "project_panel::NewSearchInDirectory",
|
|
|
|
"d": "project_panel::NewDirectory",
|
2024-04-12 23:50:27 +03:00
|
|
|
"enter": "project_panel::OpenPermanent",
|
2024-02-17 23:36:08 +03:00
|
|
|
"escape": "project_panel::ToggleFocus",
|
2024-02-15 00:38:07 +03:00
|
|
|
"h": "project_panel::CollapseSelectedEntry",
|
|
|
|
"j": "menu::SelectNext",
|
|
|
|
"k": "menu::SelectPrev",
|
2024-02-17 23:36:08 +03:00
|
|
|
"l": "project_panel::ExpandSelectedEntry",
|
2024-04-12 23:50:27 +03:00
|
|
|
"o": "project_panel::OpenPermanent",
|
2024-02-15 00:38:07 +03:00
|
|
|
"shift-d": "project_panel::Delete",
|
2024-02-17 23:36:08 +03:00
|
|
|
"shift-r": "project_panel::Rename",
|
2024-04-12 23:50:27 +03:00
|
|
|
"t": "project_panel::OpenPermanent",
|
|
|
|
"v": "project_panel::OpenPermanent",
|
|
|
|
"p": "project_panel::Open",
|
2024-04-27 01:35:57 +03:00
|
|
|
"x": "project_panel::RevealInFinder",
|
|
|
|
"shift-g": "menu::SelectLast",
|
2024-04-27 03:22:15 +03:00
|
|
|
"g g": "menu::SelectFirst",
|
|
|
|
"-": "project_panel::SelectParent"
|
2024-02-15 00:38:07 +03:00
|
|
|
}
|
2023-04-20 14:08:30 +03:00
|
|
|
}
|
|
|
|
]
|