1# Configuring Zed
2
3Zed is designed to be configured: we want to fit your workflow and preferences exactly. We provide default settings that are designed to be a comfortable starting point for as many people as possible, but we hope you will enjoy tweaking it to make it feel incredible.
4
5In addition to the settings described here, you may also want to change your [theme](./themes.md), configure your [key bindings](./key-bindings.md), set up [tasks](./tasks.md) or install [extensions](https://github.com/zed-industries/extensions).
6
7## Accessing Settings
8
9<!--
10TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
11Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
12
13TBD: Add settings documentation about how settings are merged as overlays. E.g. project>local>default. Note how settings that are maps are merged, but settings that are arrays are replaced and must include the defaults.
14-->
15
16You can open your local and project settings via the command palette {#kb zed::OpenSettings} or with the shortcut `cmd+,`.
17
18Although most projects will only need one settings file at the root, you can add more local settings files for subdirectories as needed. Not all settings can be set in local files, just those that impact the behavior of the editor and language tooling. For example you can set `tab_size`, `formatter` etc. but not `theme`, `vim_mode` and similar.
19
20To edit settings directly in the code, you can access the JSON via {#kb zed::OpenSettingsFile} or with `opt+cmd+,`.
21
22# Settings
23
24## Active Pane Modifiers
25
26- Description: Styling settings applied to the active pane.
27- Setting: `active_pane_modifiers`
28- Default:
29
30```json [settings]
31{
32 "active_pane_modifiers": {
33 "border_size": 0.0,
34 "inactive_opacity": 1.0
35 }
36}
37```
38
39### Border size
40
41- Description: Size of the border surrounding the active pane. When set to 0, the active pane doesn't have any border. The border is drawn inset.
42- Setting: `border_size`
43- Default: `0.0`
44
45**Options**
46
47Non-negative `float` values
48
49### Inactive Opacity
50
51- Description: Opacity of inactive panels. When set to 1.0, the inactive panes have the same opacity as the active one. If set to 0, the inactive panes content will not be visible at all. Values are clamped to the [0.0, 1.0] range.
52- Setting: `inactive_opacity`
53- Default: `1.0`
54
55**Options**
56
57`float` values
58
59## Bottom Dock Layout
60
61- Description: Control the layout of the bottom dock, relative to the left and right docks.
62- Setting: `bottom_dock_layout`
63- Default: `"contained"`
64
65**Options**
66
671. Contain the bottom dock, giving the full height of the window to the left and right docks.
68
69```json [settings]
70{
71 "bottom_dock_layout": "contained"
72}
73```
74
752. Give the bottom dock the full width of the window, truncating the left and right docks.
76
77```json [settings]
78{
79 "bottom_dock_layout": "full"
80}
81```
82
833. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window.
84
85```json [settings]
86{
87 "bottom_dock_layout": "left_aligned"
88}
89```
90
914. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
92
93```json [settings]
94{
95 "bottom_dock_layout": "right_aligned"
96}
97```
98
99## Agent Font Size
100
101- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
102- Setting: `agent_font_size`
103- Default: `null`
104
105**Options**
106
107`integer` values from `6` to `100` pixels (inclusive)
108
109## Allow Rewrap
110
111- Description: Controls where the {#action editor::Rewrap} action is allowed in the current language scope
112- Setting: `allow_rewrap`
113- Default: `"in_comments"`
114
115**Options**
116
1171. Allow rewrap in comments only:
118
119```json [settings]
120{
121 "allow_rewrap": "in_comments"
122}
123```
124
1252. Allow rewrap in selections only:
126
127```json [settings]
128{
129 "allow_rewrap": "in_selections"
130}
131```
132
1333. Allow rewrap anywhere:
134
135```json [settings]
136{
137 "allow_rewrap": "anywhere"
138}
139```
140
141Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
142
143## Auto Indent
144
145- Description: Whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis.
146- Setting: `auto_indent`
147- Default: `true`
148
149**Options**
150
151`boolean` values
152
153## Auto Indent On Paste
154
155- Description: Whether indentation of pasted content should be adjusted based on the context
156- Setting: `auto_indent_on_paste`
157- Default: `true`
158
159**Options**
160
161`boolean` values
162
163## Auto Install extensions
164
165- Description: Define extensions to be autoinstalled or never be installed.
166- Setting: `auto_install_extension`
167- Default: `{ "html": true }`
168
169**Options**
170
171You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions.md#installation-location):
172
173On macOS:
174
175```sh
176ls ~/Library/Application\ Support/Zed/extensions/installed/
177```
178
179On Linux:
180
181```sh
182ls ~/.local/share/zed/extensions/installed
183```
184
185Define extensions which should be installed (`true`) or never installed (`false`).
186
187```json [settings]
188{
189 "auto_install_extensions": {
190 "html": true,
191 "dockerfile": true,
192 "docker-compose": false
193 }
194}
195```
196
197## Autosave
198
199- Description: When to automatically save edited buffers.
200- Setting: `autosave`
201- Default: `off`
202
203**Options**
204
2051. To disable autosave, set it to `off`:
206
207```json [settings]
208{
209 "autosave": "off"
210}
211```
212
2132. To autosave when focus changes, use `on_focus_change`:
214
215```json [settings]
216{
217 "autosave": "on_focus_change"
218}
219```
220
2213. To autosave when the active window changes, use `on_window_change`:
222
223```json [settings]
224{
225 "autosave": "on_window_change"
226}
227```
228
2294. To autosave after an inactivity period, use `after_delay`:
230
231```json [settings]
232{
233 "autosave": {
234 "after_delay": {
235 "milliseconds": 1000
236 }
237 }
238}
239```
240
241Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.
242
243## Autoscroll on Clicks
244
245- Description: Whether to scroll when clicking near the edge of the visible text area.
246- Setting: `autoscroll_on_clicks`
247- Default: `false`
248
249**Options**
250
251`boolean` values
252
253## Auto Signature Help
254
255- Description: Show method signatures in the editor, when inside parentheses
256- Setting: `auto_signature_help`
257- Default: `false`
258
259**Options**
260
261`boolean` values
262
263### Show Signature Help After Edits
264
265- Description: Whether to show the signature help after completion or a bracket pair inserted. If `auto_signature_help` is enabled, this setting will be treated as enabled also.
266- Setting: `show_signature_help_after_edits`
267- Default: `false`
268
269**Options**
270
271`boolean` values
272
273## Auto Update
274
275- Description: Whether or not to automatically check for updates.
276- Setting: `auto_update`
277- Default: `true`
278
279**Options**
280
281`boolean` values
282
283## Base Keymap
284
285- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
286- Setting: `base_keymap`
287- Default: `VSCode`
288
289**Options**
290
2911. VS Code
292
293```json [settings]
294{
295 "base_keymap": "VSCode"
296}
297```
298
2992. Atom
300
301```json [settings]
302{
303 "base_keymap": "Atom"
304}
305```
306
3073. JetBrains
308
309```json [settings]
310{
311 "base_keymap": "JetBrains"
312}
313```
314
3154. None
316
317```json [settings]
318{
319 "base_keymap": "None"
320}
321```
322
3235. Sublime Text
324
325```json [settings]
326{
327 "base_keymap": "SublimeText"
328}
329```
330
3316. TextMate
332
333```json [settings]
334{
335 "base_keymap": "TextMate"
336}
337```
338
339## Buffer Font Family
340
341- Description: The name of a font to use for rendering text in the editor.
342- Setting: `buffer_font_family`
343- Default: `.ZedMono`. This currently aliases to [Lilex](https://lilex.myrt.co).
344
345**Options**
346
347The name of any font family installed on the user's system, or `".ZedMono"`.
348
349## Buffer Font Features
350
351- Description: The OpenType features to enable for text in the editor.
352- Setting: `buffer_font_features`
353- Default: `null`
354- Platform: macOS and Windows.
355
356**Options**
357
358Zed supports all OpenType features that can be enabled or disabled for a given buffer or terminal font, as well as setting values for font features.
359
360For example, to disable font ligatures, add the following to your settings:
361
362```json [settings]
363{
364 "buffer_font_features": {
365 "calt": false
366 }
367}
368```
369
370You can also set other OpenType features, like setting `cv01` to `7`:
371
372```json [settings]
373{
374 "buffer_font_features": {
375 "cv01": 7
376 }
377}
378```
379
380## Buffer Font Fallbacks
381
382- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
383- Setting: `buffer_font_fallbacks`
384- Default: `null`
385- Platform: macOS and Windows.
386
387**Options**
388
389For example, to use `Nerd Font` as a fallback, add the following to your settings:
390
391```json [settings]
392{
393 "buffer_font_fallbacks": ["Nerd Font"]
394}
395```
396
397## Buffer Font Size
398
399- Description: The default font size for text in the editor.
400- Setting: `buffer_font_size`
401- Default: `15`
402
403**Options**
404
405A font size from `6` to `100` pixels (inclusive)
406
407## Buffer Font Weight
408
409- Description: The default font weight for text in the editor.
410- Setting: `buffer_font_weight`
411- Default: `400`
412
413**Options**
414
415`integer` values between `100` and `900`
416
417## Buffer Line Height
418
419- Description: The default line height for text in the editor.
420- Setting: `buffer_line_height`
421- Default: `"comfortable"`
422
423**Options**
424
425`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
426
427## Centered Layout
428
429- Description: Configuration for the centered layout mode.
430- Setting: `centered_layout`
431- Default:
432
433```json [settings]
434"centered_layout": {
435 "left_padding": 0.2,
436 "right_padding": 0.2,
437}
438```
439
440**Options**
441
442The `left_padding` and `right_padding` options define the relative width of the
443left and right padding of the central pane from the workspace when the centered layout mode is activated. Valid values range is from `0` to `0.4`.
444
445## Close on File Delete
446
447- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
448- Setting: `close_on_file_delete`
449- Default: `false`
450
451**Options**
452
453`boolean` values
454
455When enabled, this setting will automatically close tabs for files that have been deleted from the file system. This is particularly useful for workflows involving temporary or scratch files that are frequently created and deleted. When disabled (default), deleted files remain open with a strikethrough through their tab title.
456
457Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
458
459## Confirm Quit
460
461- Description: Whether or not to prompt the user to confirm before closing the application.
462- Setting: `confirm_quit`
463- Default: `false`
464
465**Options**
466
467`boolean` values
468
469## Diagnostics Max Severity
470
471- Description: Which level to use to filter out diagnostics displayed in the editor
472- Setting: `diagnostics_max_severity`
473- Default: `null`
474
475**Options**
476
4771. Allow all diagnostics (default):
478
479```json [settings]
480{
481 "diagnostics_max_severity": "all"
482}
483```
484
4852. Show only errors:
486
487```json [settings]
488{
489 "diagnostics_max_severity": "error"
490}
491```
492
4933. Show errors and warnings:
494
495```json [settings]
496{
497 "diagnostics_max_severity": "warning"
498}
499```
500
5014. Show errors, warnings, and information:
502
503```json [settings]
504{
505 "diagnostics_max_severity": "info"
506}
507```
508
5095. Show all including hints:
510
511```json [settings]
512{
513 "diagnostics_max_severity": "hint"
514}
515```
516
517## Disable AI
518
519- Description: Whether to disable all AI features in Zed
520- Setting: `disable_ai`
521- Default: `false`
522
523**Options**
524
525`boolean` values
526
527## Direnv Integration
528
529- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
530 `direnv` integration make it possible to use the environment variables set by a `direnv` configuration to detect some language servers in `$PATH` instead of installing them.
531 It also allows for those environment variables to be used in tasks.
532- Setting: `load_direnv`
533- Default: `"direct"`
534
535**Options**
536
537There are two options to choose from:
538
5391. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
5402. `direct`: Use `direnv export json` to load direnv. This will load direnv directly without relying on the shell hook and might cause some inconsistencies. This allows direnv to work with any shell.
541
542## Double Click In Multibuffer
543
544- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
545- Setting: `double_click_in_multibuffer`
546- Default: `"select"`
547
548**Options**
549
5501. Behave as a regular buffer and select the whole word (default):
551
552```json [settings]
553{
554 "double_click_in_multibuffer": "select"
555}
556```
557
5582. Open the excerpt clicked as a new buffer in the new tab:
559
560```json [settings]
561{
562 "double_click_in_multibuffer": "open"
563}
564```
565
566For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
567
568## Drop Target Size
569
570- Description: Relative size of the drop target in the editor that will open dropped file as a split pane (0-0.5). For example, 0.25 means if you drop onto the top/bottom quarter of the pane a new vertical split will be used, if you drop onto the left/right quarter of the pane a new horizontal split will be used.
571- Setting: `drop_target_size`
572- Default: `0.2`
573
574**Options**
575
576`float` values between `0` and `0.5`
577
578## Edit Predictions
579
580- Description: Settings for edit predictions.
581- Setting: `edit_predictions`
582- Default:
583
584```json [settings]
585 "edit_predictions": {
586 "disabled_globs": [
587 "**/.env*",
588 "**/*.pem",
589 "**/*.key",
590 "**/*.cert",
591 "**/*.crt",
592 "**/.dev.vars",
593 "**/secrets.yml"
594 ]
595 }
596```
597
598**Options**
599
600### Disabled Globs
601
602- Description: A list of globs for which edit predictions should be disabled for. This list adds to a pre-existing, sensible default set of globs. Any additional ones you add are combined with them.
603- Setting: `disabled_globs`
604- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
605
606**Options**
607
608List of `string` values.
609
610## Edit Predictions Disabled in
611
612- Description: A list of language scopes in which edit predictions should be disabled.
613- Setting: `edit_predictions_disabled_in`
614- Default: `[]`
615
616**Options**
617
618List of `string` values
619
6201. Don't show edit predictions in comments:
621
622```json [settings]
623"disabled_in": ["comment"]
624```
625
6262. Don't show edit predictions in strings and comments:
627
628```json [settings]
629"disabled_in": ["comment", "string"]
630```
631
6323. Only in Go, don't show edit predictions in strings and comments:
633
634```json [settings]
635{
636 "languages": {
637 "Go": {
638 "edit_predictions_disabled_in": ["comment", "string"]
639 }
640 }
641}
642```
643
644## Current Line Highlight
645
646- Description: How to highlight the current line in the editor.
647- Setting: `current_line_highlight`
648- Default: `all`
649
650**Options**
651
6521. Don't highlight the current line:
653
654```json [settings]
655"current_line_highlight": "none"
656```
657
6582. Highlight the gutter area:
659
660```json [settings]
661"current_line_highlight": "gutter"
662```
663
6643. Highlight the editor area:
665
666```json [settings]
667"current_line_highlight": "line"
668```
669
6704. Highlight the full line:
671
672```json [settings]
673"current_line_highlight": "all"
674```
675
676## Selection Highlight
677
678- Description: Whether to highlight all occurrences of the selected text in an editor.
679- Setting: `selection_highlight`
680- Default: `true`
681
682## Rounded Selection
683
684- Description: Whether the text selection should have rounded corners.
685- Setting: `rounded_selection`
686- Default: `true`
687
688## Cursor Blink
689
690- Description: Whether or not the cursor blinks.
691- Setting: `cursor_blink`
692- Default: `true`
693
694**Options**
695
696`boolean` values
697
698## Cursor Shape
699
700- Description: Cursor shape for the default editor.
701- Setting: `cursor_shape`
702- Default: `bar`
703
704**Options**
705
7061. A vertical bar:
707
708```json [settings]
709"cursor_shape": "bar"
710```
711
7122. A block that surrounds the following character:
713
714```json [settings]
715"cursor_shape": "block"
716```
717
7183. An underline / underscore that runs along the following character:
719
720```json [settings]
721"cursor_shape": "underline"
722```
723
7244. An box drawn around the following character:
725
726```json [settings]
727"cursor_shape": "hollow"
728```
729
730## Gutter
731
732- Description: Settings for the editor gutter
733- Setting: `gutter`
734- Default:
735
736```json [settings]
737{
738 "gutter": {
739 "line_numbers": true,
740 "runnables": true,
741 "breakpoints": true,
742 "folds": true,
743 "min_line_number_digits": 4
744 }
745}
746```
747
748**Options**
749
750- `line_numbers`: Whether to show line numbers in the gutter
751- `runnables`: Whether to show runnable buttons in the gutter
752- `breakpoints`: Whether to show breakpoints in the gutter
753- `folds`: Whether to show fold buttons in the gutter
754- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
755
756## Hide Mouse
757
758- Description: Determines when the mouse cursor should be hidden in an editor or input box.
759- Setting: `hide_mouse`
760- Default: `on_typing_and_movement`
761
762**Options**
763
7641. Never hide the mouse cursor:
765
766```json [settings]
767"hide_mouse": "never"
768```
769
7702. Hide only when typing:
771
772```json [settings]
773"hide_mouse": "on_typing"
774```
775
7763. Hide on both typing and cursor movement:
777
778```json [settings]
779"hide_mouse": "on_typing_and_movement"
780```
781
782## Snippet Sort Order
783
784- Description: Determines how snippets are sorted relative to other completion items.
785- Setting: `snippet_sort_order`
786- Default: `inline`
787
788**Options**
789
7901. Place snippets at the top of the completion list:
791
792```json [settings]
793"snippet_sort_order": "top"
794```
795
7962. Place snippets normally without any preference:
797
798```json [settings]
799"snippet_sort_order": "inline"
800```
801
8023. Place snippets at the bottom of the completion list:
803
804```json [settings]
805"snippet_sort_order": "bottom"
806```
807
8084. Do not show snippets in the completion list at all:
809
810```json [settings]
811"snippet_sort_order": "none"
812```
813
814## Editor Scrollbar
815
816- Description: Whether or not to show the editor scrollbar and various elements in it.
817- Setting: `scrollbar`
818- Default:
819
820```json [settings]
821"scrollbar": {
822 "show": "auto",
823 "cursors": true,
824 "git_diff": true,
825 "search_results": true,
826 "selected_text": true,
827 "selected_symbol": true,
828 "diagnostics": "all",
829 "axes": {
830 "horizontal": true,
831 "vertical": true,
832 },
833},
834```
835
836### Show Mode
837
838- Description: When to show the editor scrollbar.
839- Setting: `show`
840- Default: `auto`
841
842**Options**
843
8441. Show the scrollbar if there's important information or follow the system's configured behavior:
845
846```json [settings]
847"scrollbar": {
848 "show": "auto"
849}
850```
851
8522. Match the system's configured behavior:
853
854```json [settings]
855"scrollbar": {
856 "show": "system"
857}
858```
859
8603. Always show the scrollbar:
861
862```json [settings]
863"scrollbar": {
864 "show": "always"
865}
866```
867
8684. Never show the scrollbar:
869
870```json [settings]
871"scrollbar": {
872 "show": "never"
873}
874```
875
876### Cursor Indicators
877
878- Description: Whether to show cursor positions in the scrollbar.
879- Setting: `cursors`
880- Default: `true`
881
882**Options**
883
884`boolean` values
885
886### Git Diff Indicators
887
888- Description: Whether to show git diff indicators in the scrollbar.
889- Setting: `git_diff`
890- Default: `true`
891
892**Options**
893
894`boolean` values
895
896### Search Results Indicators
897
898- Description: Whether to show buffer search results in the scrollbar.
899- Setting: `search_results`
900- Default: `true`
901
902**Options**
903
904`boolean` values
905
906### Selected Text Indicators
907
908- Description: Whether to show selected text occurrences in the scrollbar.
909- Setting: `selected_text`
910- Default: `true`
911
912**Options**
913
914`boolean` values
915
916### Selected Symbols Indicators
917
918- Description: Whether to show selected symbol occurrences in the scrollbar.
919- Setting: `selected_symbol`
920- Default: `true`
921
922**Options**
923
924`boolean` values
925
926### Diagnostics
927
928- Description: Which diagnostic indicators to show in the scrollbar.
929- Setting: `diagnostics`
930- Default: `all`
931
932**Options**
933
9341. Show all diagnostics:
935
936```json [settings]
937{
938 "show_diagnostics": "all"
939}
940```
941
9422. Do not show any diagnostics:
943
944```json [settings]
945{
946 "show_diagnostics": "off"
947}
948```
949
9503. Show only errors:
951
952```json [settings]
953{
954 "show_diagnostics": "error"
955}
956```
957
9584. Show only errors and warnings:
959
960```json [settings]
961{
962 "show_diagnostics": "warning"
963}
964```
965
9665. Show only errors, warnings, and information:
967
968```json [settings]
969{
970 "show_diagnostics": "info"
971}
972```
973
974### Axes
975
976- Description: Forcefully enable or disable the scrollbar for each axis
977- Setting: `axes`
978- Default:
979
980```json [settings]
981"scrollbar": {
982 "axes": {
983 "horizontal": true,
984 "vertical": true,
985 },
986}
987```
988
989#### Horizontal
990
991- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
992- Setting: `horizontal`
993- Default: `true`
994
995**Options**
996
997`boolean` values
998
999#### Vertical
1000
1001- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
1002- Setting: `vertical`
1003- Default: `true`
1004
1005**Options**
1006
1007`boolean` values
1008
1009## Minimap
1010
1011- Description: Settings related to the editor's minimap, which provides an overview of your document.
1012- Setting: `minimap`
1013- Default:
1014
1015```json [settings]
1016{
1017 "minimap": {
1018 "show": "never",
1019 "thumb": "always",
1020 "thumb_border": "left_open",
1021 "current_line_highlight": null
1022 }
1023}
1024```
1025
1026### Show Mode
1027
1028- Description: When to show the minimap in the editor.
1029- Setting: `show`
1030- Default: `never`
1031
1032**Options**
1033
10341. Always show the minimap:
1035
1036```json [settings]
1037{
1038 "show": "always"
1039}
1040```
1041
10422. Show the minimap if the editor's scrollbars are visible:
1043
1044```json [settings]
1045{
1046 "show": "auto"
1047}
1048```
1049
10503. Never show the minimap:
1051
1052```json [settings]
1053{
1054 "show": "never"
1055}
1056```
1057
1058### Thumb Display
1059
1060- Description: When to show the minimap thumb (the visible editor area) in the minimap.
1061- Setting: `thumb`
1062- Default: `always`
1063
1064**Options**
1065
10661. Show the minimap thumb when hovering over the minimap:
1067
1068```json [settings]
1069{
1070 "thumb": "hover"
1071}
1072```
1073
10742. Always show the minimap thumb:
1075
1076```json [settings]
1077{
1078 "thumb": "always"
1079}
1080```
1081
1082### Thumb Border
1083
1084- Description: How the minimap thumb border should look.
1085- Setting: `thumb_border`
1086- Default: `left_open`
1087
1088**Options**
1089
10901. Display a border on all sides of the thumb:
1091
1092```json [settings]
1093{
1094 "thumb_border": "full"
1095}
1096```
1097
10982. Display a border on all sides except the left side:
1099
1100```json [settings]
1101{
1102 "thumb_border": "left_open"
1103}
1104```
1105
11063. Display a border on all sides except the right side:
1107
1108```json [settings]
1109{
1110 "thumb_border": "right_open"
1111}
1112```
1113
11144. Display a border only on the left side:
1115
1116```json [settings]
1117{
1118 "thumb_border": "left_only"
1119}
1120```
1121
11225. Display the thumb without any border:
1123
1124```json [settings]
1125{
1126 "thumb_border": "none"
1127}
1128```
1129
1130### Current Line Highlight
1131
1132- Description: How to highlight the current line in the minimap.
1133- Setting: `current_line_highlight`
1134- Default: `null`
1135
1136**Options**
1137
11381. Inherit the editor's current line highlight setting:
1139
1140```json [settings]
1141{
1142 "minimap": {
1143 "current_line_highlight": null
1144 }
1145}
1146```
1147
11482. Highlight the current line in the minimap:
1149
1150```json [settings]
1151{
1152 "minimap": {
1153 "current_line_highlight": "line"
1154 }
1155}
1156```
1157
1158or
1159
1160```json [settings]
1161{
1162 "minimap": {
1163 "current_line_highlight": "all"
1164 }
1165}
1166```
1167
11683. Do not highlight the current line in the minimap:
1169
1170```json [settings]
1171{
1172 "minimap": {
1173 "current_line_highlight": "gutter"
1174 }
1175}
1176```
1177
1178or
1179
1180```json [settings]
1181{
1182 "minimap": {
1183 "current_line_highlight": "none"
1184 }
1185}
1186```
1187
1188## Editor Tab Bar
1189
1190- Description: Settings related to the editor's tab bar.
1191- Settings: `tab_bar`
1192- Default:
1193
1194```json [settings]
1195"tab_bar": {
1196 "show": true,
1197 "show_nav_history_buttons": true,
1198 "show_tab_bar_buttons": true
1199}
1200```
1201
1202### Show
1203
1204- Description: Whether or not to show the tab bar in the editor.
1205- Setting: `show`
1206- Default: `true`
1207
1208**Options**
1209
1210`boolean` values
1211
1212### Navigation History Buttons
1213
1214- Description: Whether or not to show the navigation history buttons.
1215- Setting: `show_nav_history_buttons`
1216- Default: `true`
1217
1218**Options**
1219
1220`boolean` values
1221
1222### Tab Bar Buttons
1223
1224- Description: Whether or not to show the tab bar buttons.
1225- Setting: `show_tab_bar_buttons`
1226- Default: `true`
1227
1228**Options**
1229
1230`boolean` values
1231
1232## Editor Tabs
1233
1234- Description: Configuration for the editor tabs.
1235- Setting: `tabs`
1236- Default:
1237
1238```json [settings]
1239"tabs": {
1240 "close_position": "right",
1241 "file_icons": false,
1242 "git_status": false,
1243 "activate_on_close": "history",
1244 "show_close_button": "hover",
1245 "show_diagnostics": "off"
1246},
1247```
1248
1249### Close Position
1250
1251- Description: Where to display close button within a tab.
1252- Setting: `close_position`
1253- Default: `right`
1254
1255**Options**
1256
12571. Display the close button on the right:
1258
1259```json [settings]
1260{
1261 "close_position": "right"
1262}
1263```
1264
12652. Display the close button on the left:
1266
1267```json [settings]
1268{
1269 "close_position": "left"
1270}
1271```
1272
1273### File Icons
1274
1275- Description: Whether to show the file icon for a tab.
1276- Setting: `file_icons`
1277- Default: `false`
1278
1279### Git Status
1280
1281- Description: Whether or not to show Git file status in tab.
1282- Setting: `git_status`
1283- Default: `false`
1284
1285### Activate on close
1286
1287- Description: What to do after closing the current tab.
1288- Setting: `activate_on_close`
1289- Default: `history`
1290
1291**Options**
1292
12931. Activate the tab that was open previously:
1294
1295```json [settings]
1296{
1297 "activate_on_close": "history"
1298}
1299```
1300
13012. Activate the right neighbour tab if present:
1302
1303```json [settings]
1304{
1305 "activate_on_close": "neighbour"
1306}
1307```
1308
13093. Activate the left neighbour tab if present:
1310
1311```json [settings]
1312{
1313 "activate_on_close": "left_neighbour"
1314}
1315```
1316
1317### Show close button
1318
1319- Description: Controls the appearance behavior of the tab's close button.
1320- Setting: `show_close_button`
1321- Default: `hover`
1322
1323**Options**
1324
13251. Show it just upon hovering the tab:
1326
1327```json [settings]
1328{
1329 "show_close_button": "hover"
1330}
1331```
1332
13332. Show it persistently:
1334
1335```json [settings]
1336{
1337 "show_close_button": "always"
1338}
1339```
1340
13413. Never show it, even if hovering it:
1342
1343```json [settings]
1344{
1345 "show_close_button": "hidden"
1346}
1347```
1348
1349### Show Diagnostics
1350
1351- Description: Whether to show diagnostics indicators in tabs. This setting only works when file icons are active and controls which files with diagnostic issues to mark.
1352- Setting: `show_diagnostics`
1353- Default: `off`
1354
1355**Options**
1356
13571. Do not mark any files:
1358
1359```json [settings]
1360{
1361 "show_diagnostics": "off"
1362}
1363```
1364
13652. Only mark files with errors:
1366
1367```json [settings]
1368{
1369 "show_diagnostics": "errors"
1370}
1371```
1372
13733. Mark files with errors and warnings:
1374
1375```json [settings]
1376{
1377 "show_diagnostics": "all"
1378}
1379```
1380
1381### Show Inline Code Actions
1382
1383- Description: Whether to show code action button at start of buffer line.
1384- Setting: `inline_code_actions`
1385- Default: `true`
1386
1387**Options**
1388
1389`boolean` values
1390
1391### Drag And Drop Selection
1392
1393- Description: Whether to allow drag and drop text selection in buffer. `delay` is the milliseconds that must elapse before drag and drop is allowed. Otherwise, a new text selection is created.
1394- Setting: `drag_and_drop_selection`
1395- Default:
1396
1397```json [settings]
1398"drag_and_drop_selection": {
1399 "enabled": true,
1400 "delay": 300
1401}
1402```
1403
1404## Editor Toolbar
1405
1406- Description: Whether or not to show various elements in the editor toolbar.
1407- Setting: `toolbar`
1408- Default:
1409
1410```json [settings]
1411"toolbar": {
1412 "breadcrumbs": true,
1413 "quick_actions": true,
1414 "selections_menu": true,
1415 "agent_review": true,
1416 "code_actions": false
1417},
1418```
1419
1420**Options**
1421
1422Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1423
1424## Use System Tabs
1425
1426- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
1427- Setting: `use_system_window_tabs`
1428- Default: `false`
1429
1430**Options**
1431
1432This setting enables integration with macOS’s native window tabbing feature. When set to `true`, Zed windows can be grouped together as tabs in a single macOS window, following the system-wide tabbing preferences set by the user (such as "Always", "In Full Screen", or "Never"). This setting is only available on macOS.
1433
1434## Enable Language Server
1435
1436- Description: Whether or not to use language servers to provide code intelligence.
1437- Setting: `enable_language_server`
1438- Default: `true`
1439
1440**Options**
1441
1442`boolean` values
1443
1444## Ensure Final Newline On Save
1445
1446- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1447- Setting: `ensure_final_newline_on_save`
1448- Default: `true`
1449
1450**Options**
1451
1452`boolean` values
1453
1454## Expand Excerpt Lines
1455
1456- Description: The default number of lines to expand excerpts in the multibuffer by
1457- Setting: `expand_excerpt_lines`
1458- Default: `5`
1459
1460**Options**
1461
1462Positive `integer` values
1463
1464## Excerpt Context Lines
1465
1466- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1467- Setting: `excerpt_context_lines`
1468- Default: `2`
1469
1470**Options**
1471
1472Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1473
1474## Extend Comment On Newline
1475
1476- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1477- Setting: `extend_comment_on_newline`
1478- Default: `true`
1479
1480**Options**
1481
1482`boolean` values
1483
1484## Status Bar
1485
1486- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1487- Setting: `status_bar`
1488- Default:
1489
1490```json [settings]
1491"status_bar": {
1492 "active_language_button": true,
1493 "cursor_position_button": true
1494},
1495```
1496
1497There is an experimental setting that completely hides the status bar. This causes major usability problems (you will be unable to use many of Zed's features), but is provided for those who value screen real-estate above all else.
1498
1499```json
1500"status_bar": {
1501 "experimental.show": false
1502}
1503```
1504
1505## LSP
1506
1507- Description: Configuration for language servers.
1508- Setting: `lsp`
1509- Default: `null`
1510
1511**Options**
1512
1513The following settings can be overridden for specific language servers:
1514
1515- `initialization_options`
1516- `settings`
1517
1518To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1519
1520Some options are passed via `initialization_options` to the language server. These are for options which must be specified at language server startup and when changed will require restarting the language server.
1521
1522For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1523
1524```json [settings]
1525"lsp": {
1526 "rust-analyzer": {
1527 "initialization_options": {
1528 "check": {
1529 "command": "clippy" // rust-analyzer.check.command (default: "check")
1530 }
1531 }
1532 }
1533}
1534```
1535
1536While other options may be changed at a runtime and should be placed under `settings`:
1537
1538```json [settings]
1539"lsp": {
1540 "yaml-language-server": {
1541 "settings": {
1542 "yaml": {
1543 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1544 }
1545 }
1546 }
1547}
1548```
1549
1550## Global LSP Settings
1551
1552- Description: Configuration for global LSP settings that apply to all language servers
1553- Setting: `global_lsp_settings`
1554- Default:
1555
1556```json [settings]
1557{
1558 "global_lsp_settings": {
1559 "button": true
1560 }
1561}
1562```
1563
1564**Options**
1565
1566- `button`: Whether to show the LSP status button in the status bar
1567
1568## LSP Highlight Debounce
1569
1570- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1571- Setting: `lsp_highlight_debounce`
1572- Default: `75`
1573
1574**Options**
1575
1576`integer` values representing milliseconds
1577
1578## Features
1579
1580- Description: Features that can be globally enabled or disabled
1581- Setting: `features`
1582- Default:
1583
1584```json [settings]
1585{
1586 "features": {
1587 "edit_prediction_provider": "zed"
1588 }
1589}
1590```
1591
1592### Edit Prediction Provider
1593
1594- Description: Which edit prediction provider to use
1595- Setting: `edit_prediction_provider`
1596- Default: `"zed"`
1597
1598**Options**
1599
16001. Use Zeta as the edit prediction provider:
1601
1602```json [settings]
1603{
1604 "features": {
1605 "edit_prediction_provider": "zed"
1606 }
1607}
1608```
1609
16102. Use Copilot as the edit prediction provider:
1611
1612```json [settings]
1613{
1614 "features": {
1615 "edit_prediction_provider": "copilot"
1616 }
1617}
1618```
1619
16203. Use Supermaven as the edit prediction provider:
1621
1622```json [settings]
1623{
1624 "features": {
1625 "edit_prediction_provider": "supermaven"
1626 }
1627}
1628```
1629
16304. Turn off edit predictions across all providers
1631
1632```json [settings]
1633{
1634 "features": {
1635 "edit_prediction_provider": "none"
1636 }
1637}
1638```
1639
1640## Format On Save
1641
1642- Description: Whether or not to perform a buffer format before saving.
1643- Setting: `format_on_save`
1644- Default: `on`
1645
1646**Options**
1647
16481. `on`, enables format on save obeying `formatter` setting:
1649
1650```json [settings]
1651{
1652 "format_on_save": "on"
1653}
1654```
1655
16562. `off`, disables format on save:
1657
1658```json [settings]
1659{
1660 "format_on_save": "off"
1661}
1662```
1663
1664## Formatter
1665
1666- Description: How to perform a buffer format.
1667- Setting: `formatter`
1668- Default: `auto`
1669
1670**Options**
1671
16721. To use the current language server, use `"language_server"`:
1673
1674```json [settings]
1675{
1676 "formatter": "language_server"
1677}
1678```
1679
16802. Or to use an external command, use `"external"`. Specify the name of the formatting program to run, and an array of arguments to pass to the program. The buffer's text will be passed to the program on stdin, and the formatted output should be written to stdout. For example, the following command would strip trailing spaces using [`sed(1)`](https://linux.die.net/man/1/sed):
1681
1682```json [settings]
1683{
1684 "formatter": {
1685 "external": {
1686 "command": "sed",
1687 "arguments": ["-e", "s/ *$//"]
1688 }
1689 }
1690}
1691```
1692
16933. External formatters may optionally include a `{buffer_path}` placeholder which at runtime will include the path of the buffer being formatted. Formatters operate by receiving file content via standard input, reformatting it and then outputting it to standard output and so normally don't know the filename of what they are formatting. Tools like Prettier support receiving the file path via a command line argument which can then used to impact formatting decisions.
1694
1695WARNING: `{buffer_path}` should not be used to direct your formatter to read from a filename. Your formatter should only read from standard input and should not read or write files directly.
1696
1697```json [settings]
1698 "formatter": {
1699 "external": {
1700 "command": "prettier",
1701 "arguments": ["--stdin-filepath", "{buffer_path}"]
1702 }
1703 }
1704```
1705
17064. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1707
1708```json [settings]
1709{
1710 "formatter": [
1711 // Use ESLint's --fix:
1712 { "code_action": "source.fixAll.eslint" },
1713 // Organize imports on save:
1714 { "code_action": "source.organizeImports" }
1715 ]
1716}
1717```
1718
17195. Or to use multiple formatters consecutively, use an array of formatters:
1720
1721```json [settings]
1722{
1723 "formatter": [
1724 { "language_server": { "name": "rust-analyzer" } },
1725 {
1726 "external": {
1727 "command": "sed",
1728 "arguments": ["-e", "s/ *$//"]
1729 }
1730 }
1731 ]
1732}
1733```
1734
1735Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1736If any of the formatters fails, the subsequent ones will still be executed.
1737
1738## Auto close
1739
1740- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1741- Setting: `use_autoclose`
1742- Default: `true`
1743
1744**Options**
1745
1746`boolean` values
1747
1748## Always Treat Brackets As Autoclosed
1749
1750- Description: Controls how the editor handles the autoclosed characters.
1751- Setting: `always_treat_brackets_as_autoclosed`
1752- Default: `false`
1753
1754**Options**
1755
1756`boolean` values
1757
1758**Example**
1759
1760If the setting is set to `true`:
1761
17621. Enter in the editor: `)))`
17632. Move the cursor to the start: `^)))`
17643. Enter again: `)))`
1765
1766The result is still `)))` and not `))))))`, which is what it would be by default.
1767
1768## File Scan Exclusions
1769
1770- Setting: `file_scan_exclusions`
1771- Description: Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Overrides `file_scan_inclusions`.
1772- Default:
1773
1774```json [settings]
1775"file_scan_exclusions": [
1776 "**/.git",
1777 "**/.svn",
1778 "**/.hg",
1779 "**/.jj",
1780 "**/CVS",
1781 "**/.DS_Store",
1782 "**/Thumbs.db",
1783 "**/.classpath",
1784 "**/.settings"
1785],
1786```
1787
1788Note, specifying `file_scan_exclusions` in settings.json will override the defaults (shown above). If you are looking to exclude additional items you will need to include all the default values in your settings.
1789
1790## File Scan Inclusions
1791
1792- Setting: `file_scan_inclusions`
1793- Description: Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. `file_scan_exclusions` takes precedence over these inclusions.
1794- Default:
1795
1796```json [settings]
1797"file_scan_inclusions": [".env*"],
1798```
1799
1800## File Types
1801
1802- Setting: `file_types`
1803- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1804- Default:
1805
1806```json [settings]
1807"file_types": {
1808 "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1809 "Shell Script": [".env.*"]
1810}
1811```
1812
1813**Examples**
1814
1815To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1816
1817```json [settings]
1818{
1819 "file_types": {
1820 "C++": ["c"],
1821 "TOML": ["MyLockFile"],
1822 "Dockerfile": ["Dockerfile*"]
1823 }
1824}
1825```
1826
1827## Diagnostics
1828
1829- Description: Configuration for diagnostics-related features.
1830- Setting: `diagnostics`
1831- Default:
1832
1833```json [settings]
1834{
1835 "diagnostics": {
1836 "include_warnings": true,
1837 "inline": {
1838 "enabled": false
1839 },
1840 "update_with_cursor": false,
1841 "primary_only": false,
1842 "use_rendered": false
1843 }
1844}
1845```
1846
1847### Inline Diagnostics
1848
1849- Description: Whether or not to show diagnostics information inline.
1850- Setting: `inline`
1851- Default:
1852
1853```json [settings]
1854{
1855 "diagnostics": {
1856 "inline": {
1857 "enabled": false,
1858 "update_debounce_ms": 150,
1859 "padding": 4,
1860 "min_column": 0,
1861 "max_severity": null
1862 }
1863 }
1864}
1865```
1866
1867**Options**
1868
18691. Enable inline diagnostics.
1870
1871```json [settings]
1872{
1873 "diagnostics": {
1874 "inline": {
1875 "enabled": true
1876 }
1877 }
1878}
1879```
1880
18812. Delay diagnostic updates until some time after the last diagnostic update.
1882
1883```json [settings]
1884{
1885 "diagnostics": {
1886 "inline": {
1887 "enabled": true,
1888 "update_debounce_ms": 150
1889 }
1890 }
1891}
1892```
1893
18943. Set padding between the end of the source line and the start of the diagnostic.
1895
1896```json [settings]
1897{
1898 "diagnostics": {
1899 "inline": {
1900 "enabled": true,
1901 "padding": 4
1902 }
1903 }
1904}
1905```
1906
19074. Horizontally align inline diagnostics at the given column.
1908
1909```json [settings]
1910{
1911 "diagnostics": {
1912 "inline": {
1913 "enabled": true,
1914 "min_column": 80
1915 }
1916 }
1917}
1918```
1919
19205. Show only warning and error diagnostics.
1921
1922```json [settings]
1923{
1924 "diagnostics": {
1925 "inline": {
1926 "enabled": true,
1927 "max_severity": "warning"
1928 }
1929 }
1930}
1931```
1932
1933## Git
1934
1935- Description: Configuration for git-related features.
1936- Setting: `git`
1937- Default:
1938
1939```json [settings]
1940{
1941 "git": {
1942 "git_gutter": "tracked_files",
1943 "inline_blame": {
1944 "enabled": true
1945 },
1946 "branch_picker": {
1947 "show_author_name": true
1948 },
1949 "hunk_style": "staged_hollow"
1950 }
1951}
1952```
1953
1954### Git Gutter
1955
1956- Description: Whether or not to show the git gutter.
1957- Setting: `git_gutter`
1958- Default: `tracked_files`
1959
1960**Options**
1961
19621. Show git gutter in tracked files
1963
1964```json [settings]
1965{
1966 "git": {
1967 "git_gutter": "tracked_files"
1968 }
1969}
1970```
1971
19722. Hide git gutter
1973
1974```json [settings]
1975{
1976 "git": {
1977 "git_gutter": "hide"
1978 }
1979}
1980```
1981
1982### Gutter Debounce
1983
1984- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1985- Setting: `gutter_debounce`
1986- Default: `null`
1987
1988**Options**
1989
1990`integer` values representing milliseconds
1991
1992Example:
1993
1994```json [settings]
1995{
1996 "git": {
1997 "gutter_debounce": 100
1998 }
1999}
2000```
2001
2002### Inline Git Blame
2003
2004- Description: Whether or not to show git blame information inline, on the currently focused line.
2005- Setting: `inline_blame`
2006- Default:
2007
2008```json [settings]
2009{
2010 "git": {
2011 "inline_blame": {
2012 "enabled": true
2013 }
2014 }
2015}
2016```
2017
2018**Options**
2019
20201. Disable inline git blame:
2021
2022```json [settings]
2023{
2024 "git": {
2025 "inline_blame": {
2026 "enabled": false
2027 }
2028 }
2029}
2030```
2031
20322. Only show inline git blame after a delay (that starts after cursor stops moving):
2033
2034```json [settings]
2035{
2036 "git": {
2037 "inline_blame": {
2038 "delay_ms": 500
2039 }
2040 }
2041}
2042```
2043
20443. Show a commit summary next to the commit date and author:
2045
2046```json [settings]
2047{
2048 "git": {
2049 "inline_blame": {
2050 "show_commit_summary": true
2051 }
2052 }
2053}
2054```
2055
20564. Use this as the minimum column at which to display inline blame information:
2057
2058```json [settings]
2059{
2060 "git": {
2061 "inline_blame": {
2062 "min_column": 80
2063 }
2064 }
2065}
2066```
2067
20685. Set the padding between the end of the line and the inline blame hint, in ems:
2069
2070```json [settings]
2071{
2072 "git": {
2073 "inline_blame": {
2074 "padding": 10
2075 }
2076 }
2077}
2078```
2079
2080### Branch Picker
2081
2082- Description: Configuration related to the branch picker.
2083- Setting: `branch_picker`
2084- Default:
2085
2086```json [settings]
2087{
2088 "git": {
2089 "branch_picker": {
2090 "show_author_name": false
2091 }
2092 }
2093}
2094```
2095
2096**Options**
2097
20981. Show the author name in the branch picker:
2099
2100```json [settings]
2101{
2102 "git": {
2103 "branch_picker": {
2104 "show_author_name": true
2105 }
2106 }
2107}
2108```
2109
2110### Hunk Style
2111
2112- Description: What styling we should use for the diff hunks.
2113- Setting: `hunk_style`
2114- Default:
2115
2116```json [settings]
2117{
2118 "git": {
2119 "hunk_style": "staged_hollow"
2120 }
2121}
2122```
2123
2124**Options**
2125
21261. Show the staged hunks faded out and with a border:
2127
2128```json [settings]
2129{
2130 "git": {
2131 "hunk_style": "staged_hollow"
2132 }
2133}
2134```
2135
21362. Show unstaged hunks faded out and with a border:
2137
2138```json [settings]
2139{
2140 "git": {
2141 "hunk_style": "unstaged_hollow"
2142 }
2143}
2144```
2145
2146## Go to Definition Fallback
2147
2148- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2149- Setting: `go_to_definition_fallback`
2150- Default: `"find_all_references"`
2151
2152**Options**
2153
21541. Do nothing:
2155
2156```json [settings]
2157{
2158 "go_to_definition_fallback": "none"
2159}
2160```
2161
21622. Find references for the same symbol (default):
2163
2164```json [settings]
2165{
2166 "go_to_definition_fallback": "find_all_references"
2167}
2168```
2169
2170## Hard Tabs
2171
2172- Description: Whether to indent lines using tab characters or multiple spaces.
2173- Setting: `hard_tabs`
2174- Default: `false`
2175
2176**Options**
2177
2178`boolean` values
2179
2180## Helix Mode
2181
2182- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](./helix.md) for more details.
2183- Setting: `helix_mode`
2184- Default: `false`
2185
2186**Options**
2187
2188`boolean` values
2189
2190## Indent Guides
2191
2192- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2193- Setting: `indent_guides`
2194- Default:
2195
2196```json [settings]
2197{
2198 "indent_guides": {
2199 "enabled": true,
2200 "line_width": 1,
2201 "active_line_width": 1,
2202 "coloring": "fixed",
2203 "background_coloring": "disabled"
2204 }
2205}
2206```
2207
2208**Options**
2209
22101. Disable indent guides
2211
2212```json [settings]
2213{
2214 "indent_guides": {
2215 "enabled": false
2216 }
2217}
2218```
2219
22202. Enable indent guides for a specific language.
2221
2222```json [settings]
2223{
2224 "languages": {
2225 "Python": {
2226 "indent_guides": {
2227 "enabled": true
2228 }
2229 }
2230 }
2231}
2232```
2233
22343. Enable indent aware coloring ("rainbow indentation").
2235 The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
2236
2237```json [settings]
2238{
2239 "indent_guides": {
2240 "enabled": true,
2241 "coloring": "indent_aware"
2242 }
2243}
2244```
2245
22464. Enable indent aware background coloring ("rainbow indentation").
2247 The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
2248
2249```json [settings]
2250{
2251 "indent_guides": {
2252 "enabled": true,
2253 "coloring": "indent_aware",
2254 "background_coloring": "indent_aware"
2255 }
2256}
2257```
2258
2259## Hover Popover Enabled
2260
2261- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2262- Setting: `hover_popover_enabled`
2263- Default: `true`
2264
2265**Options**
2266
2267`boolean` values
2268
2269## Hover Popover Delay
2270
2271- Description: Time to wait in milliseconds before showing the informational hover box.
2272- Setting: `hover_popover_delay`
2273- Default: `300`
2274
2275**Options**
2276
2277`integer` values representing milliseconds
2278
2279## Icon Theme
2280
2281- Description: The icon theme setting can be specified in two forms - either as the name of an icon theme or as an object containing the `mode`, `dark`, and `light` icon themes for files/folders inside Zed.
2282- Setting: `icon_theme`
2283- Default: `Zed (Default)`
2284
2285### Icon Theme Object
2286
2287- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2288- Setting: `icon_theme`
2289- Default:
2290
2291```json [settings]
2292"icon_theme": {
2293 "mode": "system",
2294 "dark": "Zed (Default)",
2295 "light": "Zed (Default)"
2296},
2297```
2298
2299### Mode
2300
2301- Description: Specify the icon theme mode.
2302- Setting: `mode`
2303- Default: `system`
2304
2305**Options**
2306
23071. Set the icon theme to dark mode
2308
2309```json [settings]
2310{
2311 "mode": "dark"
2312}
2313```
2314
23152. Set the icon theme to light mode
2316
2317```json [settings]
2318{
2319 "mode": "light"
2320}
2321```
2322
23233. Set the icon theme to system mode
2324
2325```json [settings]
2326{
2327 "mode": "system"
2328}
2329```
2330
2331### Dark
2332
2333- Description: The name of the dark icon theme.
2334- Setting: `dark`
2335- Default: `Zed (Default)`
2336
2337**Options**
2338
2339Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2340
2341### Light
2342
2343- Description: The name of the light icon theme.
2344- Setting: `light`
2345- Default: `Zed (Default)`
2346
2347**Options**
2348
2349Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2350
2351## Image Viewer
2352
2353- Description: Settings for image viewer functionality
2354- Setting: `image_viewer`
2355- Default:
2356
2357```json [settings]
2358{
2359 "image_viewer": {
2360 "unit": "binary"
2361 }
2362}
2363```
2364
2365**Options**
2366
2367### Unit
2368
2369- Description: The unit for image file sizes
2370- Setting: `unit`
2371- Default: `"binary"`
2372
2373**Options**
2374
23751. Use binary units (KiB, MiB):
2376
2377```json [settings]
2378{
2379 "image_viewer": {
2380 "unit": "binary"
2381 }
2382}
2383```
2384
23852. Use decimal units (KB, MB):
2386
2387```json [settings]
2388{
2389 "image_viewer": {
2390 "unit": "decimal"
2391 }
2392}
2393```
2394
2395## Inlay hints
2396
2397- Description: Configuration for displaying extra text with hints in the editor.
2398- Setting: `inlay_hints`
2399- Default:
2400
2401```json [settings]
2402"inlay_hints": {
2403 "enabled": false,
2404 "show_type_hints": true,
2405 "show_parameter_hints": true,
2406 "show_other_hints": true,
2407 "show_background": false,
2408 "edit_debounce_ms": 700,
2409 "scroll_debounce_ms": 50,
2410 "toggle_on_modifiers_press": null
2411}
2412```
2413
2414**Options**
2415
2416Inlay hints querying consists of two parts: editor (client) and LSP server.
2417With the inlay settings above are changed to enable the hints, editor will start to query certain types of hints and react on LSP hint refresh request from the server.
2418At this point, the server may or may not return hints depending on its implementation, further configuration might be needed, refer to the corresponding LSP server documentation.
2419
2420The following languages have inlay hints preconfigured by Zed:
2421
2422- [Go](https://docs.zed.dev/languages/go)
2423- [Rust](https://docs.zed.dev/languages/rust)
2424- [Svelte](https://docs.zed.dev/languages/svelte)
2425- [TypeScript](https://docs.zed.dev/languages/typescript)
2426
2427Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2428
2429Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2430Settings-related hint updates are not debounced.
2431
2432All possible config values for `toggle_on_modifiers_press` are:
2433
2434```json [settings]
2435"inlay_hints": {
2436 "toggle_on_modifiers_press": {
2437 "control": true,
2438 "shift": true,
2439 "alt": true,
2440 "platform": true,
2441 "function": true
2442 }
2443}
2444```
2445
2446Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2447
2448## Journal
2449
2450- Description: Configuration for the journal.
2451- Setting: `journal`
2452- Default:
2453
2454```json [settings]
2455"journal": {
2456 "path": "~",
2457 "hour_format": "hour12"
2458}
2459```
2460
2461### Path
2462
2463- Description: The path of the directory where journal entries are stored.
2464- Setting: `path`
2465- Default: `~`
2466
2467**Options**
2468
2469`string` values
2470
2471### Hour Format
2472
2473- Description: The format to use for displaying hours in the journal.
2474- Setting: `hour_format`
2475- Default: `hour12`
2476
2477**Options**
2478
24791. 12-hour format:
2480
2481```json [settings]
2482{
2483 "hour_format": "hour12"
2484}
2485```
2486
24872. 24-hour format:
2488
2489```json [settings]
2490{
2491 "hour_format": "hour24"
2492}
2493```
2494
2495## JSX Tag Auto Close
2496
2497- Description: Whether to automatically close JSX tags
2498- Setting: `jsx_tag_auto_close`
2499- Default:
2500
2501```json [settings]
2502{
2503 "jsx_tag_auto_close": {
2504 "enabled": true
2505 }
2506}
2507```
2508
2509**Options**
2510
2511- `enabled`: Whether to enable automatic JSX tag closing
2512
2513## Languages
2514
2515- Description: Configuration for specific languages.
2516- Setting: `languages`
2517- Default: `null`
2518
2519**Options**
2520
2521To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2522
2523```json [settings]
2524"languages": {
2525 "C": {
2526 "format_on_save": "off",
2527 "preferred_line_length": 64,
2528 "soft_wrap": "preferred_line_length"
2529 },
2530 "JSON": {
2531 "tab_size": 4
2532 }
2533}
2534```
2535
2536The following settings can be overridden for each specific language:
2537
2538- [`enable_language_server`](#enable-language-server)
2539- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2540- [`format_on_save`](#format-on-save)
2541- [`formatter`](#formatter)
2542- [`hard_tabs`](#hard-tabs)
2543- [`preferred_line_length`](#preferred-line-length)
2544- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2545- [`show_edit_predictions`](#show-edit-predictions)
2546- [`show_whitespaces`](#show-whitespaces)
2547- [`whitespace_map`](#whitespace-map)
2548- [`soft_wrap`](#soft-wrap)
2549- [`tab_size`](#tab-size)
2550- [`use_autoclose`](#use-autoclose)
2551- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2552
2553These values take in the same options as the root-level settings with the same name.
2554
2555## Language Models
2556
2557- Description: Configuration for language model providers
2558- Setting: `language_models`
2559- Default:
2560
2561```json [settings]
2562{
2563 "language_models": {
2564 "anthropic": {
2565 "api_url": "https://api.anthropic.com"
2566 },
2567 "google": {
2568 "api_url": "https://generativelanguage.googleapis.com"
2569 },
2570 "ollama": {
2571 "api_url": "http://localhost:11434"
2572 },
2573 "openai": {
2574 "api_url": "https://api.openai.com/v1"
2575 }
2576 }
2577}
2578```
2579
2580**Options**
2581
2582Configuration for various AI model providers including API URLs and authentication settings.
2583
2584## Line Indicator Format
2585
2586- Description: Format for line indicator in the status bar
2587- Setting: `line_indicator_format`
2588- Default: `"short"`
2589
2590**Options**
2591
25921. Short format:
2593
2594```json [settings]
2595{
2596 "line_indicator_format": "short"
2597}
2598```
2599
26002. Long format:
2601
2602```json [settings]
2603{
2604 "line_indicator_format": "long"
2605}
2606```
2607
2608## Linked Edits
2609
2610- Description: Whether to perform linked edits of associated ranges, if the language server supports it. For example, when editing opening `<html>` tag, the contents of the closing `</html>` tag will be edited as well.
2611- Setting: `linked_edits`
2612- Default: `true`
2613
2614**Options**
2615
2616`boolean` values
2617
2618## LSP Document Colors
2619
2620- Description: Whether to show document color information from the language server
2621- Setting: `lsp_document_colors`
2622- Default: `true`
2623
2624**Options**
2625
2626`boolean` values
2627
2628## Max Tabs
2629
2630- Description: Maximum number of tabs to show in the tab bar
2631- Setting: `max_tabs`
2632- Default: `null`
2633
2634**Options**
2635
2636Positive `integer` values or `null` for unlimited tabs
2637
2638## Middle Click Paste (Linux only)
2639
2640- Description: Enable middle-click paste on Linux
2641- Setting: `middle_click_paste`
2642- Default: `true`
2643
2644**Options**
2645
2646`boolean` values
2647
2648## Multi Cursor Modifier
2649
2650- Description: Determines the modifier to be used to add multiple cursors with the mouse. The open hover link mouse gestures will adapt such that it do not conflict with the multicursor modifier.
2651- Setting: `multi_cursor_modifier`
2652- Default: `alt`
2653
2654**Options**
2655
26561. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2657
2658```json [settings]
2659{
2660 "multi_cursor_modifier": "alt"
2661}
2662```
2663
26642. Maps `Control` on Linux and Windows and to `Command` on macOS:
2665
2666```json [settings]
2667{
2668 "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2669}
2670```
2671
2672## Node
2673
2674- Description: Configuration for Node.js integration
2675- Setting: `node`
2676- Default:
2677
2678```json [settings]
2679{
2680 "node": {
2681 "ignore_system_version": false,
2682 "path": null,
2683 "npm_path": null
2684 }
2685}
2686```
2687
2688**Options**
2689
2690- `ignore_system_version`: Whether to ignore the system Node.js version
2691- `path`: Custom path to Node.js binary
2692- `npm_path`: Custom path to npm binary
2693
2694## Network Proxy
2695
2696- Description: Configure a network proxy for Zed.
2697- Setting: `proxy`
2698- Default: `null`
2699
2700**Options**
2701
2702The proxy setting must contain a URL to the proxy.
2703
2704The following URI schemes are supported:
2705
2706- `http`
2707- `https`
2708- `socks4` - SOCKS4 proxy with local DNS
2709- `socks4a` - SOCKS4 proxy with remote DNS
2710- `socks5` - SOCKS5 proxy with local DNS
2711- `socks5h` - SOCKS5 proxy with remote DNS
2712
2713`http` will be used when no scheme is specified.
2714
2715By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`, `no_proxy` and `NO_PROXY`.
2716
2717For example, to set an `http` proxy, add the following to your settings:
2718
2719```json [settings]
2720{
2721 "proxy": "http://127.0.0.1:10809"
2722}
2723```
2724
2725Or to set a `socks5` proxy:
2726
2727```json [settings]
2728{
2729 "proxy": "socks5h://localhost:10808"
2730}
2731```
2732
2733If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
2734
2735## On Last Window Closed
2736
2737- Description: What to do when the last window is closed
2738- Setting: `on_last_window_closed`
2739- Default: `"platform_default"`
2740
2741**Options**
2742
27431. Use platform default behavior:
2744
2745```json [settings]
2746{
2747 "on_last_window_closed": "platform_default"
2748}
2749```
2750
27512. Always quit the application:
2752
2753```json [settings]
2754{
2755 "on_last_window_closed": "quit_app"
2756}
2757```
2758
2759## Profiles
2760
2761- Description: Configuration profiles that can be applied on top of existing settings
2762- Setting: `profiles`
2763- Default: `{}`
2764
2765**Options**
2766
2767Configuration object for defining settings profiles. Example:
2768
2769```json [settings]
2770{
2771 "profiles": {
2772 "presentation": {
2773 "buffer_font_size": 20,
2774 "ui_font_size": 18,
2775 "theme": "One Light"
2776 }
2777 }
2778}
2779```
2780
2781## Preview tabs
2782
2783- Description:
2784 Preview tabs allow you to open files in preview mode, where they close automatically when you switch to another file unless you explicitly pin them. This is useful for quickly viewing files without cluttering your workspace. Preview tabs display their file names in italics. \
2785 There are several ways to convert a preview tab into a regular tab:
2786
2787 - Double-clicking on the file
2788 - Double-clicking on the tab header
2789 - Using the {#action project_panel::OpenPermanent} action
2790 - Editing the file
2791 - Dragging the file to a different pane
2792
2793- Setting: `preview_tabs`
2794- Default:
2795
2796```json [settings]
2797"preview_tabs": {
2798 "enabled": true,
2799 "enable_preview_from_file_finder": false,
2800 "enable_preview_from_code_navigation": false,
2801}
2802```
2803
2804### Enable preview from file finder
2805
2806- Description: Determines whether to open files in preview mode when selected from the file finder.
2807- Setting: `enable_preview_from_file_finder`
2808- Default: `false`
2809
2810**Options**
2811
2812`boolean` values
2813
2814### Enable preview from code navigation
2815
2816- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2817- Setting: `enable_preview_from_code_navigation`
2818- Default: `false`
2819
2820**Options**
2821
2822`boolean` values
2823
2824## File Finder
2825
2826### File Icons
2827
2828- Description: Whether to show file icons in the file finder.
2829- Setting: `file_icons`
2830- Default: `true`
2831
2832### Modal Max Width
2833
2834- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2835- Setting: `modal_max_width`
2836- Default: `small`
2837
2838### Skip Focus For Active In Search
2839
2840- Description: Determines whether the file finder should skip focus for the active file in search results.
2841- Setting: `skip_focus_for_active_in_search`
2842- Default: `true`
2843
2844## Pane Split Direction Horizontal
2845
2846- Description: The direction that you want to split panes horizontally
2847- Setting: `pane_split_direction_horizontal`
2848- Default: `"up"`
2849
2850**Options**
2851
28521. Split upward:
2853
2854```json [settings]
2855{
2856 "pane_split_direction_horizontal": "up"
2857}
2858```
2859
28602. Split downward:
2861
2862```json [settings]
2863{
2864 "pane_split_direction_horizontal": "down"
2865}
2866```
2867
2868## Pane Split Direction Vertical
2869
2870- Description: The direction that you want to split panes vertically
2871- Setting: `pane_split_direction_vertical`
2872- Default: `"left"`
2873
2874**Options**
2875
28761. Split to the left:
2877
2878```json [settings]
2879{
2880 "pane_split_direction_vertical": "left"
2881}
2882```
2883
28842. Split to the right:
2885
2886```json [settings]
2887{
2888 "pane_split_direction_vertical": "right"
2889}
2890```
2891
2892## Preferred Line Length
2893
2894- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2895- Setting: `preferred_line_length`
2896- Default: `80`
2897
2898**Options**
2899
2900`integer` values
2901
2902## Private Files
2903
2904- Description: Globs to match against file paths to determine if a file is private
2905- Setting: `private_files`
2906- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
2907
2908**Options**
2909
2910List of `string` glob patterns
2911
2912## Projects Online By Default
2913
2914- Description: Whether or not to show the online projects view by default.
2915- Setting: `projects_online_by_default`
2916- Default: `true`
2917
2918**Options**
2919
2920`boolean` values
2921
2922## Read SSH Config
2923
2924- Description: Whether to read SSH configuration files
2925- Setting: `read_ssh_config`
2926- Default: `true`
2927
2928**Options**
2929
2930`boolean` values
2931
2932## Redact Private Values
2933
2934- Description: Hide the values of variables from visual display in private files
2935- Setting: `redact_private_values`
2936- Default: `false`
2937
2938**Options**
2939
2940`boolean` values
2941
2942## Relative Line Numbers
2943
2944- Description: Whether to show relative line numbers in the gutter
2945- Setting: `relative_line_numbers`
2946- Default: `false`
2947
2948**Options**
2949
2950`boolean` values
2951
2952## Remove Trailing Whitespace On Save
2953
2954- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2955- Setting: `remove_trailing_whitespace_on_save`
2956- Default: `true`
2957
2958**Options**
2959
2960`boolean` values
2961
2962## Resize All Panels In Dock
2963
2964- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
2965- Setting: `resize_all_panels_in_dock`
2966- Default: `["left"]`
2967
2968**Options**
2969
2970List of strings containing any combination of:
2971
2972- `"left"`: Resize left dock panels together
2973- `"right"`: Resize right dock panels together
2974- `"bottom"`: Resize bottom dock panels together
2975
2976## Restore on File Reopen
2977
2978- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
2979- Setting: `restore_on_file_reopen`
2980- Default: `true`
2981
2982**Options**
2983
2984`boolean` values
2985
2986## Restore on Startup
2987
2988- Description: Controls session restoration on startup.
2989- Setting: `restore_on_startup`
2990- Default: `last_session`
2991
2992**Options**
2993
29941. Restore all workspaces that were open when quitting Zed:
2995
2996```json [settings]
2997{
2998 "restore_on_startup": "last_session"
2999}
3000```
3001
30022. Restore the workspace that was closed last:
3003
3004```json [settings]
3005{
3006 "restore_on_startup": "last_workspace"
3007}
3008```
3009
30103. Always start with an empty editor:
3011
3012```json [settings]
3013{
3014 "restore_on_startup": "none"
3015}
3016```
3017
3018## Scroll Beyond Last Line
3019
3020- Description: Whether the editor will scroll beyond the last line
3021- Setting: `scroll_beyond_last_line`
3022- Default: `"one_page"`
3023
3024**Options**
3025
30261. Scroll one page beyond the last line by one page:
3027
3028```json [settings]
3029{
3030 "scroll_beyond_last_line": "one_page"
3031}
3032```
3033
30342. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3035
3036```json [settings]
3037{
3038 "scroll_beyond_last_line": "vertical_scroll_margin"
3039}
3040```
3041
30423. The editor will not scroll beyond the last line:
3043
3044```json [settings]
3045{
3046 "scroll_beyond_last_line": "off"
3047}
3048```
3049
3050**Options**
3051
3052`boolean` values
3053
3054## Scroll Sensitivity
3055
3056- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3057- Setting: `scroll_sensitivity`
3058- Default: `1.0`
3059
3060**Options**
3061
3062Positive `float` values
3063
3064### Fast Scroll Sensitivity
3065
3066- Description: Scroll sensitivity multiplier for fast scrolling. This multiplier is applied to both the horizontal and vertical delta values while scrolling. Fast scrolling happens when a user holds the alt or option key while scrolling.
3067- Setting: `fast_scroll_sensitivity`
3068- Default: `4.0`
3069
3070**Options**
3071
3072Positive `float` values
3073
3074### Horizontal Scroll Margin
3075
3076- Description: The number of characters to keep on either side when scrolling with the mouse
3077- Setting: `horizontal_scroll_margin`
3078- Default: `5`
3079
3080**Options**
3081
3082Non-negative `integer` values
3083
3084### Vertical Scroll Margin
3085
3086- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3087- Setting: `vertical_scroll_margin`
3088- Default: `3`
3089
3090**Options**
3091
3092Non-negative `integer` values
3093
3094## Search
3095
3096- Description: Search options to enable by default when opening new project and buffer searches.
3097- Setting: `search`
3098- Default:
3099
3100```json [settings]
3101"search": {
3102 "whole_word": false,
3103 "case_sensitive": false,
3104 "include_ignored": false,
3105 "regex": false
3106},
3107```
3108
3109## Search Wrap
3110
3111- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3112- Setting: `search_wrap`
3113- Default: `true`
3114
3115## Seed Search Query From Cursor
3116
3117- Description: When to populate a new search's query based on the text under the cursor.
3118- Setting: `seed_search_query_from_cursor`
3119- Default: `always`
3120
3121**Options**
3122
31231. `always` always populate the search query with the word under the cursor
31242. `selection` only populate the search query when there is text selected
31253. `never` never populate the search query
3126
3127## Use Smartcase Search
3128
3129- Description: When enabled, automatically adjusts search case sensitivity based on your query. If your search query contains any uppercase letters, the search becomes case-sensitive; if it contains only lowercase letters, the search becomes case-insensitive. \
3130 This applies to both in-file searches and project-wide searches.
3131- Setting: `use_smartcase_search`
3132- Default: `false`
3133
3134**Options**
3135
3136`boolean` values
3137
3138Examples:
3139
3140- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3141- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3142
3143## Show Call Status Icon
3144
3145- Description: Whether or not to show the call status icon in the status bar.
3146- Setting: `show_call_status_icon`
3147- Default: `true`
3148
3149**Options**
3150
3151`boolean` values
3152
3153## Completions
3154
3155- Description: Controls how completions are processed for this language.
3156- Setting: `completions`
3157- Default:
3158
3159```json [settings]
3160{
3161 "completions": {
3162 "words": "fallback",
3163 "words_min_length": 3,
3164 "lsp": true,
3165 "lsp_fetch_timeout_ms": 0,
3166 "lsp_insert_mode": "replace_suffix"
3167 }
3168}
3169```
3170
3171### Words
3172
3173- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3174- Setting: `words`
3175- Default: `fallback`
3176
3177**Options**
3178
31791. `enabled` - Always fetch document's words for completions along with LSP completions
31802. `fallback` - Only if LSP response errors or times out, use document's words to show completions
31813. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3182
3183### Min Words Query Length
3184
3185- Description: Minimum number of characters required to automatically trigger word-based completions.
3186 Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3187- Setting: `words_min_length`
3188- Default: `3`
3189
3190**Options**
3191
3192Positive integer values
3193
3194### LSP
3195
3196- Description: Whether to fetch LSP completions or not.
3197- Setting: `lsp`
3198- Default: `true`
3199
3200**Options**
3201
3202`boolean` values
3203
3204### LSP Fetch Timeout (ms)
3205
3206- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3207- Setting: `lsp_fetch_timeout_ms`
3208- Default: `0`
3209
3210**Options**
3211
3212`integer` values representing milliseconds
3213
3214### LSP Insert Mode
3215
3216- Description: Controls what range to replace when accepting LSP completions.
3217- Setting: `lsp_insert_mode`
3218- Default: `replace_suffix`
3219
3220**Options**
3221
32221. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
32232. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
32243. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
32254. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3226
3227## Show Completions On Input
3228
3229- Description: Whether or not to show completions as you type.
3230- Setting: `show_completions_on_input`
3231- Default: `true`
3232
3233**Options**
3234
3235`boolean` values
3236
3237## Show Completion Documentation
3238
3239- Description: Whether to display inline and alongside documentation for items in the completions menu.
3240- Setting: `show_completion_documentation`
3241- Default: `true`
3242
3243**Options**
3244
3245`boolean` values
3246
3247## Show Edit Predictions
3248
3249- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3250- Setting: `show_edit_predictions`
3251- Default: `true`
3252
3253**Options**
3254
3255`boolean` values
3256
3257## Show Whitespaces
3258
3259- Description: Whether or not to render whitespace characters in the editor.
3260- Setting: `show_whitespaces`
3261- Default: `selection`
3262
3263**Options**
3264
32651. `all`
32662. `selection`
32673. `none`
32684. `boundary`
3269
3270## Whitespace Map
3271
3272- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
3273- Setting: `whitespace_map`
3274- Default:
3275
3276```json [settings]
3277{
3278 "whitespace_map": {
3279 "space": "•",
3280 "tab": "→"
3281 }
3282}
3283```
3284
3285## Soft Wrap
3286
3287- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3288- Setting: `soft_wrap`
3289- Default: `none`
3290
3291**Options**
3292
32931. `none` to avoid wrapping generally, unless the line is too long
32942. `prefer_line` (deprecated, same as `none`)
32953. `editor_width` to wrap lines that overflow the editor width
32964. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
32975. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3298
3299## Show Wrap Guides
3300
3301- Description: Whether to show wrap guides (vertical rulers) in the editor. Setting this to true will show a guide at the 'preferred_line_length' value if 'soft_wrap' is set to 'preferred_line_length', and will show any additional guides as specified by the 'wrap_guides' setting.
3302- Setting: `show_wrap_guides`
3303- Default: `true`
3304
3305**Options**
3306
3307`boolean` values
3308
3309## Use On Type Format
3310
3311- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3312- Setting: `use_on_type_format`
3313- Default: `true`
3314
3315**Options**
3316
3317`boolean` values
3318
3319## Use Auto Surround
3320
3321- Description: Whether to automatically surround selected text when typing opening parenthesis, bracket, brace, single or double quote characters. For example, when you select text and type (, Zed will surround the text with ().
3322- Setting: `use_auto_surround`
3323- Default: `true`
3324
3325**Options**
3326
3327`boolean` values
3328
3329## Use System Path Prompts
3330
3331- Description: Whether to use the system provided dialogs for Open and Save As. When set to false, Zed will use the built-in keyboard-first pickers.
3332- Setting: `use_system_path_prompts`
3333- Default: `true`
3334
3335**Options**
3336
3337`boolean` values
3338
3339## Use System Prompts
3340
3341- Description: Whether to use the system provided dialogs for prompts, such as confirmation prompts. When set to false, Zed will use its built-in prompts. Note that on Linux, this option is ignored and Zed will always use the built-in prompts.
3342- Setting: `use_system_prompts`
3343- Default: `true`
3344
3345**Options**
3346
3347`boolean` values
3348
3349## Wrap Guides (Vertical Rulers)
3350
3351- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3352- Setting: `wrap_guides`
3353- Default: []
3354
3355**Options**
3356
3357List of `integer` column numbers
3358
3359## Tab Size
3360
3361- Description: The number of spaces to use for each tab character.
3362- Setting: `tab_size`
3363- Default: `4`
3364
3365**Options**
3366
3367`integer` values
3368
3369## Tasks
3370
3371- Description: Configuration for tasks that can be run within Zed
3372- Setting: `tasks`
3373- Default:
3374
3375```json [settings]
3376{
3377 "tasks": {
3378 "variables": {},
3379 "enabled": true,
3380 "prefer_lsp": false
3381 }
3382}
3383```
3384
3385**Options**
3386
3387- `variables`: Custom variables for task configuration
3388- `enabled`: Whether tasks are enabled
3389- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3390
3391## Telemetry
3392
3393- Description: Control what info is collected by Zed.
3394- Setting: `telemetry`
3395- Default:
3396
3397```json [settings]
3398"telemetry": {
3399 "diagnostics": true,
3400 "metrics": true
3401},
3402```
3403
3404**Options**
3405
3406### Diagnostics
3407
3408- Description: Setting for sending debug-related data, such as crash reports.
3409- Setting: `diagnostics`
3410- Default: `true`
3411
3412**Options**
3413
3414`boolean` values
3415
3416### Metrics
3417
3418- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3419- Setting: `metrics`
3420- Default: `true`
3421
3422**Options**
3423
3424`boolean` values
3425
3426## Terminal
3427
3428- Description: Configuration for the terminal.
3429- Setting: `terminal`
3430- Default:
3431
3432```json [settings]
3433{
3434 "terminal": {
3435 "alternate_scroll": "off",
3436 "blinking": "terminal_controlled",
3437 "copy_on_select": false,
3438 "keep_selection_on_copy": true,
3439 "dock": "bottom",
3440 "default_width": 640,
3441 "default_height": 320,
3442 "detect_venv": {
3443 "on": {
3444 "directories": [".env", "env", ".venv", "venv"],
3445 "activate_script": "default"
3446 }
3447 },
3448 "env": {},
3449 "font_family": null,
3450 "font_features": null,
3451 "font_size": null,
3452 "line_height": "comfortable",
3453 "minimum_contrast": 45,
3454 "option_as_meta": false,
3455 "button": true,
3456 "shell": "system",
3457 "toolbar": {
3458 "breadcrumbs": false
3459 },
3460 "working_directory": "current_project_directory",
3461 "scrollbar": {
3462 "show": null
3463 }
3464 }
3465}
3466```
3467
3468### Terminal: Dock
3469
3470- Description: Control the position of the dock
3471- Setting: `dock`
3472- Default: `bottom`
3473
3474**Options**
3475
3476`"bottom"`, `"left"` or `"right"`
3477
3478### Terminal: Alternate Scroll
3479
3480- Description: Set whether Alternate Scroll mode (DECSET code: `?1007`) is active by default. Alternate Scroll mode converts mouse scroll events into up / down key presses when in the alternate screen (e.g. when running applications like vim or less). The terminal can still set and unset this mode with ANSI escape codes.
3481- Setting: `alternate_scroll`
3482- Default: `off`
3483
3484**Options**
3485
34861. Default alternate scroll mode to off
3487
3488```json [settings]
3489{
3490 "terminal": {
3491 "alternate_scroll": "off"
3492 }
3493}
3494```
3495
34962. Default alternate scroll mode to on
3497
3498```json [settings]
3499{
3500 "terminal": {
3501 "alternate_scroll": "on"
3502 }
3503}
3504```
3505
3506### Terminal: Blinking
3507
3508- Description: Set the cursor blinking behavior in the terminal
3509- Setting: `blinking`
3510- Default: `terminal_controlled`
3511
3512**Options**
3513
35141. Never blink the cursor, ignore the terminal mode
3515
3516```json [settings]
3517{
3518 "terminal": {
3519 "blinking": "off"
3520 }
3521}
3522```
3523
35242. Default the cursor blink to off, but allow the terminal to turn blinking on
3525
3526```json [settings]
3527{
3528 "terminal": {
3529 "blinking": "terminal_controlled"
3530 }
3531}
3532```
3533
35343. Always blink the cursor, ignore the terminal mode
3535
3536```json [settings]
3537{
3538 "terminal": {
3539 "blinking": "on"
3540 }
3541}
3542```
3543
3544### Terminal: Copy On Select
3545
3546- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
3547- Setting: `copy_on_select`
3548- Default: `false`
3549
3550**Options**
3551
3552`boolean` values
3553
3554**Example**
3555
3556```json [settings]
3557{
3558 "terminal": {
3559 "copy_on_select": true
3560 }
3561}
3562```
3563
3564### Terminal: Cursor Shape
3565
3566- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
3567- Setting: `cursor_shape`
3568- Default: `null` (defaults to block)
3569
3570**Options**
3571
35721. A block that surrounds the following character
3573
3574```json [settings]
3575{
3576 "terminal": {
3577 "cursor_shape": "block"
3578 }
3579}
3580```
3581
35822. A vertical bar
3583
3584```json [settings]
3585{
3586 "terminal": {
3587 "cursor_shape": "bar"
3588 }
3589}
3590```
3591
35923. An underline / underscore that runs along the following character
3593
3594```json [settings]
3595{
3596 "terminal": {
3597 "cursor_shape": "underline"
3598 }
3599}
3600```
3601
36024. A box drawn around the following character
3603
3604```json [settings]
3605{
3606 "terminal": {
3607 "cursor_shape": "hollow"
3608 }
3609}
3610```
3611
3612### Terminal: Keep Selection On Copy
3613
3614- Description: Whether or not to keep the selection in the terminal after copying text.
3615- Setting: `keep_selection_on_copy`
3616- Default: `true`
3617
3618**Options**
3619
3620`boolean` values
3621
3622**Example**
3623
3624```json [settings]
3625{
3626 "terminal": {
3627 "keep_selection_on_copy": false
3628 }
3629}
3630```
3631
3632### Terminal: Env
3633
3634- Description: Any key-value pairs added to this object will be added to the terminal's environment. Keys must be unique, use `:` to separate multiple values in a single variable
3635- Setting: `env`
3636- Default: `{}`
3637
3638**Example**
3639
3640```json [settings]
3641{
3642 "terminal": {
3643 "env": {
3644 "ZED": "1",
3645 "KEY": "value1:value2"
3646 }
3647 }
3648}
3649```
3650
3651### Terminal: Font Size
3652
3653- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
3654- Setting: `font_size`
3655- Default: `null`
3656
3657**Options**
3658
3659`integer` values
3660
3661```json [settings]
3662{
3663 "terminal": {
3664 "font_size": 15
3665 }
3666}
3667```
3668
3669### Terminal: Font Family
3670
3671- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
3672- Setting: `font_family`
3673- Default: `null`
3674
3675**Options**
3676
3677The name of any font family installed on the user's system
3678
3679```json [settings]
3680{
3681 "terminal": {
3682 "font_family": "Berkeley Mono"
3683 }
3684}
3685```
3686
3687### Terminal: Font Features
3688
3689- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
3690- Setting: `font_features`
3691- Default: `null`
3692- Platform: macOS and Windows.
3693
3694**Options**
3695
3696See Buffer Font Features
3697
3698```json [settings]
3699{
3700 "terminal": {
3701 "font_features": {
3702 "calt": false
3703 // See Buffer Font Features for more features
3704 }
3705 }
3706}
3707```
3708
3709### Terminal: Line Height
3710
3711- Description: Set the terminal's line height.
3712- Setting: `line_height`
3713- Default: `standard`
3714
3715**Options**
3716
37171. Use a line height that's `comfortable` for reading, 1.618.
3718
3719```json [settings]
3720{
3721 "terminal": {
3722 "line_height": "comfortable"
3723 }
3724}
3725```
3726
37272. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
3728
3729```json [settings]
3730{
3731 "terminal": {
3732 "line_height": "standard"
3733 }
3734}
3735```
3736
37373. Use a custom line height.
3738
3739```json [settings]
3740{
3741 "terminal": {
3742 "line_height": {
3743 "custom": 2
3744 }
3745 }
3746}
3747```
3748
3749### Terminal: Minimum Contrast
3750
3751- Description: Controls the minimum contrast between foreground and background colors in the terminal. Uses the APCA (Accessible Perceptual Contrast Algorithm) for color adjustments. Set this to 0 to disable this feature.
3752- Setting: `minimum_contrast`
3753- Default: `45`
3754
3755**Options**
3756
3757`integer` values from 0 to 106. Common recommended values:
3758
3759- `0`: No contrast adjustment
3760- `45`: Minimum for large fluent text (default)
3761- `60`: Minimum for other content text
3762- `75`: Minimum for body text
3763- `90`: Preferred for body text
3764
3765```json [settings]
3766{
3767 "terminal": {
3768 "minimum_contrast": 45
3769 }
3770}
3771```
3772
3773### Terminal: Option As Meta
3774
3775- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
3776- Setting: `option_as_meta`
3777- Default: `false`
3778
3779**Options**
3780
3781`boolean` values
3782
3783```json [settings]
3784{
3785 "terminal": {
3786 "option_as_meta": true
3787 }
3788}
3789```
3790
3791### Terminal: Shell
3792
3793- Description: What shell to use when launching the terminal.
3794- Setting: `shell`
3795- Default: `system`
3796
3797**Options**
3798
37991. Use the system's default terminal configuration (usually the `/etc/passwd` file).
3800
3801```json [settings]
3802{
3803 "terminal": {
3804 "shell": "system"
3805 }
3806}
3807```
3808
38092. A program to launch:
3810
3811```json [settings]
3812{
3813 "terminal": {
3814 "shell": {
3815 "program": "sh"
3816 }
3817 }
3818}
3819```
3820
38213. A program with arguments:
3822
3823```json [settings]
3824{
3825 "terminal": {
3826 "shell": {
3827 "with_arguments": {
3828 "program": "/bin/bash",
3829 "args": ["--login"]
3830 }
3831 }
3832 }
3833}
3834```
3835
3836## Terminal: Detect Virtual Environments {#terminal-detect_venv}
3837
3838- Description: Activate the [Python Virtual Environment](https://docs.python.org/3/library/venv.html), if one is found, in the terminal's working directory (as resolved by the working_directory and automatically activating the virtual environment.
3839- Setting: `detect_venv`
3840- Default:
3841
3842```json [settings]
3843{
3844 "terminal": {
3845 "detect_venv": {
3846 "on": {
3847 // Default directories to search for virtual environments, relative
3848 // to the current working directory. We recommend overriding this
3849 // in your project's settings, rather than globally.
3850 "directories": [".env", "env", ".venv", "venv"],
3851 // Can also be `csh`, `fish`, and `nushell`
3852 "activate_script": "default"
3853 }
3854 }
3855 }
3856}
3857```
3858
3859Disable with:
3860
3861```json [settings]
3862{
3863 "terminal": {
3864 "detect_venv": "off"
3865 }
3866}
3867```
3868
3869## Terminal: Toolbar
3870
3871- Description: Whether or not to show various elements in the terminal toolbar.
3872- Setting: `toolbar`
3873- Default:
3874
3875```json [settings]
3876{
3877 "terminal": {
3878 "toolbar": {
3879 "breadcrumbs": false
3880 }
3881 }
3882}
3883```
3884
3885**Options**
3886
3887At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
3888
3889If the terminal title is empty, the breadcrumbs won't be shown.
3890
3891The shell running in the terminal needs to be configured to emit the title.
3892
3893Example command to set the title: `echo -e "\e]2;New Title\007";`
3894
3895### Terminal: Button
3896
3897- Description: Control to show or hide the terminal button in the status bar
3898- Setting: `button`
3899- Default: `true`
3900
3901**Options**
3902
3903`boolean` values
3904
3905```json [settings]
3906{
3907 "terminal": {
3908 "button": false
3909 }
3910}
3911```
3912
3913### Terminal: Working Directory
3914
3915- Description: What working directory to use when launching the terminal.
3916- Setting: `working_directory`
3917- Default: `"current_project_directory"`
3918
3919**Options**
3920
39211. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
3922
3923```json [settings]
3924{
3925 "terminal": {
3926 "working_directory": "current_project_directory"
3927 }
3928}
3929```
3930
39312. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
3932
3933```json [settings]
3934{
3935 "terminal": {
3936 "working_directory": "first_project_directory"
3937 }
3938}
3939```
3940
39413. Always use this platform's home directory (if we can find it)
3942
3943```json [settings]
3944{
3945 "terminal": {
3946 "working_directory": "always_home"
3947 }
3948}
3949```
3950
39514. Always use a specific directory. This value will be shell expanded. If this path is not a valid directory the terminal will default to this platform's home directory.
3952
3953```json [settings]
3954{
3955 "terminal": {
3956 "working_directory": {
3957 "always": {
3958 "directory": "~/zed/projects/"
3959 }
3960 }
3961 }
3962}
3963```
3964
3965## REPL
3966
3967- Description: Repl settings.
3968- Setting: `repl`
3969- Default:
3970
3971```json [settings]
3972"repl": {
3973 // Maximum number of columns to keep in REPL's scrollback buffer.
3974 // Clamped with [20, 512] range.
3975 "max_columns": 128,
3976 // Maximum number of lines to keep in REPL's scrollback buffer.
3977 // Clamped with [4, 256] range.
3978 "max_lines": 32
3979},
3980```
3981
3982## Theme
3983
3984- Description: The theme setting can be specified in two forms - either as the name of a theme or as an object containing the `mode`, `dark`, and `light` themes for the Zed UI.
3985- Setting: `theme`
3986- Default: `One Dark`
3987
3988### Theme Object
3989
3990- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
3991- Setting: `theme`
3992- Default:
3993
3994```json [settings]
3995"theme": {
3996 "mode": "system",
3997 "dark": "One Dark",
3998 "light": "One Light"
3999},
4000```
4001
4002### Mode
4003
4004- Description: Specify theme mode.
4005- Setting: `mode`
4006- Default: `system`
4007
4008**Options**
4009
40101. Set the theme to dark mode
4011
4012```json [settings]
4013{
4014 "mode": "dark"
4015}
4016```
4017
40182. Set the theme to light mode
4019
4020```json [settings]
4021{
4022 "mode": "light"
4023}
4024```
4025
40263. Set the theme to system mode
4027
4028```json [settings]
4029{
4030 "mode": "system"
4031}
4032```
4033
4034### Dark
4035
4036- Description: The name of the dark Zed theme to use for the UI.
4037- Setting: `dark`
4038- Default: `One Dark`
4039
4040**Options**
4041
4042Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4043
4044### Light
4045
4046- Description: The name of the light Zed theme to use for the UI.
4047- Setting: `light`
4048- Default: `One Light`
4049
4050**Options**
4051
4052Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4053
4054## Title Bar
4055
4056- Description: Whether or not to show various elements in the title bar
4057- Setting: `title_bar`
4058- Default:
4059
4060```json [settings]
4061"title_bar": {
4062 "show_branch_icon": false,
4063 "show_branch_name": true,
4064 "show_project_items": true,
4065 "show_onboarding_banner": true,
4066 "show_user_picture": true,
4067 "show_sign_in": true,
4068 "show_menus": false
4069}
4070```
4071
4072**Options**
4073
4074- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
4075- `show_branch_name`: Whether to show the branch name button in the titlebar
4076- `show_project_items`: Whether to show the project host and name in the titlebar
4077- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4078- `show_user_picture`: Whether to show user picture in the titlebar
4079- `show_sign_in`: Whether to show the sign in button in the titlebar
4080- `show_menus`: Whether to show the menus in the titlebar
4081
4082## Vim
4083
4084- Description: Whether or not to enable vim mode.
4085- Setting: `vim_mode`
4086- Default: `false`
4087
4088## When Closing With No Tabs
4089
4090- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4091- Setting: `when_closing_with_no_tabs`
4092- Default: `"platform_default"`
4093
4094**Options**
4095
40961. Use platform default behavior:
4097
4098```json [settings]
4099{
4100 "when_closing_with_no_tabs": "platform_default"
4101}
4102```
4103
41042. Always close the window:
4105
4106```json [settings]
4107{
4108 "when_closing_with_no_tabs": "close_window"
4109}
4110```
4111
41123. Never close the window:
4113
4114```json [settings]
4115{
4116 "when_closing_with_no_tabs": "keep_window_open"
4117}
4118```
4119
4120## Project Panel
4121
4122- Description: Customize project panel
4123- Setting: `project_panel`
4124- Default:
4125
4126```json [settings]
4127{
4128 "project_panel": {
4129 "button": true,
4130 "default_width": 240,
4131 "dock": "left",
4132 "entry_spacing": "comfortable",
4133 "file_icons": true,
4134 "folder_icons": true,
4135 "git_status": true,
4136 "indent_size": 20,
4137 "auto_reveal_entries": true,
4138 "auto_fold_dirs": true,
4139 "drag_and_drop": true,
4140 "scrollbar": {
4141 "show": null
4142 },
4143 "sticky_scroll": true,
4144 "show_diagnostics": "all",
4145 "indent_guides": {
4146 "show": "always"
4147 },
4148 "hide_root": false,
4149 "hide_hidden": false,
4150 "starts_open": true
4151 }
4152}
4153```
4154
4155### Dock
4156
4157- Description: Control the position of the dock
4158- Setting: `dock`
4159- Default: `left`
4160
4161**Options**
4162
41631. Default dock position to left
4164
4165```json [settings]
4166{
4167 "dock": "left"
4168}
4169```
4170
41712. Default dock position to right
4172
4173```json [settings]
4174{
4175 "dock": "right"
4176}
4177```
4178
4179### Entry Spacing
4180
4181- Description: Spacing between worktree entries
4182- Setting: `entry_spacing`
4183- Default: `comfortable`
4184
4185**Options**
4186
41871. Comfortable entry spacing
4188
4189```json [settings]
4190{
4191 "entry_spacing": "comfortable"
4192}
4193```
4194
41952. Standard entry spacing
4196
4197```json [settings]
4198{
4199 "entry_spacing": "standard"
4200}
4201```
4202
4203### Git Status
4204
4205- Description: Indicates newly created and updated files
4206- Setting: `git_status`
4207- Default: `true`
4208
4209**Options**
4210
42111. Default enable git status
4212
4213```json [settings]
4214{
4215 "git_status": true
4216}
4217```
4218
42192. Default disable git status
4220
4221```json [settings]
4222{
4223 "git_status": false
4224}
4225```
4226
4227### Default Width
4228
4229- Description: Customize default width taken by project panel
4230- Setting: `default_width`
4231- Default: `240`
4232
4233**Options**
4234
4235`float` values
4236
4237### Auto Reveal Entries
4238
4239- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4240- Setting: `auto_reveal_entries`
4241- Default: `true`
4242
4243**Options**
4244
42451. Enable auto reveal entries
4246
4247```json [settings]
4248{
4249 "auto_reveal_entries": true
4250}
4251```
4252
42532. Disable auto reveal entries
4254
4255```json [settings]
4256{
4257 "auto_reveal_entries": false
4258}
4259```
4260
4261### Auto Fold Dirs
4262
4263- Description: Whether to fold directories automatically when directory has only one directory inside.
4264- Setting: `auto_fold_dirs`
4265- Default: `true`
4266
4267**Options**
4268
42691. Enable auto fold dirs
4270
4271```json [settings]
4272{
4273 "auto_fold_dirs": true
4274}
4275```
4276
42772. Disable auto fold dirs
4278
4279```json [settings]
4280{
4281 "auto_fold_dirs": false
4282}
4283```
4284
4285### Indent Size
4286
4287- Description: Amount of indentation (in pixels) for nested items.
4288- Setting: `indent_size`
4289- Default: `20`
4290
4291### Indent Guides: Show
4292
4293- Description: Whether to show indent guides in the project panel.
4294- Setting: `indent_guides`
4295- Default:
4296
4297```json [settings]
4298"indent_guides": {
4299 "show": "always"
4300}
4301```
4302
4303**Options**
4304
43051. Show indent guides in the project panel
4306
4307```json [settings]
4308{
4309 "indent_guides": {
4310 "show": "always"
4311 }
4312}
4313```
4314
43152. Hide indent guides in the project panel
4316
4317```json [settings]
4318{
4319 "indent_guides": {
4320 "show": "never"
4321 }
4322}
4323```
4324
4325### Scrollbar: Show
4326
4327- Description: Whether to show a scrollbar in the project panel. Possible values: null, "auto", "system", "always", "never". Inherits editor settings when absent, see its description for more details.
4328- Setting: `scrollbar`
4329- Default:
4330
4331```json [settings]
4332"scrollbar": {
4333 "show": null
4334}
4335```
4336
4337**Options**
4338
43391. Show scrollbar in the project panel
4340
4341```json [settings]
4342{
4343 "scrollbar": {
4344 "show": "always"
4345 }
4346}
4347```
4348
43492. Hide scrollbar in the project panel
4350
4351```json [settings]
4352{
4353 "scrollbar": {
4354 "show": "never"
4355 }
4356}
4357```
4358
4359## Agent
4360
4361Visit [the Configuration page](./ai/configuration.md) under the AI section to learn more about all the agent-related settings.
4362
4363## Collaboration Panel
4364
4365- Description: Customizations for the collaboration panel.
4366- Setting: `collaboration_panel`
4367- Default:
4368
4369```json [settings]
4370{
4371 "collaboration_panel": {
4372 "button": true,
4373 "dock": "left",
4374 "default_width": 240
4375 }
4376}
4377```
4378
4379**Options**
4380
4381- `button`: Whether to show the collaboration panel button in the status bar
4382- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
4383- `default_width`: Default width of the collaboration panel
4384
4385## Debugger
4386
4387- Description: Configuration for debugger panel and settings
4388- Setting: `debugger`
4389- Default:
4390
4391```json [settings]
4392{
4393 "debugger": {
4394 "stepping_granularity": "line",
4395 "save_breakpoints": true,
4396 "dock": "bottom",
4397 "button": true
4398 }
4399}
4400```
4401
4402See the [debugger page](./debugger.md) for more information about debugging support within Zed.
4403
4404## Git Panel
4405
4406- Description: Setting to customize the behavior of the git panel.
4407- Setting: `git_panel`
4408- Default:
4409
4410```json [settings]
4411{
4412 "git_panel": {
4413 "button": true,
4414 "dock": "left",
4415 "default_width": 360,
4416 "status_style": "icon",
4417 "fallback_branch_name": "main",
4418 "sort_by_path": false,
4419 "collapse_untracked_diff": false,
4420 "scrollbar": {
4421 "show": null
4422 }
4423 }
4424}
4425```
4426
4427**Options**
4428
4429- `button`: Whether to show the git panel button in the status bar
4430- `dock`: Where to dock the git panel. Can be `left` or `right`
4431- `default_width`: Default width of the git panel
4432- `status_style`: How to display git status. Can be `label_color` or `icon`
4433- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
4434- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
4435- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
4436- `scrollbar`: When to show the scrollbar in the git panel
4437
4438## Outline Panel
4439
4440- Description: Customize outline Panel
4441- Setting: `outline_panel`
4442- Default:
4443
4444```json [settings]
4445"outline_panel": {
4446 "button": true,
4447 "default_width": 300,
4448 "dock": "left",
4449 "file_icons": true,
4450 "folder_icons": true,
4451 "git_status": true,
4452 "indent_size": 20,
4453 "auto_reveal_entries": true,
4454 "auto_fold_dirs": true,
4455 "indent_guides": {
4456 "show": "always"
4457 },
4458 "scrollbar": {
4459 "show": null
4460 }
4461}
4462```
4463
4464## Calls
4465
4466- Description: Customize behavior when participating in a call
4467- Setting: `calls`
4468- Default:
4469
4470```json [settings]
4471"calls": {
4472 // Join calls with the microphone live by default
4473 "mute_on_join": false,
4474 // Share your project when you are the first to join a channel
4475 "share_on_join": false
4476},
4477```
4478
4479## Unnecessary Code Fade
4480
4481- Description: How much to fade out unused code.
4482- Setting: `unnecessary_code_fade`
4483- Default: `0.3`
4484
4485**Options**
4486
4487Float values between `0.0` and `0.9`, where:
4488
4489- `0.0` means no fading (unused code looks the same as used code)
4490- `0.9` means maximum fading (unused code is very faint but still visible)
4491
4492**Example**
4493
4494```json [settings]
4495{
4496 "unnecessary_code_fade": 0.5
4497}
4498```
4499
4500## UI Font Family
4501
4502- Description: The name of the font to use for text in the UI.
4503- Setting: `ui_font_family`
4504- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
4505
4506**Options**
4507
4508The name of any font family installed on the system, `".ZedSans"` to use the Zed-provided default, or `".SystemUIFont"` to use the system's default UI font (on macOS and Windows).
4509
4510## UI Font Features
4511
4512- Description: The OpenType features to enable for text in the UI.
4513- Setting: `ui_font_features`
4514- Default:
4515
4516```json [settings]
4517"ui_font_features": {
4518 "calt": false
4519}
4520```
4521
4522- Platform: macOS and Windows.
4523
4524**Options**
4525
4526Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
4527
4528For example, to disable font ligatures, add the following to your settings:
4529
4530```json [settings]
4531{
4532 "ui_font_features": {
4533 "calt": false
4534 }
4535}
4536```
4537
4538You can also set other OpenType features, like setting `cv01` to `7`:
4539
4540```json [settings]
4541{
4542 "ui_font_features": {
4543 "cv01": 7
4544 }
4545}
4546```
4547
4548## UI Font Fallbacks
4549
4550- Description: The font fallbacks to use for text in the UI.
4551- Setting: `ui_font_fallbacks`
4552- Default: `null`
4553- Platform: macOS and Windows.
4554
4555**Options**
4556
4557For example, to use `Nerd Font` as a fallback, add the following to your settings:
4558
4559```json [settings]
4560{
4561 "ui_font_fallbacks": ["Nerd Font"]
4562}
4563```
4564
4565## UI Font Size
4566
4567- Description: The default font size for text in the UI.
4568- Setting: `ui_font_size`
4569- Default: `16`
4570
4571**Options**
4572
4573`integer` values from `6` to `100` pixels (inclusive)
4574
4575## UI Font Weight
4576
4577- Description: The default font weight for text in the UI.
4578- Setting: `ui_font_weight`
4579- Default: `400`
4580
4581**Options**
4582
4583`integer` values between `100` and `900`
4584
4585## An example configuration:
4586
4587```json [settings]
4588// ~/.config/zed/settings.json
4589{
4590 "theme": "cave-light",
4591 "tab_size": 2,
4592 "preferred_line_length": 80,
4593 "soft_wrap": "none",
4594
4595 "buffer_font_size": 18,
4596 "buffer_font_family": ".ZedMono",
4597
4598 "autosave": "on_focus_change",
4599 "format_on_save": "off",
4600 "vim_mode": false,
4601 "projects_online_by_default": true,
4602 "terminal": {
4603 "font_family": "FiraCode Nerd Font Mono",
4604 "blinking": "off"
4605 },
4606 "languages": {
4607 "C": {
4608 "format_on_save": "on",
4609 "formatter": "language_server",
4610 "preferred_line_length": 64,
4611 "soft_wrap": "preferred_line_length"
4612 }
4613 }
4614}
4615```