1[
2 // Standard macOS bindings
3 {
4 "bindings": {
5 "up": "menu::SelectPrev",
6 "ctrl-p": "menu::SelectPrev",
7 "down": "menu::SelectNext",
8 "ctrl-n": "menu::SelectNext",
9 "cmd-up": "menu::SelectFirst",
10 "cmd-down": "menu::SelectLast",
11 "enter": "menu::Confirm",
12 "escape": "menu::Cancel",
13 "ctrl-c": "menu::Cancel",
14 "shift-cmd-{": "pane::ActivatePrevItem",
15 "shift-cmd-}": "pane::ActivateNextItem",
16 "cmd-w": "pane::CloseActiveItem",
17 "alt-cmd-w": "pane::CloseInactiveItems",
18 "cmd-s": "workspace::Save",
19 "cmd-=": "zed::IncreaseBufferFontSize",
20 "cmd--": "zed::DecreaseBufferFontSize",
21 "cmd-,": "zed::OpenSettings"
22 }
23 },
24 {
25 "context": "Editor",
26 "bindings": {
27 "escape": "editor::Cancel",
28 "backspace": "editor::Backspace",
29 "ctrl-h": "editor::Backspace",
30 "delete": "editor::Delete",
31 "ctrl-d": "editor::Delete",
32 "tab": "editor::Tab",
33 "shift-tab": "editor::TabPrev",
34 "ctrl-k": "editor::CutToEndOfLine",
35 "cmd-backspace": "editor::DeleteToBeginningOfLine",
36 "cmd-delete": "editor::DeleteToEndOfLine",
37 "alt-backspace": "editor::DeleteToPreviousWordStart",
38 "alt-delete": "editor::DeleteToNextWordEnd",
39 "alt-h": "editor::DeleteToPreviousWordStart",
40 "alt-d": "editor::DeleteToNextWordEnd",
41 "cmd-x": "editor::Cut",
42 "cmd-c": "editor::Copy",
43 "cmd-v": "editor::Paste",
44 "cmd-z": "editor::Undo",
45 "cmd-shift-Z": "editor::Redo",
46 "up": "editor::MoveUp",
47 "down": "editor::MoveDown",
48 "left": "editor::MoveLeft",
49 "right": "editor::MoveRight",
50 "ctrl-p": "editor::MoveUp",
51 "ctrl-n": "editor::MoveDown",
52 "ctrl-b": "editor::MoveLeft",
53 "ctrl-f": "editor::MoveRight",
54 "alt-left": "editor::MoveToPreviousWordStart",
55 "alt-b": "editor::MoveToPreviousWordStart",
56 "alt-right": "editor::MoveToNextWordEnd",
57 "alt-f": "editor::MoveToNextWordEnd",
58 "cmd-left": "editor::MoveToBeginningOfLine",
59 "ctrl-a": "editor::MoveToBeginningOfLine",
60 "cmd-right": "editor::MoveToEndOfLine",
61 "ctrl-e": "editor::MoveToEndOfLine",
62 "cmd-up": "editor::MoveToBeginning",
63 "cmd-down": "editor::MoveToEnd",
64 "shift-up": "editor::SelectUp",
65 "ctrl-shift-P": "editor::SelectUp",
66 "shift-down": "editor::SelectDown",
67 "ctrl-shift-N": "editor::SelectDown",
68 "shift-left": "editor::SelectLeft",
69 "ctrl-shift-B": "editor::SelectLeft",
70 "shift-right": "editor::SelectRight",
71 "ctrl-shift-F": "editor::SelectRight",
72 "alt-shift-left": "editor::SelectToPreviousWordStart",
73 "alt-shift-B": "editor::SelectToPreviousWordStart",
74 "alt-shift-right": "editor::SelectToNextWordEnd",
75 "alt-shift-F": "editor::SelectToNextWordEnd",
76 "cmd-shift-up": "editor::SelectToBeginning",
77 "cmd-shift-down": "editor::SelectToEnd",
78 "cmd-a": "editor::SelectAll",
79 "cmd-l": "editor::SelectLine",
80 "cmd-shift-left": [
81 "editor::SelectToBeginningOfLine",
82 {
83 "stop_at_soft_wraps": true
84 }
85 ],
86 "ctrl-shift-A": [
87 "editor::SelectToBeginningOfLine",
88 {
89 "stop_at_soft_wraps": true
90 }
91 ],
92 "cmd-shift-right": [
93 "editor::SelectToEndOfLine",
94 {
95 "stop_at_soft_wraps": true
96 }
97 ],
98 "ctrl-shift-E": [
99 "editor::SelectToEndOfLine",
100 {
101 "stop_at_soft_wraps": true
102 }
103 ],
104 "pageup": "editor::PageUp",
105 "pagedown": "editor::PageDown"
106 }
107 },
108 {
109 "context": "Editor && mode == full",
110 "bindings": {
111 "enter": "editor::Newline",
112 "cmd-f": [
113 "buffer_search::Deploy",
114 {
115 "focus": true
116 }
117 ],
118 "cmd-e": [
119 "buffer_search::Deploy",
120 {
121 "focus": false
122 }
123 ]
124 }
125 },
126 {
127 "context": "Editor && mode == auto_height",
128 "bindings": {
129 "alt-enter": [
130 "editor::Input",
131 "\n"
132 ]
133 }
134 },
135 {
136 "context": "Pane",
137 "bindings": {
138 "cmd-f": "project_search::ToggleFocus",
139 "cmd-g": "search::SelectNextMatch",
140 "cmd-shift-G": "search::SelectPrevMatch"
141 }
142 },
143 {
144 "context": "BufferSearchBar",
145 "bindings": {
146 "escape": "buffer_search::Dismiss",
147 "cmd-f": "buffer_search::FocusEditor",
148 "enter": "search::SelectNextMatch",
149 "shift-enter": "search::SelectPrevMatch"
150 }
151 },
152 // Bindings from VS Code
153 {
154 "context": "Editor",
155 "bindings": {
156 "cmd-[": "editor::Outdent",
157 "cmd-]": "editor::Indent",
158 "cmd-alt-up": "editor::AddSelectionAbove",
159 "cmd-ctrl-p": "editor::AddSelectionAbove",
160 "cmd-alt-down": "editor::AddSelectionBelow",
161 "cmd-ctrl-n": "editor::AddSelectionBelow",
162 "cmd-d": [
163 "editor::SelectNext",
164 {
165 "replace_newest": false
166 }
167 ],
168 "cmd-k cmd-d": [
169 "editor::SelectNext",
170 {
171 "replace_newest": true
172 }
173 ],
174 "cmd-/": "editor::ToggleComments",
175 "alt-up": "editor::SelectLargerSyntaxNode",
176 "alt-down": "editor::SelectSmallerSyntaxNode",
177 "cmd-u": "editor::UndoSelection",
178 "cmd-shift-U": "editor::RedoSelection",
179 "f8": "editor::GoToNextDiagnostic",
180 "shift-f8": "editor::GoToPrevDiagnostic",
181 "f2": "editor::Rename",
182 "f12": "editor::GoToDefinition",
183 "alt-shift-f12": "editor::FindAllReferences",
184 "ctrl-m": "editor::MoveToEnclosingBracket",
185 "alt-cmd-[": "editor::Fold",
186 "alt-cmd-]": "editor::UnfoldLines",
187 "ctrl-space": "editor::ShowCompletions",
188 "cmd-.": "editor::ToggleCodeActions"
189 }
190 },
191 {
192 "context": "Editor && mode == full",
193 "bindings": {
194 "cmd-shift-O": "outline::Toggle",
195 "ctrl-g": "go_to_line::Toggle"
196 }
197 },
198 {
199 "context": "Pane",
200 "bindings": {
201 "ctrl--": "pane::GoBack",
202 "shift-ctrl-_": "pane::GoForward",
203 "cmd-shift-F": "project_search::ToggleFocus"
204 }
205 },
206 {
207 "context": "Workspace",
208 "bindings": {
209 "cmd-shift-F": "project_search::Deploy",
210 "cmd-k cmd-t": "theme_selector::Toggle",
211 "cmd-k t": "theme_selector::Reload",
212 "cmd-t": "project_symbols::Toggle",
213 "cmd-p": "file_finder::Toggle",
214 "cmd-shift-P": "command_palette::Toggle"
215 }
216 },
217 // Bindings from Sublime Text
218 {
219 "context": "Editor",
220 "bindings": {
221 "ctrl-shift-K": "editor::DeleteLine",
222 "cmd-shift-D": "editor::DuplicateLine",
223 "cmd-shift-L": "editor::SplitSelectionIntoLines",
224 "ctrl-cmd-up": "editor::MoveLineUp",
225 "ctrl-cmd-down": "editor::MoveLineDown",
226 "ctrl-alt-backspace": "editor::DeleteToPreviousSubwordStart",
227 "ctrl-alt-h": "editor::DeleteToPreviousSubwordStart",
228 "ctrl-alt-delete": "editor::DeleteToNextSubwordEnd",
229 "ctrl-alt-d": "editor::DeleteToNextSubwordEnd",
230 "ctrl-alt-left": "editor::MoveToPreviousSubwordStart",
231 "ctrl-alt-b": "editor::MoveToPreviousSubwordStart",
232 "ctrl-alt-right": "editor::MoveToNextSubwordEnd",
233 "ctrl-alt-f": "editor::MoveToNextSubwordEnd",
234 "ctrl-alt-shift-left": "editor::SelectToPreviousSubwordStart",
235 "ctrl-alt-shift-B": "editor::SelectToPreviousSubwordStart",
236 "ctrl-alt-shift-right": "editor::SelectToNextSubwordEnd",
237 "ctrl-alt-shift-F": "editor::SelectToNextSubwordEnd"
238 }
239 },
240 {
241 "bindings": {
242 "cmd-k cmd-left": "workspace::ActivatePreviousPane",
243 "cmd-k cmd-right": "workspace::ActivateNextPane"
244 }
245 },
246 {
247 "context": "Pane",
248 "bindings": {
249 "cmd-k up": [
250 "pane::Split",
251 "Up"
252 ],
253 "cmd-k down": [
254 "pane::Split",
255 "Down"
256 ],
257 "cmd-k left": [
258 "pane::Split",
259 "Left"
260 ],
261 "cmd-k right": [
262 "pane::Split",
263 "Right"
264 ]
265 }
266 },
267 // Bindings that should be unified with bindings for more general actions
268 {
269 "context": "Editor && renaming",
270 "bindings": {
271 "enter": "editor::ConfirmRename"
272 }
273 },
274 {
275 "context": "Editor && showing_completions",
276 "bindings": {
277 "enter": "editor::ConfirmCompletion",
278 "tab": "editor::ConfirmCompletion"
279 }
280 },
281 {
282 "context": "Editor && showing_code_actions",
283 "bindings": {
284 "enter": "editor::ConfirmCodeAction"
285 }
286 },
287 // Custom bindings
288 {
289 "bindings": {
290 "ctrl-alt-cmd-f": "workspace::FollowNextCollaborator",
291 "cmd-alt-i": "zed::DebugElements",
292 "alt-cmd-,": "zed::OpenKeymap"
293 }
294 },
295 {
296 "context": "Editor",
297 "bindings": {
298 "ctrl-w": "editor::SelectLargerSyntaxNode",
299 "ctrl-shift-W": "editor::SelectSmallerSyntaxNode",
300 "alt-cmd-f": "editor::FoldSelectedRanges",
301 "alt-enter": "editor::OpenExcerpts",
302 "cmd-f10": "editor::RestartLanguageServer"
303 }
304 },
305 {
306 "context": "ProjectSearchBar",
307 "bindings": {
308 "cmd-enter": "project_search::SearchInNew"
309 }
310 },
311 {
312 "context": "Workspace",
313 "bindings": {
314 "alt-shift-D": "diagnostics::Deploy",
315 "ctrl-alt-cmd-j": "journal::NewJournalEntry",
316 "cmd-1": [
317 "workspace::ToggleSidebarItemFocus",
318 {
319 "side": "Left",
320 "item_index": 0
321 }
322 ],
323 "cmd-shift-!": [
324 "workspace::ToggleSidebarItem",
325 {
326 "side": "Left",
327 "item_index": 0
328 }
329 ]
330 }
331 },
332 {
333 "context": "ProjectPanel",
334 "bindings": {
335 "left": "project_panel::CollapseSelectedEntry",
336 "right": "project_panel::ExpandSelectedEntry"
337 }
338 }
339]