1---
2title: All Settings
3description: "Complete reference for all Zed settings."
4---
5
6# All Settings
7
8This is the complete reference for all Zed settings.
9
10You may also want to change your [theme](../themes.md), configure your [key bindings](../key-bindings.md), set up [tasks](../tasks.md), or install [extensions](../extensions.md).
11
12# Settings
13
14The sections below document supported Zed settings.
15
16## Active Pane Modifiers
17
18- Description: Styling settings applied to the active pane.
19- Setting: `active_pane_modifiers`
20- Default:
21
22```json [settings]
23{
24 "active_pane_modifiers": {
25 "border_size": 0.0,
26 "inactive_opacity": 1.0
27 }
28}
29```
30
31### Border size
32
33- 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.
34- Setting: `border_size`
35- Default: `0.0`
36
37**Options**
38
39Non-negative `float` values
40
41### Inactive Opacity
42
43- Description: Opacity of inactive panels. When set to 1.0, inactive panes have the same opacity as the active pane. If set to 0, inactive pane content is not visible. Values are clamped to the [0.0, 1.0] range.
44- Setting: `inactive_opacity`
45- Default: `1.0`
46
47**Options**
48
49`float` values
50
51## Bottom Dock Layout
52
53- Description: Control the layout of the bottom dock, relative to the left and right docks.
54- Setting: `bottom_dock_layout`
55- Default: `"contained"`
56
57**Options**
58
591. Contain the bottom dock, giving the full height of the window to the left and right docks.
60
61```json [settings]
62{
63 "bottom_dock_layout": "contained"
64}
65```
66
672. Give the bottom dock the full width of the window, truncating the left and right docks.
68
69```json [settings]
70{
71 "bottom_dock_layout": "full"
72}
73```
74
753. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window.
76
77```json [settings]
78{
79 "bottom_dock_layout": "left_aligned"
80}
81```
82
834. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
84
85```json [settings]
86{
87 "bottom_dock_layout": "right_aligned"
88}
89```
90
91## Agent Font Size
92
93- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
94- Setting: `agent_font_size`
95- Default: `null`
96
97**Options**
98
99`integer` values from `6` to `100` pixels (inclusive)
100
101## Allow Rewrap
102
103- Description: Controls where the {#action editor::Rewrap} action is allowed in the current language scope
104- Setting: `allow_rewrap`
105- Default: `"in_comments"`
106
107**Options**
108
1091. Allow rewrap in comments only:
110
111```json [settings]
112{
113 "allow_rewrap": "in_comments"
114}
115```
116
1172. Allow rewrap in selections only:
118
119```json [settings]
120{
121 "allow_rewrap": "in_selections"
122}
123```
124
1253. Allow rewrap anywhere:
126
127```json [settings]
128{
129 "allow_rewrap": "anywhere"
130}
131```
132
133Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
134
135## Auto Indent
136
137- Description: Whether indentation should be adjusted based on context while typing. This can be specified on a per-language basis.
138- Setting: `auto_indent`
139- Default: `true`
140
141**Options**
142
143`boolean` values
144
145## Auto Indent On Paste
146
147- Description: Whether indentation of pasted content should be adjusted based on the context
148- Setting: `auto_indent_on_paste`
149- Default: `true`
150
151**Options**
152
153`boolean` values
154
155## Auto Install extensions
156
157- Description: Define extensions to install automatically or never install.
158- Setting: `auto_install_extensions`
159- Default: `{ "html": true }`
160
161**Options**
162
163You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](../extensions/installing-extensions.md#installation-location):
164
165On macOS:
166
167```sh
168ls ~/Library/Application\ Support/Zed/extensions/installed/
169```
170
171On Linux:
172
173```sh
174ls ~/.local/share/zed/extensions/installed
175```
176
177Define extensions which should be installed (`true`) or never installed (`false`).
178
179```json [settings]
180{
181 "auto_install_extensions": {
182 "html": true,
183 "dockerfile": true,
184 "docker-compose": false
185 }
186}
187```
188
189## Autosave
190
191- Description: When to automatically save edited buffers.
192- Setting: `autosave`
193- Default: `off`
194
195**Options**
196
1971. To disable autosave, set it to `off`:
198
199```json [settings]
200{
201 "autosave": "off"
202}
203```
204
2052. To autosave when focus changes, use `on_focus_change`:
206
207```json [settings]
208{
209 "autosave": "on_focus_change"
210}
211```
212
2133. To autosave when the active window changes, use `on_window_change`:
214
215```json [settings]
216{
217 "autosave": "on_window_change"
218}
219```
220
2214. To autosave after an inactivity period, use `after_delay`:
222
223```json [settings]
224{
225 "autosave": {
226 "after_delay": {
227 "milliseconds": 1000
228 }
229 }
230}
231```
232
233Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.
234
235## Autoscroll on Clicks
236
237- Description: Whether to scroll when clicking near the edge of the visible text area.
238- Setting: `autoscroll_on_clicks`
239- Default: `false`
240
241**Options**
242
243`boolean` values
244
245## Auto Signature Help
246
247- Description: Show method signatures in the editor when inside parentheses.
248- Setting: `auto_signature_help`
249- Default: `false`
250
251**Options**
252
253`boolean` values
254
255### Show Signature Help After Edits
256
257- 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.
258- Setting: `show_signature_help_after_edits`
259- Default: `false`
260
261**Options**
262
263`boolean` values
264
265## Auto Update
266
267- Description: Whether or not to automatically check for updates.
268- Setting: `auto_update`
269- Default: `true`
270
271**Options**
272
273`boolean` values
274
275## Base Keymap
276
277- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
278- Setting: `base_keymap`
279- Default: `VSCode`
280
281**Options**
282
2831. VS Code
284
285```json [settings]
286{
287 "base_keymap": "VSCode"
288}
289```
290
2912. Atom
292
293```json [settings]
294{
295 "base_keymap": "Atom"
296}
297```
298
2993. JetBrains
300
301```json [settings]
302{
303 "base_keymap": "JetBrains"
304}
305```
306
3074. None
308
309```json [settings]
310{
311 "base_keymap": "None"
312}
313```
314
3155. Sublime Text
316
317```json [settings]
318{
319 "base_keymap": "SublimeText"
320}
321```
322
3236. TextMate
324
325```json [settings]
326{
327 "base_keymap": "TextMate"
328}
329```
330
331## Buffer Font Family
332
333- Description: The name of a font to use for rendering text in the editor.
334- Setting: `buffer_font_family`
335- Default: `.ZedMono`. This currently aliases to [Lilex](https://lilex.myrt.co).
336
337**Options**
338
339The name of any font family installed on the user's system, or `".ZedMono"`.
340
341## Buffer Font Features
342
343- Description: The OpenType features to enable for text in the editor.
344- Setting: `buffer_font_features`
345- Default: `null`
346- Platform: macOS and Windows.
347
348**Options**
349
350Zed 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.
351
352For example, to disable font ligatures, add the following to your settings:
353
354```json [settings]
355{
356 "buffer_font_features": {
357 "calt": false
358 }
359}
360```
361
362You can also set other OpenType features, like setting `cv01` to `7`:
363
364```json [settings]
365{
366 "buffer_font_features": {
367 "cv01": 7
368 }
369}
370```
371
372## Buffer Font Fallbacks
373
374- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
375- Setting: `buffer_font_fallbacks`
376- Default: `null`
377- Platform: macOS and Windows.
378
379**Options**
380
381For example, to use `Nerd Font` as a fallback, add the following to your settings:
382
383```json [settings]
384{
385 "buffer_font_fallbacks": ["Nerd Font"]
386}
387```
388
389## Buffer Font Size
390
391- Description: The default font size for text in the editor.
392- Setting: `buffer_font_size`
393- Default: `15`
394
395**Options**
396
397A font size from `6` to `100` pixels (inclusive)
398
399## Buffer Font Weight
400
401- Description: The default font weight for text in the editor.
402- Setting: `buffer_font_weight`
403- Default: `400`
404
405**Options**
406
407`integer` values between `100` and `900`
408
409## Buffer Line Height
410
411- Description: The default line height for text in the editor.
412- Setting: `buffer_line_height`
413- Default: `"comfortable"`
414
415**Options**
416
417`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
418
419## Centered Layout
420
421- Description: Configuration for the centered layout mode.
422- Setting: `centered_layout`
423- Default:
424
425```json [settings]
426{
427 "centered_layout": {
428 "left_padding": 0.2,
429 "right_padding": 0.2
430 }
431}
432```
433
434**Options**
435
436The `left_padding` and `right_padding` options define the relative width of the
437left 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`.
438
439## Close on File Delete
440
441- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
442- Setting: `close_on_file_delete`
443- Default: `false`
444
445**Options**
446
447`boolean` values
448
449When 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.
450
451Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
452
453## Code Lens
454
455- Description: Whether and how to display code lenses from language servers. Code lenses show contextual information such as reference counts, implementations, and other metadata provided by the language server.
456- Setting: `code_lens`
457- Default: `off`
458
459**Options**
460
4611. `off`: Do not query and display code lenses.
4622. `on`: Display code lenses from language servers above code elements.
4633. `menu`: Display code lenses in the code action menu.
464
465```json [settings]
466{
467 "code_lens": "on"
468}
469```
470
471## Confirm Quit
472
473- Description: Whether or not to prompt the user to confirm before closing the application.
474- Setting: `confirm_quit`
475- Default: `false`
476
477**Options**
478
479`boolean` values
480
481## Diagnostics Max Severity
482
483- Description: Which level to use to filter out diagnostics displayed in the editor
484- Setting: `diagnostics_max_severity`
485- Default: `null`
486
487**Options**
488
4891. Allow all diagnostics (default):
490
491```json [settings]
492{
493 "diagnostics_max_severity": "all"
494}
495```
496
4972. Show only errors:
498
499```json [settings]
500{
501 "diagnostics_max_severity": "error"
502}
503```
504
5053. Show errors and warnings:
506
507```json [settings]
508{
509 "diagnostics_max_severity": "warning"
510}
511```
512
5134. Show errors, warnings, and information:
514
515```json [settings]
516{
517 "diagnostics_max_severity": "info"
518}
519```
520
5215. Show all including hints:
522
523```json [settings]
524{
525 "diagnostics_max_severity": "hint"
526}
527```
528
529## Diff View Style
530
531- Description: How to display diffs in the editor.
532- Setting: `diff_view_style`
533- Default: `"split"`
534
535**Options**
536
537- `"unified"`: Show changes inline with added and deleted lines stacked vertically
538- `"split"`: Display old and new versions side by side in separate panes (default)
539
540See [Git documentation](../git.md#diff-view-styles) for more details.
541
542## Disable AI
543
544- Description: Whether to disable all AI features in Zed
545- Setting: `disable_ai`
546- Default: `false`
547
548**Options**
549
550`boolean` values
551
552## Direnv Integration
553
554- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
555 `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.
556 It also allows for those environment variables to be used in tasks.
557- Setting: `load_direnv`
558- Default: `"direct"`
559
560**Options**
561
562There are three options to choose from:
563
5641. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
5652. `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.
5663. `disabled`: No shell environment will be loaded automatically; direnv must be invoked manually (e.g. with `direnv exec`) to be used.
567
568## Double Click In Multibuffer
569
570- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
571- Setting: `double_click_in_multibuffer`
572- Default: `"select"`
573
574**Options**
575
5761. Behave as a regular buffer and select the whole word (default):
577
578```json [settings]
579{
580 "double_click_in_multibuffer": "select"
581}
582```
583
5842. Open the excerpt clicked as a new buffer in the new tab:
585
586```json [settings]
587{
588 "double_click_in_multibuffer": "open"
589}
590```
591
592For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
593
594## Drop Target Size
595
596- 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.
597- Setting: `drop_target_size`
598- Default: `0.2`
599
600**Options**
601
602`float` values between `0` and `0.5`
603
604## Edit Predictions
605
606- Description: Settings for edit predictions.
607- Setting: `edit_predictions`
608- Default:
609
610```json [settings]
611 "edit_predictions": {
612 "disabled_globs": [
613 "**/.env*",
614 "**/*.pem",
615 "**/*.key",
616 "**/*.cert",
617 "**/*.crt",
618 "**/.dev.vars",
619 "**/secrets.yml"
620 ]
621 }
622```
623
624**Options**
625
626### Disabled Globs
627
628- 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.
629- Setting: `disabled_globs`
630- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
631
632**Options**
633
634List of `string` values.
635
636## Edit Predictions Disabled in
637
638- Description: A list of language scopes in which edit predictions should be disabled.
639- Setting: `edit_predictions_disabled_in`
640- Default: `[]`
641
642**Options**
643
644List of `string` values
645
6461. Don't show edit predictions in comments:
647
648```json [settings]
649{
650 "edit_predictions_disabled_in": ["comment"]
651}
652```
653
6542. Don't show edit predictions in strings and comments:
655
656```json [settings]
657{
658 "edit_predictions_disabled_in": ["comment", "string"]
659}
660```
661
6623. Only in Go, don't show edit predictions in strings and comments:
663
664```json [settings]
665{
666 "languages": {
667 "Go": {
668 "edit_predictions_disabled_in": ["comment", "string"]
669 }
670 }
671}
672```
673
674## Current Line Highlight
675
676- Description: How to highlight the current line in the editor.
677- Setting: `current_line_highlight`
678- Default: `all`
679
680**Options**
681
6821. Don't highlight the current line:
683
684```json [settings]
685{
686 "current_line_highlight": "none"
687}
688```
689
6902. Highlight the gutter area:
691
692```json [settings]
693{
694 "current_line_highlight": "gutter"
695}
696```
697
6983. Highlight the editor area:
699
700```json [settings]
701{
702 "current_line_highlight": "line"
703}
704```
705
7064. Highlight the full line:
707
708```json [settings]
709{
710 "current_line_highlight": "all"
711}
712```
713
714## Selection Highlight
715
716- Description: Whether to highlight all occurrences of the selected text in an editor.
717- Setting: `selection_highlight`
718- Default: `true`
719
720## Rounded Selection
721
722- Description: Whether the text selection should have rounded corners.
723- Setting: `rounded_selection`
724- Default: `true`
725
726## Cursor Blink
727
728- Description: Whether or not the cursor blinks.
729- Setting: `cursor_blink`
730- Default: `true`
731
732**Options**
733
734`boolean` values
735
736## Cursor Shape
737
738- Description: Cursor shape for the default editor.
739- Setting: `cursor_shape`
740- Default: `bar`
741
742**Options**
743
7441. A vertical bar:
745
746```json [settings]
747{
748 "cursor_shape": "bar"
749}
750```
751
7522. A block that surrounds the following character:
753
754```json [settings]
755{
756 "cursor_shape": "block"
757}
758```
759
7603. An underline / underscore that runs along the following character:
761
762```json [settings]
763{
764 "cursor_shape": "underline"
765}
766```
767
7684. An box drawn around the following character:
769
770```json [settings]
771{
772 "cursor_shape": "hollow"
773}
774```
775
776## Gutter
777
778- Description: Settings for the editor gutter
779- Setting: `gutter`
780- Default:
781
782```json [settings]
783{
784 "gutter": {
785 "line_numbers": true,
786 "runnables": true,
787 "breakpoints": true,
788 "folds": true,
789 "min_line_number_digits": 4
790 }
791}
792```
793
794**Options**
795
796- `line_numbers`: Whether to show line numbers in the gutter
797- `runnables`: Whether to show runnable buttons in the gutter
798- `breakpoints`: Whether to show breakpoints in the gutter
799- `folds`: Whether to show fold buttons in the gutter
800- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
801
802## Hide Mouse
803
804- Description: Determines when the mouse cursor should be hidden in an editor or input box.
805- Setting: `hide_mouse`
806- Default: `on_typing_and_movement`
807
808**Options**
809
8101. Never hide the mouse cursor:
811
812```json [settings]
813{
814 "hide_mouse": "never"
815}
816```
817
8182. Hide only when typing:
819
820```json [settings]
821{
822 "hide_mouse": "on_typing"
823}
824```
825
8263. Hide on both typing and cursor movement:
827
828```json [settings]
829{
830 "hide_mouse": "on_typing_and_movement"
831}
832```
833
834## Snippet Sort Order
835
836- Description: Determines how snippets are sorted relative to other completion items.
837- Setting: `snippet_sort_order`
838- Default: `inline`
839
840**Options**
841
8421. Place snippets at the top of the completion list:
843
844```json [settings]
845{
846 "snippet_sort_order": "top"
847}
848```
849
8502. Place snippets normally without any preference:
851
852```json [settings]
853{
854 "snippet_sort_order": "inline"
855}
856```
857
8583. Place snippets at the bottom of the completion list:
859
860```json [settings]
861{
862 "snippet_sort_order": "bottom"
863}
864```
865
8664. Do not show snippets in the completion list at all:
867
868```json [settings]
869{
870 "snippet_sort_order": "none"
871}
872```
873
874## Editor Scrollbar
875
876- Description: Whether or not to show the editor scrollbar and various elements in it.
877- Setting: `scrollbar`
878- Default:
879
880```json [settings]
881{
882 "scrollbar": {
883 "show": "auto",
884 "cursors": true,
885 "git_diff": true,
886 "search_results": true,
887 "selected_text": true,
888 "selected_symbol": true,
889 "diagnostics": "all",
890 "axes": {
891 "horizontal": true,
892 "vertical": true
893 }
894 }
895}
896```
897
898### Show Mode
899
900- Description: When to show the editor scrollbar.
901- Setting: `show`
902- Default: `auto`
903
904**Options**
905
9061. Show the scrollbar if there's important information or follow the system's configured behavior:
907
908```json [settings]
909{
910 "scrollbar": {
911 "show": "auto"
912 }
913}
914```
915
9162. Match the system's configured behavior:
917
918```json [settings]
919{
920 "scrollbar": {
921 "show": "system"
922 }
923}
924```
925
9263. Always show the scrollbar:
927
928```json [settings]
929{
930 "scrollbar": {
931 "show": "always"
932 }
933}
934```
935
9364. Never show the scrollbar:
937
938```json [settings]
939{
940 "scrollbar": {
941 "show": "never"
942 }
943}
944```
945
946### Cursor Indicators
947
948- Description: Whether to show cursor positions in the scrollbar.
949- Setting: `cursors`
950- Default: `true`
951
952Cursor indicators appear as small marks on the scrollbar showing where other collaborators' cursors are positioned in the file.
953
954**Options**
955
956`boolean` values
957
958### Git Diff Indicators
959
960- Description: Whether to show git diff indicators in the scrollbar.
961- Setting: `git_diff`
962- Default: `true`
963
964Git diff indicators appear as colored marks showing lines that have been added, modified, or deleted compared to the git HEAD.
965
966**Options**
967
968`boolean` values
969
970### Search Results Indicators
971
972- Description: Whether to show buffer search results in the scrollbar.
973- Setting: `search_results`
974- Default: `true`
975
976Search result indicators appear as marks showing all locations in the file where your current search query matches.
977
978**Options**
979
980`boolean` values
981
982### Selected Text Indicators
983
984- Description: Whether to show selected text occurrences in the scrollbar.
985- Setting: `selected_text`
986- Default: `true`
987
988Selected text indicators appear as marks showing all occurrences of the currently selected text throughout the file.
989
990**Options**
991
992`boolean` values
993
994### Selected Symbols Indicators
995
996- Description: Whether to show selected symbol occurrences in the scrollbar.
997- Setting: `selected_symbol`
998- Default: `true`
999
1000Selected symbol indicators appear as marks showing all occurrences of the currently selected symbol (like a function or variable name) throughout the file.
1001
1002**Options**
1003
1004`boolean` values
1005
1006### Diagnostics
1007
1008- Description: Which diagnostic indicators to show in the scrollbar.
1009- Setting: `diagnostics`
1010- Default: `all`
1011
1012Diagnostic indicators appear as colored marks showing errors, warnings, and other language server diagnostics at their corresponding line positions in the file.
1013
1014**Options**
1015
10161. Show all diagnostics:
1017
1018```json [settings]
1019{
1020 "scrollbar": {
1021 "diagnostics": "all"
1022 }
1023}
1024```
1025
10262. Do not show any diagnostics:
1027
1028```json [settings]
1029{
1030 "scrollbar": {
1031 "diagnostics": "none"
1032 }
1033}
1034```
1035
10363. Show only errors:
1037
1038```json [settings]
1039{
1040 "scrollbar": {
1041 "diagnostics": "error"
1042 }
1043}
1044```
1045
10464. Show only errors and warnings:
1047
1048```json [settings]
1049{
1050 "scrollbar": {
1051 "diagnostics": "warning"
1052 }
1053}
1054```
1055
10565. Show only errors, warnings, and information:
1057
1058```json [settings]
1059{
1060 "scrollbar": {
1061 "diagnostics": "information"
1062 }
1063}
1064```
1065
1066### Axes
1067
1068- Description: Forcefully enable or disable the scrollbar for each axis
1069- Setting: `axes`
1070- Default:
1071
1072```json [settings]
1073{
1074 "scrollbar": {
1075 "axes": {
1076 "horizontal": true,
1077 "vertical": true
1078 }
1079 }
1080}
1081```
1082
1083#### Horizontal
1084
1085- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
1086- Setting: `horizontal`
1087- Default: `true`
1088
1089**Options**
1090
1091`boolean` values
1092
1093#### Vertical
1094
1095- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
1096- Setting: `vertical`
1097- Default: `true`
1098
1099**Options**
1100
1101`boolean` values
1102
1103## Minimap
1104
1105- Description: Settings related to the editor's minimap, which provides an overview of your document.
1106- Setting: `minimap`
1107- Default:
1108
1109```json [settings]
1110{
1111 "minimap": {
1112 "show": "never",
1113 "thumb": "always",
1114 "thumb_border": "left_open",
1115 "current_line_highlight": null
1116 }
1117}
1118```
1119
1120### Show Mode
1121
1122- Description: When to show the minimap in the editor.
1123- Setting: `show`
1124- Default: `never`
1125
1126**Options**
1127
11281. Always show the minimap:
1129
1130```json [settings]
1131{
1132 "minimap": {
1133 "show": "always"
1134 }
1135}
1136```
1137
11382. Show the minimap if the editor's scrollbars are visible:
1139
1140```json [settings]
1141{
1142 "minimap": {
1143 "show": "auto"
1144 }
1145}
1146```
1147
11483. Never show the minimap:
1149
1150```json [settings]
1151{
1152 "minimap": {
1153 "show": "never"
1154 }
1155}
1156```
1157
1158### Thumb Display
1159
1160- Description: When to show the minimap thumb (the visible editor area) in the minimap.
1161- Setting: `thumb`
1162- Default: `always`
1163
1164**Options**
1165
11661. Show the minimap thumb when hovering over the minimap:
1167
1168```json [settings]
1169{
1170 "minimap": {
1171 "thumb": "hover"
1172 }
1173}
1174```
1175
11762. Always show the minimap thumb:
1177
1178```json [settings]
1179{
1180 "minimap": {
1181 "thumb": "always"
1182 }
1183}
1184```
1185
1186### Thumb Border
1187
1188- Description: How the minimap thumb border should look.
1189- Setting: `thumb_border`
1190- Default: `left_open`
1191
1192**Options**
1193
11941. Display a border on all sides of the thumb:
1195
1196```json [settings]
1197{
1198 "minimap": {
1199 "thumb_border": "full"
1200 }
1201}
1202```
1203
12042. Display a border on all sides except the left side:
1205
1206```json [settings]
1207{
1208 "minimap": {
1209 "thumb_border": "left_open"
1210 }
1211}
1212```
1213
12143. Display a border on all sides except the right side:
1215
1216```json [settings]
1217{
1218 "minimap": {
1219 "thumb_border": "right_open"
1220 }
1221}
1222```
1223
12244. Display a border only on the left side:
1225
1226```json [settings]
1227{
1228 "minimap": {
1229 "thumb_border": "left_only"
1230 }
1231}
1232```
1233
12345. Display the thumb without any border:
1235
1236```json [settings]
1237{
1238 "minimap": {
1239 "thumb_border": "none"
1240 }
1241}
1242```
1243
1244### Current Line Highlight
1245
1246- Description: How to highlight the current line in the minimap.
1247- Setting: `current_line_highlight`
1248- Default: `null`
1249
1250**Options**
1251
12521. Inherit the editor's current line highlight setting:
1253
1254```json [settings]
1255{
1256 "minimap": {
1257 "current_line_highlight": null
1258 }
1259}
1260```
1261
12622. Highlight the current line in the minimap:
1263
1264```json [settings]
1265{
1266 "minimap": {
1267 "current_line_highlight": "line"
1268 }
1269}
1270```
1271
1272or
1273
1274```json [settings]
1275{
1276 "minimap": {
1277 "current_line_highlight": "all"
1278 }
1279}
1280```
1281
12823. Do not highlight the current line in the minimap:
1283
1284```json [settings]
1285{
1286 "minimap": {
1287 "current_line_highlight": "gutter"
1288 }
1289}
1290```
1291
1292or
1293
1294```json [settings]
1295{
1296 "minimap": {
1297 "current_line_highlight": "none"
1298 }
1299}
1300```
1301
1302## Editor Tab Bar
1303
1304- Description: Settings related to the editor's tab bar.
1305- Settings: `tab_bar`
1306- Default:
1307
1308```json [settings]
1309{
1310 "tab_bar": {
1311 "show": true,
1312 "show_nav_history_buttons": true,
1313 "show_tab_bar_buttons": true
1314 }
1315}
1316```
1317
1318### Show
1319
1320- Description: Whether or not to show the tab bar in the editor.
1321- Setting: `show`
1322- Default: `true`
1323
1324**Options**
1325
1326`boolean` values
1327
1328### Navigation History Buttons
1329
1330- Description: Whether or not to show the navigation history buttons.
1331- Setting: `show_nav_history_buttons`
1332- Default: `true`
1333
1334**Options**
1335
1336`boolean` values
1337
1338### Tab Bar Buttons
1339
1340- Description: Whether or not to show the tab bar buttons.
1341- Setting: `show_tab_bar_buttons`
1342- Default: `true`
1343
1344**Options**
1345
1346`boolean` values
1347
1348## Editor Tabs
1349
1350- Description: Configuration for the editor tabs.
1351- Setting: `tabs`
1352- Default:
1353
1354```json [settings]
1355{
1356 "tabs": {
1357 "close_position": "right",
1358 "file_icons": false,
1359 "git_status": false,
1360 "activate_on_close": "history",
1361 "show_close_button": "hover",
1362 "show_diagnostics": "off"
1363 }
1364}
1365```
1366
1367### Close Position
1368
1369- Description: Where to display close button within a tab.
1370- Setting: `close_position`
1371- Default: `right`
1372
1373**Options**
1374
13751. Display the close button on the right:
1376
1377```json [settings]
1378{
1379 "tabs": {
1380 "close_position": "right"
1381 }
1382}
1383```
1384
13852. Display the close button on the left:
1386
1387```json [settings]
1388{
1389 "tabs": {
1390 "close_position": "left"
1391 }
1392}
1393```
1394
1395### File Icons
1396
1397- Description: Whether to show the file icon for a tab.
1398- Setting: `file_icons`
1399- Default: `false`
1400
1401### Git Status
1402
1403- Description: Whether or not to show Git file status in tab.
1404- Setting: `git_status`
1405- Default: `false`
1406
1407### Activate on close
1408
1409- Description: What to do after closing the current tab.
1410- Setting: `activate_on_close`
1411- Default: `history`
1412
1413**Options**
1414
14151. Activate the tab that was open previously:
1416
1417```json [settings]
1418{
1419 "tabs": {
1420 "activate_on_close": "history"
1421 }
1422}
1423```
1424
14252. Activate the right neighbour tab if present:
1426
1427```json [settings]
1428{
1429 "tabs": {
1430 "activate_on_close": "neighbour"
1431 }
1432}
1433```
1434
14353. Activate the left neighbour tab if present:
1436
1437```json [settings]
1438{
1439 "tabs": {
1440 "activate_on_close": "left_neighbour"
1441 }
1442}
1443```
1444
1445### Show close button
1446
1447- Description: Controls the appearance behavior of the tab's close button.
1448- Setting: `show_close_button`
1449- Default: `hover`
1450
1451**Options**
1452
14531. Show it just upon hovering the tab:
1454
1455```json [settings]
1456{
1457 "tabs": {
1458 "show_close_button": "hover"
1459 }
1460}
1461```
1462
14632. Show it persistently:
1464
1465```json [settings]
1466{
1467 "tabs": {
1468 "show_close_button": "always"
1469 }
1470}
1471```
1472
14733. Never show it, even if hovering it:
1474
1475```json [settings]
1476{
1477 "tabs": {
1478 "show_close_button": "hidden"
1479 }
1480}
1481```
1482
1483### Show Diagnostics
1484
1485- 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.
1486- Setting: `show_diagnostics`
1487- Default: `off`
1488
1489**Options**
1490
14911. Do not mark any files:
1492
1493```json [settings]
1494{
1495 "tabs": {
1496 "show_diagnostics": "off"
1497 }
1498}
1499```
1500
15012. Only mark files with errors:
1502
1503```json [settings]
1504{
1505 "tabs": {
1506 "show_diagnostics": "errors"
1507 }
1508}
1509```
1510
15113. Mark files with errors and warnings:
1512
1513```json [settings]
1514{
1515 "tabs": {
1516 "show_diagnostics": "all"
1517 }
1518}
1519```
1520
1521### Show Inline Code Actions
1522
1523- Description: Whether to show code action button at start of buffer line.
1524- Setting: `inline_code_actions`
1525- Default: `true`
1526
1527**Options**
1528
1529`boolean` values
1530
1531### Session
1532
1533- Description: Controls Zed lifecycle-related behavior.
1534- Setting: `session`
1535- Default:
1536
1537```json
1538{
1539 "session": {
1540 "restore_unsaved_buffers": true,
1541 "trust_all_worktrees": false
1542 }
1543}
1544```
1545
1546**Options**
1547
15481. Whether or not to restore unsaved buffers on restart:
1549
1550```json [settings]
1551{
1552 "session": {
1553 "restore_unsaved_buffers": true
1554 }
1555}
1556```
1557
1558If this is true, user won't be prompted whether to save/discard dirty files when closing the application.
1559
15602. Whether or not to skip worktree and workspace trust checks:
1561
1562```json [settings]
1563{
1564 "session": {
1565 "trust_all_worktrees": false
1566 }
1567}
1568```
1569
1570When trusted, project settings are synchronized automatically, language and MCP servers are downloaded and started automatically.
1571
1572### Drag And Drop Selection
1573
1574- 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.
1575- Setting: `drag_and_drop_selection`
1576- Default:
1577
1578```json [settings]
1579{
1580 "drag_and_drop_selection": {
1581 "enabled": true,
1582 "delay": 300
1583 }
1584}
1585```
1586
1587## Editor Toolbar
1588
1589- Description: Whether or not to show various elements in the editor toolbar.
1590- Setting: `toolbar`
1591- Default:
1592
1593```json [settings]
1594{
1595 "toolbar": {
1596 "breadcrumbs": true,
1597 "quick_actions": true,
1598 "selections_menu": true,
1599 "agent_review": true,
1600 "code_actions": false
1601 }
1602}
1603```
1604
1605**Options**
1606
1607Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1608
1609## Use System Tabs
1610
1611- Description: Whether to allow windows to tab together based on the userβs tabbing preference (macOS only).
1612- Setting: `use_system_window_tabs`
1613- Default: `false`
1614
1615**Options**
1616
1617This 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.
1618
1619## Enable Language Server
1620
1621- Description: Whether or not to use language servers to provide code intelligence.
1622- Setting: `enable_language_server`
1623- Default: `true`
1624
1625**Options**
1626
1627`boolean` values
1628
1629## Ensure Final Newline On Save
1630
1631- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1632- Setting: `ensure_final_newline_on_save`
1633- Default: `true`
1634
1635**Options**
1636
1637`boolean` values
1638
1639## Expand Excerpt Lines
1640
1641- Description: The default number of lines to expand excerpts in the multibuffer by
1642- Setting: `expand_excerpt_lines`
1643- Default: `5`
1644
1645**Options**
1646
1647Positive `integer` values
1648
1649## Excerpt Context Lines
1650
1651- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1652- Setting: `excerpt_context_lines`
1653- Default: `2`
1654
1655**Options**
1656
1657Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1658
1659## Extend Comment On Newline
1660
1661- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1662- Setting: `extend_comment_on_newline`
1663- Default: `true`
1664
1665**Options**
1666
1667`boolean` values
1668
1669## Status Bar
1670
1671- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1672- Setting: `status_bar`
1673- Default:
1674
1675```json [settings]
1676{
1677 "status_bar": {
1678 "active_language_button": true,
1679 "cursor_position_button": true,
1680 "line_endings_button": false
1681 }
1682}
1683```
1684
1685There 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.
1686
1687```json
1688"status_bar": {
1689 "experimental.show": false
1690}
1691```
1692
1693## LSP
1694
1695- Description: Configuration for language servers.
1696- Setting: `lsp`
1697- Default: `null`
1698
1699**Options**
1700
1701The following settings can be overridden for specific language servers:
1702
1703- `initialization_options`
1704- `settings`
1705
1706To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1707
1708Some 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.
1709
1710For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1711
1712```json [settings]
1713{
1714 "lsp": {
1715 "rust-analyzer": {
1716 "initialization_options": {
1717 "check": {
1718 "command": "clippy" // rust-analyzer.check.command (default: "check")
1719 }
1720 }
1721 }
1722 }
1723}
1724```
1725
1726While other options may be changed at a runtime and should be placed under `settings`:
1727
1728```json [settings]
1729{
1730 "lsp": {
1731 "yaml-language-server": {
1732 "settings": {
1733 "yaml": {
1734 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1735 }
1736 }
1737 }
1738 }
1739}
1740```
1741
1742## Global LSP Settings
1743
1744- Description: Configuration for global LSP settings that apply to all language servers
1745- Setting: `global_lsp_settings`
1746- Default:
1747
1748```json [settings]
1749{
1750 "global_lsp_settings": {
1751 "button": true,
1752 "request_timeout": 120,
1753 "notifications": {
1754 // Timeout in milliseconds for automatically dismissing language server notifications.
1755 // Set to 0 to disable auto-dismiss.
1756 "dismiss_timeout_ms": 5000
1757 }
1758 }
1759}
1760```
1761
1762**Options**
1763
1764- `button`: Whether to show the LSP status button in the status bar
1765- `request_timeout`: The maximum amount of time to wait for responses from language servers, in seconds. A value of `0` will result in no timeout being applied (causing all LSP responses to wait indefinitely until completed). Default: `120`
1766- `notifications`: Notification-related settings.
1767 - `dismiss_timeout_ms`: Timeout in milliseconds for automatically dismissing language server notifications. Set to 0 to disable auto-dismiss.
1768
1769## LSP Highlight Debounce
1770
1771- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1772- Setting: `lsp_highlight_debounce`
1773- Default: `75`
1774
1775**Options**
1776
1777`integer` values representing milliseconds
1778
1779## Features
1780
1781- Description: Features that can be globally enabled or disabled
1782- Setting: `features`
1783- Default:
1784
1785```json [settings]
1786{
1787 "edit_predictions": {
1788 "provider": "zed"
1789 }
1790}
1791```
1792
1793### Edit Prediction Provider
1794
1795- Description: Which edit prediction provider to use
1796- Setting: `edit_prediction_provider`
1797- Default: `"zed"`
1798
1799**Options**
1800
18011. Use Zeta as the edit prediction provider:
1802
1803```json [settings]
1804{
1805 "edit_predictions": {
1806 "provider": "zed"
1807 }
1808}
1809```
1810
18112. Use Copilot as the edit prediction provider:
1812
1813```json [settings]
1814{
1815 "edit_predictions": {
1816 "provider": "copilot"
1817 }
1818}
1819```
1820
18213. Turn off edit predictions across all providers
1822
1823```json [settings]
1824{
1825 "edit_predictions": {
1826 "provider": "none"
1827 }
1828}
1829```
1830
1831## Format On Save
1832
1833- Description: Whether or not to perform a buffer format before saving.
1834- Setting: `format_on_save`
1835- Default: `on`
1836
1837**Options**
1838
18391. `on`, enables format on save obeying `formatter` setting:
1840
1841```json [settings]
1842{
1843 "format_on_save": "on"
1844}
1845```
1846
18472. `off`, disables format on save:
1848
1849```json [settings]
1850{
1851 "format_on_save": "off"
1852}
1853```
1854
1855## Formatter
1856
1857- Description: How to perform a buffer format.
1858- Setting: `formatter`
1859- Default: `auto`
1860
1861**Options**
1862
18631. To use the current language server, use `"language_server"`:
1864
1865```json [settings]
1866{
1867 "formatter": "language_server"
1868}
1869```
1870
18712. 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):
1872
1873```json [settings]
1874{
1875 "formatter": {
1876 "external": {
1877 "command": "sed",
1878 "arguments": ["-e", "s/ *$//"]
1879 }
1880 }
1881}
1882```
1883
18843. 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.
1885
1886WARNING: `{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.
1887
1888```json [settings]
1889 "formatter": {
1890 "external": {
1891 "command": "prettier",
1892 "arguments": ["--stdin-filepath", "{buffer_path}"]
1893 }
1894 }
1895```
1896
18974. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1898
1899```json [settings]
1900{
1901 "formatter": [
1902 // Use ESLint's --fix:
1903 { "code_action": "source.fixAll.eslint" },
1904 // Organize imports on save:
1905 { "code_action": "source.organizeImports" }
1906 ]
1907}
1908```
1909
19105. Or to use multiple formatters consecutively, use an array of formatters:
1911
1912```json [settings]
1913{
1914 "formatter": [
1915 { "language_server": { "name": "rust-analyzer" } },
1916 {
1917 "external": {
1918 "command": "sed",
1919 "arguments": ["-e", "s/ *$//"]
1920 }
1921 }
1922 ]
1923}
1924```
1925
1926Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1927If any of the formatters fails, the subsequent ones will still be executed.
1928
19296. To disable the formatter, use `"none"`. This setting disables the configured formatter, but any actions in `code_actions_on_format` will still be executed:
1930
1931```json [settings]
1932{
1933 "formatter": "none"
1934}
1935```
1936
1937## Auto close
1938
1939- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1940- Setting: `use_autoclose`
1941- Default: `true`
1942
1943**Options**
1944
1945`boolean` values
1946
1947## Always Treat Brackets As Autoclosed
1948
1949- Description: Controls how the editor handles the autoclosed characters.
1950- Setting: `always_treat_brackets_as_autoclosed`
1951- Default: `false`
1952
1953**Options**
1954
1955`boolean` values
1956
1957**Example**
1958
1959If the setting is set to `true`:
1960
19611. Enter in the editor: `)))`
19622. Move the cursor to the start: `^)))`
19633. Enter again: `)))`
1964
1965The result is still `)))` and not `))))))`, which is what it would be by default.
1966
1967## File Scan Exclusions
1968
1969- Setting: `file_scan_exclusions`
1970- 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`.
1971- Default:
1972
1973```json [settings]
1974{
1975 "file_scan_exclusions": [
1976 "**/.git",
1977 "**/.svn",
1978 "**/.hg",
1979 "**/.jj",
1980 "**/CVS",
1981 "**/.DS_Store",
1982 "**/Thumbs.db",
1983 "**/.classpath",
1984 "**/.settings"
1985 ]
1986}
1987```
1988
1989Note, 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.
1990
1991## File Scan Inclusions
1992
1993- Setting: `file_scan_inclusions`
1994- 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.
1995- Default:
1996
1997```json [settings]
1998{
1999 "file_scan_inclusions": [".env*"]
2000}
2001```
2002
2003## File Types
2004
2005- Setting: `file_types`
2006- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
2007- Default:
2008
2009```json [settings]
2010{
2011 "file_types": {
2012 "JSONC": [
2013 "**/.zed/**/*.json",
2014 "**/zed/**/*.json",
2015 "**/Zed/**/*.json",
2016 "**/.vscode/**/*.json"
2017 ],
2018 "Shell Script": [".env.*"]
2019 }
2020}
2021```
2022
2023**Examples**
2024
2025To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
2026
2027```json [settings]
2028{
2029 "file_types": {
2030 "C++": ["c"],
2031 "TOML": ["MyLockFile"],
2032 "Dockerfile": ["Dockerfile*"]
2033 }
2034}
2035```
2036
2037## Diagnostics
2038
2039- Description: Configuration for diagnostics-related features.
2040- Setting: `diagnostics`
2041- Default:
2042
2043```json [settings]
2044{
2045 "diagnostics": {
2046 "include_warnings": true,
2047 "inline": {
2048 "enabled": false
2049 }
2050 }
2051}
2052```
2053
2054### Inline Diagnostics
2055
2056- Description: Whether or not to show diagnostics information inline.
2057- Setting: `inline`
2058- Default:
2059
2060```json [settings]
2061{
2062 "diagnostics": {
2063 "inline": {
2064 "enabled": false,
2065 "update_debounce_ms": 150,
2066 "padding": 4,
2067 "min_column": 0,
2068 "max_severity": null
2069 }
2070 }
2071}
2072```
2073
2074**Options**
2075
20761. Enable inline diagnostics.
2077
2078```json [settings]
2079{
2080 "diagnostics": {
2081 "inline": {
2082 "enabled": true
2083 }
2084 }
2085}
2086```
2087
20882. Delay diagnostic updates until some time after the last diagnostic update.
2089
2090```json [settings]
2091{
2092 "diagnostics": {
2093 "inline": {
2094 "enabled": true,
2095 "update_debounce_ms": 150
2096 }
2097 }
2098}
2099```
2100
21013. Set padding between the end of the source line and the start of the diagnostic.
2102
2103```json [settings]
2104{
2105 "diagnostics": {
2106 "inline": {
2107 "enabled": true,
2108 "padding": 4
2109 }
2110 }
2111}
2112```
2113
21144. Horizontally align inline diagnostics at the given column.
2115
2116```json [settings]
2117{
2118 "diagnostics": {
2119 "inline": {
2120 "enabled": true,
2121 "min_column": 80
2122 }
2123 }
2124}
2125```
2126
21275. Show only warning and error diagnostics.
2128
2129```json [settings]
2130{
2131 "diagnostics": {
2132 "inline": {
2133 "enabled": true,
2134 "max_severity": "warning"
2135 }
2136 }
2137}
2138```
2139
2140## Git
2141
2142- Description: Configuration for git-related features.
2143- Setting: `git`
2144- Default:
2145
2146```json [settings]
2147{
2148 "git": {
2149 "git_gutter": "tracked_files",
2150 "inline_blame": {
2151 "enabled": true
2152 },
2153 "branch_picker": {
2154 "show_author_name": true
2155 },
2156 "hunk_style": "staged_hollow"
2157 }
2158}
2159```
2160
2161### Git Gutter
2162
2163- Description: Whether or not to show the git gutter.
2164- Setting: `git_gutter`
2165- Default: `tracked_files`
2166
2167**Options**
2168
21691. Show git gutter in tracked files
2170
2171```json [settings]
2172{
2173 "git": {
2174 "git_gutter": "tracked_files"
2175 }
2176}
2177```
2178
21792. Hide git gutter
2180
2181```json [settings]
2182{
2183 "git": {
2184 "git_gutter": "hide"
2185 }
2186}
2187```
2188
2189### Gutter Debounce
2190
2191- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
2192- Setting: `gutter_debounce`
2193- Default: `null`
2194
2195**Options**
2196
2197`integer` values representing milliseconds
2198
2199Example:
2200
2201```json [settings]
2202{
2203 "git": {
2204 "gutter_debounce": 100
2205 }
2206}
2207```
2208
2209### Inline Git Blame
2210
2211- Description: Whether or not to show git blame information inline, on the currently focused line.
2212- Setting: `inline_blame`
2213- Default:
2214
2215```json [settings]
2216{
2217 "git": {
2218 "inline_blame": {
2219 "enabled": true
2220 }
2221 }
2222}
2223```
2224
2225**Options**
2226
22271. Disable inline git blame:
2228
2229```json [settings]
2230{
2231 "git": {
2232 "inline_blame": {
2233 "enabled": false
2234 }
2235 }
2236}
2237```
2238
22392. Only show inline git blame after a delay (that starts after cursor stops moving):
2240
2241```json [settings]
2242{
2243 "git": {
2244 "inline_blame": {
2245 "delay_ms": 500
2246 }
2247 }
2248}
2249```
2250
22513. Show a commit summary next to the commit date and author:
2252
2253```json [settings]
2254{
2255 "git": {
2256 "inline_blame": {
2257 "show_commit_summary": true
2258 }
2259 }
2260}
2261```
2262
22634. Use this as the minimum column at which to display inline blame information:
2264
2265```json [settings]
2266{
2267 "git": {
2268 "inline_blame": {
2269 "min_column": 80
2270 }
2271 }
2272}
2273```
2274
22755. Set the padding between the end of the line and the inline blame hint, in ems:
2276
2277```json [settings]
2278{
2279 "git": {
2280 "inline_blame": {
2281 "padding": 10
2282 }
2283 }
2284}
2285```
2286
2287### Branch Picker
2288
2289- Description: Configuration related to the branch picker.
2290- Setting: `branch_picker`
2291- Default:
2292
2293```json [settings]
2294{
2295 "git": {
2296 "branch_picker": {
2297 "show_author_name": false
2298 }
2299 }
2300}
2301```
2302
2303**Options**
2304
23051. Show the author name in the branch picker:
2306
2307```json [settings]
2308{
2309 "git": {
2310 "branch_picker": {
2311 "show_author_name": true
2312 }
2313 }
2314}
2315```
2316
2317### Hunk Style
2318
2319- Description: What styling we should use for the diff hunks.
2320- Setting: `hunk_style`
2321- Default:
2322
2323```json [settings]
2324{
2325 "git": {
2326 "hunk_style": "staged_hollow"
2327 }
2328}
2329```
2330
2331**Options**
2332
23331. Show the staged hunks faded out and with a border:
2334
2335```json [settings]
2336{
2337 "git": {
2338 "hunk_style": "staged_hollow"
2339 }
2340}
2341```
2342
23432. Show unstaged hunks faded out and with a border:
2344
2345```json [settings]
2346{
2347 "git": {
2348 "hunk_style": "unstaged_hollow"
2349 }
2350}
2351```
2352
2353## Go to Definition Fallback
2354
2355- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2356- Setting: `go_to_definition_fallback`
2357- Default: `"find_all_references"`
2358
2359**Options**
2360
23611. Do nothing:
2362
2363```json [settings]
2364{
2365 "go_to_definition_fallback": "none"
2366}
2367```
2368
23692. Find references for the same symbol (default):
2370
2371```json [settings]
2372{
2373 "go_to_definition_fallback": "find_all_references"
2374}
2375```
2376
2377## Hard Tabs
2378
2379- Description: Whether to indent lines using tab characters or multiple spaces.
2380- Setting: `hard_tabs`
2381- Default: `false`
2382
2383**Options**
2384
2385`boolean` values
2386
2387## Helix Mode
2388
2389- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](../helix.md) for more details.
2390- Setting: `helix_mode`
2391- Default: `false`
2392
2393**Options**
2394
2395`boolean` values
2396
2397## Indent Guides
2398
2399- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2400- Setting: `indent_guides`
2401- Default:
2402
2403```json [settings]
2404{
2405 "indent_guides": {
2406 "enabled": true,
2407 "line_width": 1,
2408 "active_line_width": 1,
2409 "coloring": "fixed",
2410 "background_coloring": "disabled"
2411 }
2412}
2413```
2414
2415**Options**
2416
24171. Disable indent guides
2418
2419```json [settings]
2420{
2421 "indent_guides": {
2422 "enabled": false
2423 }
2424}
2425```
2426
24272. Enable indent guides for a specific language.
2428
2429```json [settings]
2430{
2431 "languages": {
2432 "Python": {
2433 "indent_guides": {
2434 "enabled": true
2435 }
2436 }
2437 }
2438}
2439```
2440
24413. Enable indent aware coloring ("rainbow indentation").
2442 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.
2443
2444```json [settings]
2445{
2446 "indent_guides": {
2447 "enabled": true,
2448 "coloring": "indent_aware"
2449 }
2450}
2451```
2452
24534. Enable indent aware background coloring ("rainbow indentation").
2454 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.
2455
2456```json [settings]
2457{
2458 "indent_guides": {
2459 "enabled": true,
2460 "coloring": "indent_aware",
2461 "background_coloring": "indent_aware"
2462 }
2463}
2464```
2465
2466## Hover Popover Enabled
2467
2468- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2469- Setting: `hover_popover_enabled`
2470- Default: `true`
2471
2472**Options**
2473
2474`boolean` values
2475
2476## Hover Popover Delay
2477
2478- Description: Time to wait in milliseconds before showing the informational hover box. This delay also applies to auto signature help when `auto_signature_help` is enabled.
2479- Setting: `hover_popover_delay`
2480- Default: `300`
2481
2482**Options**
2483
2484`integer` values representing milliseconds
2485
2486## Hover Popover Sticky
2487
2488- Description: Whether the hover popover sticks when the mouse moves toward it, allowing interaction with its contents before it disappears.
2489- Setting: `hover_popover_sticky`
2490- Default: `true`
2491
2492**Options**
2493
2494`boolean` values
2495
2496## Hover Popover Hiding Delay
2497
2498- Description: Time to wait in milliseconds before hiding the hover popover after the mouse moves away from the hover target. Only applies when `hover_popover_sticky` is enabled.
2499- Setting: `hover_popover_hiding_delay`
2500- Default: `300`
2501
2502**Options**
2503
2504`integer` values representing milliseconds
2505
2506## Icon Theme
2507
2508- 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.
2509- Setting: `icon_theme`
2510- Default: `Zed (Default)`
2511
2512### Icon Theme Object
2513
2514- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2515- Setting: `icon_theme`
2516- Default:
2517
2518```json [settings]
2519{
2520 "icon_theme": {
2521 "mode": "system",
2522 "dark": "Zed (Default)",
2523 "light": "Zed (Default)"
2524 }
2525}
2526```
2527
2528### Mode
2529
2530- Description: Specify the icon theme mode.
2531- Setting: `mode`
2532- Default: `system`
2533
2534**Options**
2535
25361. Set the icon theme to dark mode
2537
2538```json [settings]
2539{
2540 "icon_theme": {
2541 "mode": "dark",
2542 "dark": "Zed (Default)",
2543 "light": "Zed (Default)"
2544 }
2545}
2546```
2547
25482. Set the icon theme to light mode
2549
2550```json [settings]
2551{
2552 "icon_theme": {
2553 "mode": "light",
2554 "dark": "Zed (Default)",
2555 "light": "Zed (Default)"
2556 }
2557}
2558```
2559
25603. Set the icon theme to system mode
2561
2562```json [settings]
2563{
2564 "icon_theme": {
2565 "mode": "system",
2566 "dark": "Zed (Default)",
2567 "light": "Zed (Default)"
2568 }
2569}
2570```
2571
2572### Dark
2573
2574- Description: The name of the dark icon theme.
2575- Setting: `dark`
2576- Default: `Zed (Default)`
2577
2578**Options**
2579
2580Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2581
2582### Light
2583
2584- Description: The name of the light icon theme.
2585- Setting: `light`
2586- Default: `Zed (Default)`
2587
2588**Options**
2589
2590Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2591
2592## Image Viewer
2593
2594- Description: Settings for image viewer functionality
2595- Setting: `image_viewer`
2596- Default:
2597
2598```json [settings]
2599{
2600 "image_viewer": {
2601 "unit": "binary"
2602 }
2603}
2604```
2605
2606**Options**
2607
2608### Unit
2609
2610- Description: The unit for image file sizes
2611- Setting: `unit`
2612- Default: `"binary"`
2613
2614**Options**
2615
26161. Use binary units (KiB, MiB):
2617
2618```json [settings]
2619{
2620 "image_viewer": {
2621 "unit": "binary"
2622 }
2623}
2624```
2625
26262. Use decimal units (KB, MB):
2627
2628```json [settings]
2629{
2630 "image_viewer": {
2631 "unit": "decimal"
2632 }
2633}
2634```
2635
2636## Inlay hints
2637
2638- Description: Configuration for displaying extra text with hints in the editor.
2639- Setting: `inlay_hints`
2640- Default:
2641
2642```json [settings]
2643{
2644 "inlay_hints": {
2645 "enabled": false,
2646 "show_type_hints": true,
2647 "show_parameter_hints": true,
2648 "show_other_hints": true,
2649 "show_background": false,
2650 "edit_debounce_ms": 700,
2651 "scroll_debounce_ms": 50,
2652 "toggle_on_modifiers_press": null
2653 }
2654}
2655```
2656
2657**Options**
2658
2659Inlay hints querying consists of two parts: editor (client) and LSP server.
2660With 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.
2661At 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.
2662
2663The following languages have inlay hints preconfigured by Zed:
2664
2665- [Go](https://docs.zed.dev/languages/go)
2666- [Rust](https://docs.zed.dev/languages/rust)
2667- [Svelte](https://docs.zed.dev/languages/svelte)
2668- [TypeScript](https://docs.zed.dev/languages/typescript)
2669
2670Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2671
2672Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2673Settings-related hint updates are not debounced.
2674
2675All possible config values for `toggle_on_modifiers_press` are:
2676
2677```json [settings]
2678{
2679 "inlay_hints": {
2680 "toggle_on_modifiers_press": {
2681 "control": true,
2682 "shift": true,
2683 "alt": true,
2684 "platform": true,
2685 "function": true
2686 }
2687 }
2688}
2689```
2690
2691Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2692
2693## Journal
2694
2695- Description: Configuration for the journal.
2696- Setting: `journal`
2697- Default:
2698
2699```json [settings]
2700{
2701 "journal": {
2702 "path": "~",
2703 "hour_format": "hour12"
2704 }
2705}
2706```
2707
2708### Path
2709
2710- Description: The path of the directory where journal entries are stored. If an invalid path is specified, the journal will fall back to using `~` (the home directory).
2711- Setting: `path`
2712- Default: `~`
2713
2714**Options**
2715
2716`string` values
2717
2718### Hour Format
2719
2720- Description: The format to use for displaying hours in the journal.
2721- Setting: `hour_format`
2722- Default: `hour12`
2723
2724**Options**
2725
27261. 12-hour format:
2727
2728```json [settings]
2729{
2730 "journal": {
2731 "hour_format": "hour12"
2732 }
2733}
2734```
2735
27362. 24-hour format:
2737
2738```json [settings]
2739{
2740 "journal": {
2741 "hour_format": "hour24"
2742 }
2743}
2744```
2745
2746## JSX Tag Auto Close
2747
2748- Description: Whether to automatically close JSX tags
2749- Setting: `jsx_tag_auto_close`
2750- Default:
2751
2752```json [settings]
2753{
2754 "jsx_tag_auto_close": {
2755 "enabled": true
2756 }
2757}
2758```
2759
2760**Options**
2761
2762- `enabled`: Whether to enable automatic JSX tag closing
2763
2764## Languages
2765
2766- Description: Configuration for specific languages.
2767- Setting: `languages`
2768- Default: `null`
2769
2770**Options**
2771
2772To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2773
2774```json [settings]
2775{
2776 "languages": {
2777 "C": {
2778 "format_on_save": "off",
2779 "preferred_line_length": 64,
2780 "soft_wrap": "bounded"
2781 },
2782 "JSON": {
2783 "tab_size": 4
2784 }
2785 }
2786}
2787```
2788
2789The following settings can be overridden for each specific language:
2790
2791- [`enable_language_server`](#enable-language-server)
2792- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2793- [`format_on_save`](#format-on-save)
2794- [`formatter`](#formatter)
2795- [`hard_tabs`](#hard-tabs)
2796- [`preferred_line_length`](#preferred-line-length)
2797- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2798- [`semantic_tokens`](#semantic-tokens)
2799- [`show_edit_predictions`](#show-edit-predictions)
2800- [`show_whitespaces`](#show-whitespaces)
2801- [`whitespace_map`](#whitespace-map)
2802- [`soft_wrap`](#soft-wrap)
2803- [`tab_size`](#tab-size)
2804- [`use_autoclose`](#use-autoclose)
2805- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2806
2807These values take in the same options as the root-level settings with the same name.
2808
2809### Document Symbols
2810
2811- Description: Controls the source of document symbols used for outlines and breadcrumbs.
2812- Setting: `document_symbols`
2813- Default: `off`
2814
2815**Options**
2816
2817- `"off"`: Use tree-sitter queries to compute document symbols (default)
2818- `"on"`: Use the language server's `textDocument/documentSymbol` LSP response. When enabled, tree-sitter is not used for document symbols
2819
2820LSP document symbols can provide more accurate symbols for complex language features (e.g., generic types, macros, decorators) that tree-sitter may not handle well. Use this when your language server provides better symbol information than the tree-sitter grammar.
2821
2822Example:
2823
2824```json [settings]
2825{
2826 "languages": {
2827 "TypeScript": {
2828 "document_symbols": "on"
2829 }
2830 }
2831}
2832```
2833
2834## Language Models
2835
2836- Description: Configuration for language model providers
2837- Setting: `language_models`
2838- Default:
2839
2840```json [settings]
2841{
2842 "language_models": {
2843 "anthropic": {
2844 "api_url": "https://api.anthropic.com"
2845 },
2846 "google": {
2847 "api_url": "https://generativelanguage.googleapis.com"
2848 },
2849 "ollama": {
2850 "api_url": "http://localhost:11434"
2851 },
2852 "openai": {
2853 "api_url": "https://api.openai.com/v1"
2854 }
2855 }
2856}
2857```
2858
2859**Options**
2860
2861Configuration for various AI model providers including API URLs and authentication settings.
2862
2863## Line Indicator Format
2864
2865- Description: Format for line indicator in the status bar
2866- Setting: `line_indicator_format`
2867- Default: `"short"`
2868
2869**Options**
2870
28711. Short format:
2872
2873```json [settings]
2874{
2875 "line_indicator_format": "short"
2876}
2877```
2878
28792. Long format:
2880
2881```json [settings]
2882{
2883 "line_indicator_format": "long"
2884}
2885```
2886
2887## Linked Edits
2888
2889- 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.
2890- Setting: `linked_edits`
2891- Default: `true`
2892
2893**Options**
2894
2895`boolean` values
2896
2897## LSP Document Colors
2898
2899- Description: How to render LSP `textDocument/documentColor` colors in the editor
2900- Setting: `lsp_document_colors`
2901- Default: `inlay`
2902
2903**Options**
2904
29051. `inlay`: Render document colors as inlay hints near the color text.
29062. `background`: Draw a background behind the color text.
29073. `border`: Draw a border around the color text.
29084. `none`: Do not query and render document colors.
2909
2910## Max Tabs
2911
2912- Description: Maximum number of tabs to show in the tab bar
2913- Setting: `max_tabs`
2914- Default: `null`
2915
2916**Options**
2917
2918Positive `integer` values or `null` for unlimited tabs
2919
2920## Middle Click Paste (Linux only)
2921
2922- Description: Enable middle-click paste on Linux
2923- Setting: `middle_click_paste`
2924- Default: `true`
2925
2926**Options**
2927
2928`boolean` values
2929
2930## Multi Cursor Modifier
2931
2932- 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.
2933- Setting: `multi_cursor_modifier`
2934- Default: `alt`
2935
2936**Options**
2937
29381. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2939
2940```json [settings]
2941{
2942 "multi_cursor_modifier": "alt"
2943}
2944```
2945
29462. Maps `Control` on Linux and Windows and to `Command` on macOS:
2947
2948```json [settings]
2949{
2950 "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2951}
2952```
2953
2954## Node
2955
2956- Description: Configuration for Node.js integration
2957- Setting: `node`
2958- Default:
2959
2960```json [settings]
2961{
2962 "node": {
2963 "ignore_system_version": false,
2964 "path": null,
2965 "npm_path": null
2966 }
2967}
2968```
2969
2970**Options**
2971
2972- `ignore_system_version`: Whether to ignore the system Node.js version
2973- `path`: Custom path to Node.js binary
2974- `npm_path`: Custom path to npm binary
2975
2976## Network Proxy
2977
2978- Description: Configure a network proxy for Zed.
2979- Setting: `proxy`
2980- Default: `null`
2981
2982**Options**
2983
2984The proxy setting must contain a URL to the proxy.
2985
2986The following URI schemes are supported:
2987
2988- `http`
2989- `https`
2990- `socks4` - SOCKS4 proxy with local DNS
2991- `socks4a` - SOCKS4 proxy with remote DNS
2992- `socks5` - SOCKS5 proxy with local DNS
2993- `socks5h` - SOCKS5 proxy with remote DNS
2994
2995`http` will be used when no scheme is specified.
2996
2997By 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`.
2998
2999For example, to set an `http` proxy, add the following to your settings:
3000
3001```json [settings]
3002{
3003 "proxy": "http://127.0.0.1:10809"
3004}
3005```
3006
3007Or to set a `socks5` proxy:
3008
3009```json [settings]
3010{
3011 "proxy": "socks5h://localhost:10808"
3012}
3013```
3014
3015If 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.
3016
3017## On Last Window Closed
3018
3019- Description: What to do when the last window is closed
3020- Setting: `on_last_window_closed`
3021- Default: `"platform_default"`
3022
3023**Options**
3024
30251. Use platform default behavior:
3026
3027```json [settings]
3028{
3029 "on_last_window_closed": "platform_default"
3030}
3031```
3032
30332. Always quit the application:
3034
3035```json [settings]
3036{
3037 "on_last_window_closed": "quit_app"
3038}
3039```
3040
3041## Profiles
3042
3043- Description: Configuration profiles that can be temporarily applied on top of existing settings or Zed's defaults.
3044- Setting: `profiles`
3045- Default: `{}`
3046
3047**Options**
3048
3049Each profile is an object with the following optional fields:
3050
3051- `base`: What settings to start from before applying the profile's overrides.
3052 - `"user"` (default): Apply on top of your current user settings.
3053 - `"default"`: Apply on top of Zed's default settings, ignoring user customizations.
3054- `settings`: The settings overrides for this profile.
3055
3056Examples:
3057
3058```json [settings]
3059{
3060 "profiles": {
3061 "Presentation": {
3062 "settings": {
3063 "buffer_font_size": 20,
3064 "ui_font_size": 18,
3065 "theme": "One Light"
3066 }
3067 },
3068 "Clean Slate": {
3069 "base": "default",
3070 "settings": {
3071 "theme": "Ayu Dark"
3072 }
3073 }
3074 }
3075}
3076```
3077
3078## Preview tabs
3079
3080- Description:
3081 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. \
3082 There are several ways to convert a preview tab into a regular tab:
3083
3084 - Double-clicking on the file
3085 - Double-clicking on the tab header
3086 - Using the {#action project_panel::OpenPermanent} action
3087 - Editing the file
3088 - Dragging the file to a different pane
3089
3090- Setting: `preview_tabs`
3091- Default:
3092
3093```json [settings]
3094{
3095 "preview_tabs": {
3096 "enabled": true,
3097 "enable_preview_from_project_panel": true,
3098 "enable_preview_from_file_finder": false,
3099 "enable_preview_from_multibuffer": true,
3100 "enable_preview_multibuffer_from_code_navigation": false,
3101 "enable_preview_file_from_code_navigation": true,
3102 "enable_keep_preview_on_code_navigation": false
3103 }
3104}
3105```
3106
3107### Enable preview from project panel
3108
3109- Description: Determines whether to open files in preview mode when opened from the project panel with a single click.
3110- Setting: `enable_preview_from_project_panel`
3111- Default: `true`
3112
3113**Options**
3114
3115`boolean` values
3116
3117### Enable preview from file finder
3118
3119- Description: Determines whether to open files in preview mode when selected from the file finder.
3120- Setting: `enable_preview_from_file_finder`
3121- Default: `false`
3122
3123**Options**
3124
3125`boolean` values
3126
3127### Enable preview from multibuffer
3128
3129- Description: Determines whether to open files in preview mode when opened from a multibuffer.
3130- Setting: `enable_preview_from_multibuffer`
3131- Default: `true`
3132
3133**Options**
3134
3135`boolean` values
3136
3137### Enable preview multibuffer from code navigation
3138
3139- Description: Determines whether to open tabs in preview mode when code navigation is used to open a multibuffer.
3140- Setting: `enable_preview_multibuffer_from_code_navigation`
3141- Default: `false`
3142
3143**Options**
3144
3145`boolean` values
3146
3147### Enable preview file from code navigation
3148
3149- Description: Determines whether to open tabs in preview mode when code navigation is used to open a single file.
3150- Setting: `enable_preview_file_from_code_navigation`
3151- Default: `true`
3152
3153**Options**
3154
3155`boolean` values
3156
3157### Enable keep preview on code navigation
3158
3159- Description: Determines whether to keep tabs in preview mode when code navigation is used to navigate away from them. If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.
3160- Setting: `enable_keep_preview_on_code_navigation`
3161- Default: `false`
3162
3163**Options**
3164
3165`boolean` values
3166
3167## File Finder
3168
3169### File Icons
3170
3171- Description: Whether to show file icons in the file finder.
3172- Setting: `file_icons`
3173- Default: `true`
3174
3175### Modal Max Width
3176
3177- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
3178- Setting: `modal_max_width`
3179- Default: `small`
3180
3181### Skip Focus For Active In Search
3182
3183- Description: Determines whether the file finder should skip focus for the active file in search results.
3184- Setting: `skip_focus_for_active_in_search`
3185- Default: `true`
3186
3187## Pane Split Direction Horizontal
3188
3189- Description: The direction that you want to split panes horizontally
3190- Setting: `pane_split_direction_horizontal`
3191- Default: `"up"`
3192
3193**Options**
3194
31951. Split upward:
3196
3197```json [settings]
3198{
3199 "pane_split_direction_horizontal": "up"
3200}
3201```
3202
32032. Split downward:
3204
3205```json [settings]
3206{
3207 "pane_split_direction_horizontal": "down"
3208}
3209```
3210
3211## Pane Split Direction Vertical
3212
3213- Description: The direction that you want to split panes vertically
3214- Setting: `pane_split_direction_vertical`
3215- Default: `"left"`
3216
3217**Options**
3218
32191. Split to the left:
3220
3221```json [settings]
3222{
3223 "pane_split_direction_vertical": "left"
3224}
3225```
3226
32272. Split to the right:
3228
3229```json [settings]
3230{
3231 "pane_split_direction_vertical": "right"
3232}
3233```
3234
3235## Preferred Line Length
3236
3237- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
3238- Setting: `preferred_line_length`
3239- Default: `80`
3240
3241**Options**
3242
3243`integer` values
3244
3245## Private Files
3246
3247- Description: Globs to match against file paths to determine if a file is private
3248- Setting: `private_files`
3249- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
3250
3251**Options**
3252
3253List of `string` glob patterns
3254
3255## Projects Online By Default
3256
3257- Description: Whether or not to show the online projects view by default.
3258- Setting: `projects_online_by_default`
3259- Default: `true`
3260
3261**Options**
3262
3263`boolean` values
3264
3265## Read SSH Config
3266
3267- Description: Whether to read SSH configuration files
3268- Setting: `read_ssh_config`
3269- Default: `true`
3270
3271**Options**
3272
3273`boolean` values
3274
3275## Redact Private Values
3276
3277- Description: Hide the values of variables from visual display in private files
3278- Setting: `redact_private_values`
3279- Default: `false`
3280
3281**Options**
3282
3283`boolean` values
3284
3285## Relative Line Numbers
3286
3287- Description: Whether to show relative line numbers in the gutter
3288- Setting: `relative_line_numbers`
3289- Default: `"disabled"`
3290
3291**Options**
3292
32931. Show relative line numbers in the gutter whilst counting wrapped lines as one line:
3294
3295```json [settings]
3296{
3297 "relative_line_numbers": "enabled"
3298}
3299```
3300
33012. Show relative line numbers in the gutter, including wrapped lines in the counting:
3302
3303```json [settings]
3304{
3305 "relative_line_numbers": "wrapped"
3306}
3307```
3308
33092. Do not use relative line numbers:
3310
3311```json [settings]
3312{
3313 "relative_line_numbers": "disabled"
3314}
3315```
3316
3317## Remove Trailing Whitespace On Save
3318
3319- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
3320- Setting: `remove_trailing_whitespace_on_save`
3321- Default: `true`
3322
3323**Options**
3324
3325`boolean` values
3326
3327## Resize All Panels In Dock
3328
3329- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
3330- Setting: `resize_all_panels_in_dock`
3331- Default: `["left"]`
3332
3333**Options**
3334
3335List of strings containing any combination of:
3336
3337- `"left"`: Resize left dock panels together
3338- `"right"`: Resize right dock panels together
3339- `"bottom"`: Resize bottom dock panels together
3340
3341## Restore on File Reopen
3342
3343- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
3344- Setting: `restore_on_file_reopen`
3345- Default: `true`
3346
3347**Options**
3348
3349`boolean` values
3350
3351## Restore on Startup
3352
3353- Description: Controls session restoration on startup.
3354- Setting: `restore_on_startup`
3355- Default: `last_session`
3356
3357**Options**
3358
33591. Restore all workspaces that were open when quitting Zed:
3360
3361```json [settings]
3362{
3363 "restore_on_startup": "last_session"
3364}
3365```
3366
33672. Restore the workspace that was closed last:
3368
3369```json [settings]
3370{
3371 "restore_on_startup": "last_workspace"
3372}
3373```
3374
33753. Always start with an empty editor:
3376
3377```json [settings]
3378{
3379 "restore_on_startup": "empty_tab"
3380}
3381```
3382
33834. Always start with the welcome launchpad:
3384
3385```json [settings]
3386{
3387 "restore_on_startup": "launchpad"
3388}
3389```
3390
3391## Scroll Beyond Last Line
3392
3393- Description: Whether the editor will scroll beyond the last line
3394- Setting: `scroll_beyond_last_line`
3395- Default: `"one_page"`
3396
3397**Options**
3398
33991. Scroll one page beyond the last line by one page:
3400
3401```json [settings]
3402{
3403 "scroll_beyond_last_line": "one_page"
3404}
3405```
3406
34072. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3408
3409```json [settings]
3410{
3411 "scroll_beyond_last_line": "vertical_scroll_margin"
3412}
3413```
3414
34153. The editor will not scroll beyond the last line:
3416
3417```json [settings]
3418{
3419 "scroll_beyond_last_line": "off"
3420}
3421```
3422
3423**Options**
3424
3425`boolean` values
3426
3427## Scroll Sensitivity
3428
3429- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3430- Setting: `scroll_sensitivity`
3431- Default: `1.0`
3432
3433**Options**
3434
3435Positive `float` values
3436
3437### Mouse Wheel Zoom
3438
3439- Description: Whether to zoom the editor font size with the mouse wheel while holding the primary modifier key (Cmd on macOS, Ctrl on other platforms).
3440- Setting: `mouse_wheel_zoom`
3441- Default: `false`
3442
3443**Options**
3444
3445`boolean` values
3446
3447### Fast Scroll Sensitivity
3448
3449- 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.
3450- Setting: `fast_scroll_sensitivity`
3451- Default: `4.0`
3452
3453**Options**
3454
3455Positive `float` values
3456
3457### Horizontal Scroll Margin
3458
3459- Description: The number of characters to keep on either side when scrolling with the mouse
3460- Setting: `horizontal_scroll_margin`
3461- Default: `5`
3462
3463**Options**
3464
3465Non-negative `integer` values
3466
3467### Vertical Scroll Margin
3468
3469- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3470- Setting: `vertical_scroll_margin`
3471- Default: `3`
3472
3473**Options**
3474
3475Non-negative `integer` values
3476
3477## Search
3478
3479- Description: Search options to enable by default when opening new project and buffer searches.
3480- Setting: `search`
3481- Default:
3482
3483```json [settings]
3484{
3485 "search": {
3486 "button": true,
3487 "whole_word": false,
3488 "case_sensitive": false,
3489 "include_ignored": false,
3490 "regex": false,
3491 "center_on_match": false
3492 }
3493}
3494```
3495
3496### Button
3497
3498- Description: Whether to show the project search button in the status bar.
3499- Setting: `button`
3500- Default: `true`
3501
3502### Whole Word
3503
3504- Description: Whether to only match on whole words.
3505- Setting: `whole_word`
3506- Default: `false`
3507
3508### Case Sensitive
3509
3510- Description: Whether to match case sensitively. This setting affects both
3511 searches and editor actions like "Select Next Occurrence", "Select Previous
3512 Occurrence", and "Select All Occurrences".
3513- Setting: `case_sensitive`
3514- Default: `false`
3515
3516### Include Ignore
3517
3518- Description: Whether to include gitignored files in search results.
3519- Setting: `include_ignored`
3520- Default: `false`
3521
3522### Regex
3523
3524- Description: Whether to interpret the search query as a regular expression.
3525- Setting: `regex`
3526- Default: `false`
3527
3528### Center On Match
3529
3530- Description: Whether to center the cursor on each search match when navigating.
3531- Setting: `center_on_match`
3532- Default: `false`
3533
3534## Search Wrap
3535
3536- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3537- Setting: `search_wrap`
3538- Default: `true`
3539
3540## Seed Search Query From Cursor
3541
3542- Description: When to populate a new search's query based on the text under the cursor.
3543- Setting: `seed_search_query_from_cursor`
3544- Default: `always`
3545
3546**Options**
3547
35481. `always` always populate the search query with the word under the cursor
35492. `selection` only populate the search query when there is text selected
35503. `never` never populate the search query
3551
3552## Semantic Tokens
3553
3554- Description: Controls how semantic tokens from language servers are used for syntax highlighting.
3555- Setting: `semantic_tokens`
3556- Default: `off`
3557
3558**Options**
3559
35601. `off`: Do not request semantic tokens from language servers.
35612. `combined`: Use LSP semantic tokens together with tree-sitter highlighting.
35623. `full`: Use LSP semantic tokens exclusively, replacing tree-sitter highlighting.
3563
3564To enable semantic tokens globally:
3565
3566```json [settings]
3567{
3568 "semantic_tokens": "combined"
3569}
3570```
3571
3572To enable semantic tokens for a specific language:
3573
3574```json [settings]
3575{
3576 "languages": {
3577 "Rust": {
3578 "semantic_tokens": "full"
3579 }
3580 }
3581}
3582```
3583
3584May require language server restart to properly apply.
3585
3586## LSP Folding Ranges
3587
3588- Description: Controls whether folding ranges from language servers are used instead of tree-sitter and indent-based folding. Tree-sitter and indent-based folding is the default; it is used as a fallback when LSP folding data is not returned or this setting is turned off.
3589- Setting: `document_folding_ranges`
3590- Default: `off`
3591
3592**Options**
3593
35941. `off`: Use tree-sitter and indent-based folding.
35952. `on`: Use LSP folding wherever possible, falling back to tree-sitter and indent-based folding when no results were returned by the server.
3596
3597To enable LSP folding ranges globally:
3598
3599```json [settings]
3600{
3601 "document_folding_ranges": "on"
3602}
3603```
3604
3605To enable LSP folding ranges for a specific language:
3606
3607```json [settings]
3608{
3609 "languages": {
3610 "Rust": {
3611 "document_folding_ranges": "on"
3612 }
3613 }
3614}
3615```
3616
3617## LSP Document Symbols
3618
3619- Description: Controls the source of document symbols used for outlines and breadcrumbs. This is an LSP feature β when enabled, tree-sitter is not used for document symbols, and the language server's `textDocument/documentSymbol` response is used instead.
3620- Setting: `document_symbols`
3621- Default: `off`
3622
3623**Options**
3624
36251. `off`: Use tree-sitter queries to compute document symbols.
36262. `on`: Use the language server's `textDocument/documentSymbol` LSP response. When enabled, tree-sitter is not used for document symbols.
3627
3628To enable LSP document symbols globally:
3629
3630```json [settings]
3631{
3632 "document_symbols": "on"
3633}
3634```
3635
3636To enable LSP document symbols for a specific language:
3637
3638```json [settings]
3639{
3640 "languages": {
3641 "Rust": {
3642 "document_symbols": "on"
3643 }
3644 }
3645}
3646```
3647
3648## Use Smartcase Search
3649
3650- 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. \
3651 This applies to both in-file searches and project-wide searches.
3652- Setting: `use_smartcase_search`
3653- Default: `false`
3654
3655**Options**
3656
3657`boolean` values
3658
3659Examples:
3660
3661- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3662- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3663
3664## Show Call Status Icon
3665
3666- Description: Whether or not to show the call status icon in the status bar.
3667- Setting: `show_call_status_icon`
3668- Default: `true`
3669
3670**Options**
3671
3672`boolean` values
3673
3674## Completions
3675
3676- Description: Controls how completions are processed for this language.
3677- Setting: `completions`
3678- Default:
3679
3680```json [settings]
3681{
3682 "completions": {
3683 "words": "fallback",
3684 "words_min_length": 3,
3685 "lsp": true,
3686 "lsp_fetch_timeout_ms": 0,
3687 "lsp_insert_mode": "replace_suffix"
3688 }
3689}
3690```
3691
3692### Words
3693
3694- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3695- Setting: `words`
3696- Default: `fallback`
3697
3698**Options**
3699
37001. `enabled` - Always fetch document's words for completions along with LSP completions
37012. `fallback` - Only if LSP response errors or times out, use document's words to show completions
37023. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3703
3704### Min Words Query Length
3705
3706- Description: Minimum number of characters required to automatically trigger word-based completions.
3707 Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3708- Setting: `words_min_length`
3709- Default: `3`
3710
3711**Options**
3712
3713Positive integer values
3714
3715### LSP
3716
3717- Description: Whether to fetch LSP completions or not.
3718- Setting: `lsp`
3719- Default: `true`
3720
3721**Options**
3722
3723`boolean` values
3724
3725### LSP Fetch Timeout (ms)
3726
3727- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3728- Setting: `lsp_fetch_timeout_ms`
3729- Default: `0`
3730
3731**Options**
3732
3733`integer` values representing milliseconds
3734
3735### LSP Insert Mode
3736
3737- Description: Controls what range to replace when accepting LSP completions.
3738- Setting: `lsp_insert_mode`
3739- Default: `replace_suffix`
3740
3741**Options**
3742
37431. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
37442. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
37453. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
37464. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3747
3748## Show Completions On Input
3749
3750- Description: Whether or not to show completions as you type.
3751- Setting: `show_completions_on_input`
3752- Default: `true`
3753
3754**Options**
3755
3756`boolean` values
3757
3758## Show Completion Documentation
3759
3760- Description: Whether to display inline and alongside documentation for items in the completions menu.
3761- Setting: `show_completion_documentation`
3762- Default: `true`
3763
3764**Options**
3765
3766`boolean` values
3767
3768## Show Edit Predictions
3769
3770- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3771- Setting: `show_edit_predictions`
3772- Default: `true`
3773
3774**Options**
3775
3776`boolean` values
3777
3778## Show Whitespaces
3779
3780- Description: Whether or not to render whitespace characters in the editor.
3781- Setting: `show_whitespaces`
3782- Default: `selection`
3783
3784**Options**
3785
37861. `all`
37872. `selection`
37883. `none`
37894. `boundary`
3790
3791## Whitespace Map
3792
3793- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
3794- Setting: `whitespace_map`
3795- Default:
3796
3797```json [settings]
3798{
3799 "whitespace_map": {
3800 "space": "β’",
3801 "tab": "β"
3802 }
3803}
3804```
3805
3806## Soft Wrap
3807
3808- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3809- Setting: `soft_wrap`
3810- Default: `none`
3811
3812**Options**
3813
38141. `none` to avoid wrapping generally, unless the line is too long
38152. `prefer_line` (deprecated, same as `none`)
38163. `editor_width` to wrap lines that overflow the editor width
38174. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
38185. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3819
3820## Show Wrap Guides
3821
3822- 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.
3823- Setting: `show_wrap_guides`
3824- Default: `true`
3825
3826**Options**
3827
3828`boolean` values
3829
3830## Use On Type Format
3831
3832- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3833- Setting: `use_on_type_format`
3834- Default: `true`
3835
3836**Options**
3837
3838`boolean` values
3839
3840## Use Auto Surround
3841
3842- 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 ().
3843- Setting: `use_auto_surround`
3844- Default: `true`
3845
3846**Options**
3847
3848`boolean` values
3849
3850## Use System Path Prompts
3851
3852- 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.
3853- Setting: `use_system_path_prompts`
3854- Default: `true`
3855
3856**Options**
3857
3858`boolean` values
3859
3860## Use System Prompts
3861
3862- 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.
3863- Setting: `use_system_prompts`
3864- Default: `true`
3865
3866**Options**
3867
3868`boolean` values
3869
3870## Wrap Guides (Vertical Rulers)
3871
3872- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3873- Setting: `wrap_guides`
3874- Default: []
3875
3876**Options**
3877
3878List of `integer` column numbers
3879
3880## Tab Size
3881
3882- Description: The number of spaces to use for each tab character.
3883- Setting: `tab_size`
3884- Default: `4`
3885
3886**Options**
3887
3888`integer` values
3889
3890## Tasks
3891
3892- Description: Configuration for tasks that can be run within Zed
3893- Setting: `tasks`
3894- Default:
3895
3896```json [settings]
3897{
3898 "tasks": {
3899 "variables": {},
3900 "enabled": true,
3901 "prefer_lsp": false
3902 }
3903}
3904```
3905
3906**Options**
3907
3908- `variables`: Custom variables for task configuration
3909- `enabled`: Whether tasks are enabled
3910- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3911
3912## Telemetry
3913
3914- Description: Control what info is collected by Zed.
3915- Setting: `telemetry`
3916- Default:
3917
3918```json [settings]
3919{
3920 "telemetry": {
3921 "diagnostics": true,
3922 "metrics": true
3923 }
3924}
3925```
3926
3927**Options**
3928
3929### Diagnostics
3930
3931- Description: Setting for sending debug-related data, such as crash reports.
3932- Setting: `diagnostics`
3933- Default: `true`
3934
3935**Options**
3936
3937`boolean` values
3938
3939### Metrics
3940
3941- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3942- Setting: `metrics`
3943- Default: `true`
3944
3945**Options**
3946
3947`boolean` values
3948
3949## Terminal
3950
3951- Description: Configuration for the terminal.
3952- Setting: `terminal`
3953- Default:
3954
3955```json [settings]
3956{
3957 "terminal": {
3958 "alternate_scroll": "off",
3959 "blinking": "terminal_controlled",
3960 "copy_on_select": false,
3961 "keep_selection_on_copy": true,
3962 "dock": "bottom",
3963 "default_width": 640,
3964 "default_height": 320,
3965 "detect_venv": {
3966 "on": {
3967 "directories": [".env", "env", ".venv", "venv"],
3968 "activate_script": "default"
3969 }
3970 },
3971 "env": {},
3972 "font_family": null,
3973 "font_features": null,
3974 "font_size": null,
3975 "line_height": "comfortable",
3976 "minimum_contrast": 45,
3977 "option_as_meta": false,
3978 "button": true,
3979 "shell": "system",
3980 "scroll_multiplier": 3.0,
3981 "toolbar": {
3982 "breadcrumbs": false
3983 },
3984 "working_directory": "current_project_directory",
3985 "scrollbar": {
3986 "show": null
3987 }
3988 }
3989}
3990```
3991
3992### Terminal: Dock
3993
3994- Description: Control the position of the dock
3995- Setting: `dock`
3996- Default: `bottom`
3997
3998**Options**
3999
4000`"bottom"`, `"left"` or `"right"`
4001
4002### Terminal: Alternate Scroll
4003
4004- 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.
4005- Setting: `alternate_scroll`
4006- Default: `off`
4007
4008**Options**
4009
40101. Default alternate scroll mode to off
4011
4012```json [settings]
4013{
4014 "terminal": {
4015 "alternate_scroll": "off"
4016 }
4017}
4018```
4019
40202. Default alternate scroll mode to on
4021
4022```json [settings]
4023{
4024 "terminal": {
4025 "alternate_scroll": "on"
4026 }
4027}
4028```
4029
4030### Terminal: Blinking
4031
4032- Description: Set the cursor blinking behavior in the terminal
4033- Setting: `blinking`
4034- Default: `terminal_controlled`
4035
4036**Options**
4037
40381. Never blink the cursor, ignore the terminal mode
4039
4040```json [settings]
4041{
4042 "terminal": {
4043 "blinking": "off"
4044 }
4045}
4046```
4047
40482. Default the cursor blink to off, but allow the terminal to turn blinking on
4049
4050```json [settings]
4051{
4052 "terminal": {
4053 "blinking": "terminal_controlled"
4054 }
4055}
4056```
4057
40583. Always blink the cursor, ignore the terminal mode
4059
4060```json [settings]
4061{
4062 "terminal": {
4063 "blinking": "on"
4064 }
4065}
4066```
4067
4068### Terminal: Copy On Select
4069
4070- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
4071- Setting: `copy_on_select`
4072- Default: `false`
4073
4074**Options**
4075
4076`boolean` values
4077
4078**Example**
4079
4080```json [settings]
4081{
4082 "terminal": {
4083 "copy_on_select": true
4084 }
4085}
4086```
4087
4088### Terminal: Cursor Shape
4089
4090- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
4091- Setting: `cursor_shape`
4092- Default: `null` (defaults to block)
4093
4094**Options**
4095
40961. A block that surrounds the following character
4097
4098```json [settings]
4099{
4100 "terminal": {
4101 "cursor_shape": "block"
4102 }
4103}
4104```
4105
41062. A vertical bar
4107
4108```json [settings]
4109{
4110 "terminal": {
4111 "cursor_shape": "bar"
4112 }
4113}
4114```
4115
41163. An underline / underscore that runs along the following character
4117
4118```json [settings]
4119{
4120 "terminal": {
4121 "cursor_shape": "underline"
4122 }
4123}
4124```
4125
41264. A box drawn around the following character
4127
4128```json [settings]
4129{
4130 "terminal": {
4131 "cursor_shape": "hollow"
4132 }
4133}
4134```
4135
4136### Terminal: Keep Selection On Copy
4137
4138- Description: Whether or not to keep the selection in the terminal after copying text.
4139- Setting: `keep_selection_on_copy`
4140- Default: `true`
4141
4142**Options**
4143
4144`boolean` values
4145
4146**Example**
4147
4148```json [settings]
4149{
4150 "terminal": {
4151 "keep_selection_on_copy": false
4152 }
4153}
4154```
4155
4156### Terminal: Env
4157
4158- 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
4159- Setting: `env`
4160- Default: `{}`
4161
4162**Example**
4163
4164```json [settings]
4165{
4166 "terminal": {
4167 "env": {
4168 "ZED": "1",
4169 "KEY": "value1:value2"
4170 }
4171 }
4172}
4173```
4174
4175### Terminal: Font Size
4176
4177- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
4178- Setting: `font_size`
4179- Default: `null`
4180
4181**Options**
4182
4183`integer` values
4184
4185```json [settings]
4186{
4187 "terminal": {
4188 "font_size": 15
4189 }
4190}
4191```
4192
4193### Terminal: Font Family
4194
4195- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
4196- Setting: `font_family`
4197- Default: `null`
4198
4199**Options**
4200
4201The name of any font family installed on the user's system
4202
4203```json [settings]
4204{
4205 "terminal": {
4206 "font_family": "Berkeley Mono"
4207 }
4208}
4209```
4210
4211### Terminal: Font Features
4212
4213- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
4214- Setting: `font_features`
4215- Default: `null`
4216- Platform: macOS and Windows.
4217
4218**Options**
4219
4220See Buffer Font Features
4221
4222```json [settings]
4223{
4224 "terminal": {
4225 "font_features": {
4226 "calt": false
4227 // See Buffer Font Features for more features
4228 }
4229 }
4230}
4231```
4232
4233### Terminal: Line Height
4234
4235- Description: Set the terminal's line height.
4236- Setting: `line_height`
4237- Default: `standard`
4238
4239**Options**
4240
42411. Use a line height that's `comfortable` for reading, 1.618.
4242
4243```json [settings]
4244{
4245 "terminal": {
4246 "line_height": "comfortable"
4247 }
4248}
4249```
4250
42512. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
4252
4253```json [settings]
4254{
4255 "terminal": {
4256 "line_height": "standard"
4257 }
4258}
4259```
4260
42613. Use a custom line height.
4262
4263```json [settings]
4264{
4265 "terminal": {
4266 "line_height": {
4267 "custom": 2
4268 }
4269 }
4270}
4271```
4272
4273### Terminal: Minimum Contrast
4274
4275- 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.
4276- Setting: `minimum_contrast`
4277- Default: `45`
4278
4279**Options**
4280
4281`integer` values from 0 to 106. Common recommended values:
4282
4283- `0`: No contrast adjustment
4284- `45`: Minimum for large fluent text (default)
4285- `60`: Minimum for other content text
4286- `75`: Minimum for body text
4287- `90`: Preferred for body text
4288
4289```json [settings]
4290{
4291 "terminal": {
4292 "minimum_contrast": 45
4293 }
4294}
4295```
4296
4297### Terminal: Option As Meta
4298
4299- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
4300- Setting: `option_as_meta`
4301- Default: `false`
4302
4303**Options**
4304
4305`boolean` values
4306
4307```json [settings]
4308{
4309 "terminal": {
4310 "option_as_meta": true
4311 }
4312}
4313```
4314
4315### Terminal: Shell
4316
4317- Description: What shell to use when launching the terminal.
4318- Setting: `shell`
4319- Default: `system`
4320
4321**Options**
4322
43231. Use the system's default terminal configuration (usually the `/etc/passwd` file).
4324
4325```json [settings]
4326{
4327 "terminal": {
4328 "shell": "system"
4329 }
4330}
4331```
4332
43332. A program to launch:
4334
4335```json [settings]
4336{
4337 "terminal": {
4338 "shell": {
4339 "program": "sh"
4340 }
4341 }
4342}
4343```
4344
43453. A program with arguments:
4346
4347```json [settings]
4348{
4349 "terminal": {
4350 "shell": {
4351 "with_arguments": {
4352 "program": "/bin/bash",
4353 "args": ["--login"]
4354 }
4355 }
4356 }
4357}
4358```
4359
4360## Terminal: Detect Virtual Environments {#terminal-detect_venv}
4361
4362- 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.
4363- Setting: `detect_venv`
4364- Default:
4365
4366```json [settings]
4367{
4368 "terminal": {
4369 "detect_venv": {
4370 "on": {
4371 // Default directories to search for virtual environments, relative
4372 // to the current working directory. We recommend overriding this
4373 // in your project's settings, rather than globally.
4374 "directories": [".env", "env", ".venv", "venv"],
4375 // Can also be `csh`, `fish`, and `nushell`
4376 "activate_script": "default"
4377 }
4378 }
4379 }
4380}
4381```
4382
4383Disable with:
4384
4385```json [settings]
4386{
4387 "terminal": {
4388 "detect_venv": "off"
4389 }
4390}
4391```
4392
4393### Terminal: Scroll Multiplier
4394
4395- Description: The multiplier for scrolling speed in the terminal when using mouse wheel or trackpad.
4396- Setting: `scroll_multiplier`
4397- Default: `1.0`
4398
4399**Options**
4400
4401Positive floating point values. Values less than or equal to 0 will be clamped to a minimum of 0.01.
4402
4403**Example**
4404
4405```json
4406{
4407 "terminal": {
4408 "scroll_multiplier": 5.0
4409 }
4410}
4411```
4412
4413## Terminal: Toolbar
4414
4415- Description: Whether or not to show various elements in the terminal toolbar.
4416- Setting: `toolbar`
4417- Default:
4418
4419```json [settings]
4420{
4421 "terminal": {
4422 "toolbar": {
4423 "breadcrumbs": false
4424 }
4425 }
4426}
4427```
4428
4429**Options**
4430
4431At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
4432
4433If the terminal title is empty, the breadcrumbs won't be shown.
4434
4435The shell running in the terminal needs to be configured to emit the title.
4436
4437Example command to set the title: `echo -e "\e]2;New Title\007";`
4438
4439### Terminal: Button
4440
4441- Description: Control to show or hide the terminal button in the status bar
4442- Setting: `button`
4443- Default: `true`
4444
4445**Options**
4446
4447`boolean` values
4448
4449```json [settings]
4450{
4451 "terminal": {
4452 "button": false
4453 }
4454}
4455```
4456
4457### Terminal: Working Directory
4458
4459- Description: What working directory to use when launching the terminal.
4460- Setting: `working_directory`
4461- Default: `"current_project_directory"`
4462
4463**Options**
4464
44651. Use the current file's directory, falling back to the project directory, then the first project in the workspace.
4466
4467```json [settings]
4468{
4469 "terminal": {
4470 "working_directory": "current_file_directory"
4471 }
4472}
4473```
4474
44752. Use the current file's project directory. Fallback to the first project directory strategy if unsuccessful.
4476
4477```json [settings]
4478{
4479 "terminal": {
4480 "working_directory": "current_project_directory"
4481 }
4482}
4483```
4484
44853. Use the first project in this workspace's directory. Fallback to using this platform's home directory.
4486
4487```json [settings]
4488{
4489 "terminal": {
4490 "working_directory": "first_project_directory"
4491 }
4492}
4493```
4494
44954. Always use this platform's home directory if it can be found.
4496
4497```json [settings]
4498{
4499 "terminal": {
4500 "working_directory": "always_home"
4501 }
4502}
4503```
4504
45055. 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.
4506
4507```json [settings]
4508{
4509 "terminal": {
4510 "working_directory": {
4511 "always": {
4512 "directory": "~/zed/projects/"
4513 }
4514 }
4515 }
4516}
4517```
4518
4519### Terminal: Path Hyperlink Regexes
4520
4521- Description: Regexes used to identify path hyperlinks. The regexes can be specified in two forms - a single regex string, or an array of strings (which will be collected into a single multi-line regex string).
4522- Setting: `path_hyperlink_regexes`
4523- Default:
4524
4525```json [settings]
4526{
4527 "terminal": {
4528 "path_hyperlink_regexes": [
4529 // Python-style diagnostics
4530 "File \"(?<path>[^\"]+)\", line (?<line>[0-9]+)",
4531 // Common path syntax with optional line, column, description, trailing punctuation, or
4532 // surrounding symbols or quotes
4533 [
4534 "(?x)",
4535 "# optionally starts with 0-2 opening prefix symbols",
4536 "[({\\[<]{0,2}",
4537 "# which may be followed by an opening quote",
4538 "(?<quote>[\"'`])?",
4539 "# `path` is the shortest sequence of any non-space character",
4540 "(?<link>(?<path>[^ ]+?",
4541 " # which may end with a line and optionally a column,",
4542 " (?<line_column>:+[0-9]+(:[0-9]+)?|:?\\([0-9]+([,:][0-9]+)?\\))?",
4543 "))",
4544 "# which must be followed by a matching quote",
4545 "(?(<quote>)\\k<quote>)",
4546 "# and optionally a single closing symbol",
4547 "[)}\\]>]?",
4548 "# if line/column matched, may be followed by a description",
4549 "(?(<line_column>):[^ 0-9][^ ]*)?",
4550 "# which may be followed by trailing punctuation",
4551 "[.,:)}\\]>]*",
4552 "# and always includes trailing whitespace or end of line",
4553 "([ ]+|$)"
4554 ]
4555 ]
4556 }
4557}
4558```
4559
4560### Terminal: Path Hyperlink Timeout (ms)
4561
4562- Description: Maximum time to search for a path hyperlink. When set to 0, path hyperlinks are disabled.
4563- Setting: `path_hyperlink_timeout_ms`
4564- Default: `1`
4565
4566## REPL
4567
4568- Description: Repl settings.
4569- Setting: `repl`
4570- Default:
4571
4572```json [settings]
4573{
4574 "repl": {
4575 // Maximum number of columns to keep in REPL's scrollback buffer.
4576 // Clamped with [20, 512] range.
4577 "max_columns": 128,
4578 // Maximum number of lines to keep in REPL's scrollback buffer.
4579 // Clamped with [4, 256] range.
4580 "max_lines": 32
4581 }
4582}
4583```
4584
4585## Theme
4586
4587- 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.
4588- Setting: `theme`
4589- Default: `One Dark`
4590
4591### Theme Object
4592
4593- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
4594- Setting: `theme`
4595- Default:
4596
4597```json [settings]
4598{
4599 "theme": {
4600 "mode": "system",
4601 "dark": "One Dark",
4602 "light": "One Light"
4603 }
4604}
4605```
4606
4607### Mode
4608
4609- Description: Specify theme mode.
4610- Setting: `mode`
4611- Default: `system`
4612
4613**Options**
4614
46151. Set the theme to dark mode
4616
4617```json [settings]
4618{
4619 "theme": {
4620 "mode": "dark",
4621 "dark": "One Dark",
4622 "light": "One Light"
4623 }
4624}
4625```
4626
46272. Set the theme to light mode
4628
4629```json [settings]
4630{
4631 "theme": {
4632 "mode": "light",
4633 "dark": "One Dark",
4634 "light": "One Light"
4635 }
4636}
4637```
4638
46393. Set the theme to system mode
4640
4641```json [settings]
4642{
4643 "theme": {
4644 "mode": "system",
4645 "dark": "One Dark",
4646 "light": "One Light"
4647 }
4648}
4649```
4650
4651### Dark
4652
4653- Description: The name of the dark Zed theme to use for the UI.
4654- Setting: `dark`
4655- Default: `One Dark`
4656
4657**Options**
4658
4659Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4660
4661### Light
4662
4663- Description: The name of the light Zed theme to use for the UI.
4664- Setting: `light`
4665- Default: `One Light`
4666
4667**Options**
4668
4669Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4670
4671## Title Bar
4672
4673- Description: Whether or not to show various elements in the title bar
4674- Setting: `title_bar`
4675- Default:
4676
4677```json [settings]
4678{
4679 "title_bar": {
4680 "show_branch_icon": false,
4681 "show_branch_name": true,
4682 "show_project_items": true,
4683 "show_onboarding_banner": true,
4684 "show_user_picture": true,
4685 "show_user_menu": true,
4686 "show_sign_in": true,
4687 "show_menus": false,
4688 "button_layout": "platform_default"
4689 }
4690}
4691```
4692
4693**Options**
4694
4695- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
4696- `show_branch_name`: Whether to show the branch name button in the titlebar
4697- `show_project_items`: Whether to show the project host and name in the titlebar
4698- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4699- `show_user_picture`: Whether to show user picture in the titlebar
4700- `show_user_menu`: Whether to show the user menu button in the titlebar (the one that displays your avatar by default and contains options like Settings, Keymap, Themes, etc.)
4701- `show_sign_in`: Whether to show the sign in button in the titlebar
4702- `show_menus`: Whether to show the menus in the titlebar
4703- `button_layout`: The layout of window control buttons in the title bar (Linux only). Can be set to `"platform_default"` to follow the system setting, `"standard"` to use Zed's built-in layout, or a custom format like `"close:minimize,maximize"`
4704
4705## Vim
4706
4707- Description: Whether or not to enable vim mode.
4708- Setting: `vim_mode`
4709- Default: `false`
4710
4711## When Closing With No Tabs
4712
4713- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4714- Setting: `when_closing_with_no_tabs`
4715- Default: `"platform_default"`
4716
4717**Options**
4718
47191. Use platform default behavior:
4720
4721```json [settings]
4722{
4723 "when_closing_with_no_tabs": "platform_default"
4724}
4725```
4726
47272. Always close the window:
4728
4729```json [settings]
4730{
4731 "when_closing_with_no_tabs": "close_window"
4732}
4733```
4734
47353. Never close the window:
4736
4737```json [settings]
4738{
4739 "when_closing_with_no_tabs": "keep_window_open"
4740}
4741```
4742
4743## Project Panel
4744
4745- Description: Customize project panel
4746- Setting: `project_panel`
4747- Default:
4748
4749```json [settings]
4750{
4751 "project_panel": {
4752 "button": true,
4753 "default_width": 240,
4754 "dock": "left",
4755 "entry_spacing": "comfortable",
4756 "file_icons": true,
4757 "folder_icons": true,
4758 "git_status": true,
4759 "indent_size": 20,
4760 "auto_reveal_entries": true,
4761 "auto_fold_dirs": true,
4762 "bold_folder_labels": false,
4763 "drag_and_drop": true,
4764 "scrollbar": {
4765 "show": null,
4766 "horizontal_scroll": true
4767 },
4768 "sticky_scroll": true,
4769 "show_diagnostics": "all",
4770 "indent_guides": {
4771 "show": "always"
4772 },
4773 "sort_mode": "directories_first",
4774 "hide_root": false,
4775 "hide_hidden": false,
4776 "starts_open": true,
4777 "auto_open": {
4778 "on_create": true,
4779 "on_paste": true,
4780 "on_drop": true
4781 }
4782 }
4783}
4784```
4785
4786### Dock
4787
4788- Description: Control the position of the dock
4789- Setting: `dock`
4790- Default: `left`
4791
4792**Options**
4793
47941. Default dock position to left
4795
4796```json [settings]
4797{
4798 "project_panel": {
4799 "dock": "left"
4800 }
4801}
4802```
4803
48042. Default dock position to right
4805
4806```json [settings]
4807{
4808 "project_panel": {
4809 "dock": "right"
4810 }
4811}
4812```
4813
4814### Entry Spacing
4815
4816- Description: Spacing between worktree entries
4817- Setting: `entry_spacing`
4818- Default: `comfortable`
4819
4820**Options**
4821
48221. Comfortable entry spacing
4823
4824```json [settings]
4825{
4826 "project_panel": {
4827 "entry_spacing": "comfortable"
4828 }
4829}
4830```
4831
48322. Standard entry spacing
4833
4834```json [settings]
4835{
4836 "project_panel": {
4837 "entry_spacing": "standard"
4838 }
4839}
4840```
4841
4842### Git Status
4843
4844- Description: Indicates newly created and updated files
4845- Setting: `git_status`
4846- Default: `true`
4847
4848**Options**
4849
48501. Default enable git status
4851
4852```json [settings]
4853{
4854 "project_panel": {
4855 "git_status": true
4856 }
4857}
4858```
4859
48602. Default disable git status
4861
4862```json [settings]
4863{
4864 "project_panel": {
4865 "git_status": false
4866 }
4867}
4868```
4869
4870### Default Width
4871
4872- Description: Customize default width taken by project panel
4873- Setting: `default_width`
4874- Default: `240`
4875
4876**Options**
4877
4878`float` values
4879
4880### Auto Reveal Entries
4881
4882- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4883- Setting: `auto_reveal_entries`
4884- Default: `true`
4885
4886**Options**
4887
48881. Enable auto reveal entries
4889
4890```json [settings]
4891{
4892 "project_panel": {
4893 "auto_reveal_entries": true
4894 }
4895}
4896```
4897
48982. Disable auto reveal entries
4899
4900```json [settings]
4901{
4902 "project_panel": {
4903 "auto_reveal_entries": false
4904 }
4905}
4906```
4907
4908### Auto Fold Dirs
4909
4910- Description: Whether to fold directories automatically when directory has only one directory inside.
4911- Setting: `auto_fold_dirs`
4912- Default: `true`
4913
4914**Options**
4915
49161. Enable auto fold dirs
4917
4918```json [settings]
4919{
4920 "project_panel": {
4921 "auto_fold_dirs": true
4922 }
4923}
4924```
4925
49262. Disable auto fold dirs
4927
4928```json [settings]
4929{
4930 "project_panel": {
4931 "auto_fold_dirs": false
4932 }
4933}
4934```
4935
4936### Bold Folder Labels
4937
4938- Description: Whether to show folder names with bold text in the project panel.
4939- Setting: `bold_folder_labels`
4940- Default: `false`
4941
4942**Options**
4943
49441. Enable bold folder labels
4945
4946```json [settings]
4947{
4948 "project_panel": {
4949 "bold_folder_labels": true
4950 }
4951}
4952```
4953
49542. Disable bold folder labels
4955
4956```json [settings]
4957{
4958 "project_panel": {
4959 "bold_folder_labels": false
4960 }
4961}
4962```
4963
4964### Indent Size
4965
4966- Description: Amount of indentation (in pixels) for nested items.
4967- Setting: `indent_size`
4968- Default: `20`
4969
4970### Indent Guides: Show
4971
4972- Description: Whether to show indent guides in the project panel.
4973- Setting: `indent_guides`
4974- Default:
4975
4976```json [settings]
4977{
4978 "project_panel": {
4979 "indent_guides": {
4980 "show": "always"
4981 }
4982 }
4983}
4984```
4985
4986**Options**
4987
49881. Show indent guides in the project panel
4989
4990```json [settings]
4991{
4992 "project_panel": {
4993 "indent_guides": {
4994 "show": "always"
4995 }
4996 }
4997}
4998```
4999
50002. Hide indent guides in the project panel
5001
5002```json [settings]
5003{
5004 "project_panel": {
5005 "indent_guides": {
5006 "show": "never"
5007 }
5008 }
5009}
5010```
5011
5012### Scrollbar
5013
5014- Description: Scrollbar-related settings for the project panel.
5015- Setting: `scrollbar`
5016- Default:
5017
5018```json [settings]
5019{
5020 "project_panel": {
5021 "scrollbar": {
5022 "show": null,
5023 "horizontal_scroll": true
5024 }
5025 }
5026}
5027```
5028
5029**Options**
5030
5031- `show`: 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.
5032- `horizontal_scroll`: Whether to allow horizontal scrolling in the project panel. When `false`, the view is locked to the leftmost position and long file names are clipped.
5033
5034### Sort Mode
5035
5036- Description: Sort order for entries in the project panel
5037- Setting: `sort_mode`
5038- Default: `directories_first`
5039
5040**Options**
5041
50421. Show directories first, then files
5043
5044```json [settings]
5045{
5046 "project_panel": {
5047 "sort_mode": "directories_first"
5048 }
5049}
5050```
5051
50522. Mix directories and files together
5053
5054```json [settings]
5055{
5056 "project_panel": {
5057 "sort_mode": "mixed"
5058 }
5059}
5060```
5061
50623. Show files first, then directories
5063
5064```json [settings]
5065{
5066 "project_panel": {
5067 "sort_mode": "files_first"
5068 }
5069}
5070```
5071
5072### Sort Order
5073
5074- Description: Whether to sort file and folder names case-sensitively in the project panel. This setting works in combination with `sort_mode`. `sort_mode` controls how files and directories are grouped (e.g., directories first), while this setting controls how names are compared within those groups.
5075- Setting: `sort_order`
5076- Default: `default`
5077
5078**Options**
5079
50801. Case-insensitive natural sort with lowercase preferred in ties. Numbers in file names are compared by their numeric value (e.g., `file2` sorts before `file10`). Names that differ only in casing are sorted with lowercase first (e.g., `apple` before `Apple`).
5081
5082```json [settings]
5083{
5084 "project_panel": {
5085 "sort_order": "default"
5086 }
5087}
5088```
5089
50902. Uppercase names are grouped before lowercase names, with case-insensitive natural sort within each group. Dot-prefixed names (e.g., `.gitignore`) sort before both groups. Accented uppercase letters like `Γ` are treated as uppercase.
5091
5092```json [settings]
5093{
5094 "project_panel": {
5095 "sort_order": "upper"
5096 }
5097}
5098```
5099
51003. Lowercase names are grouped before uppercase names, with case-insensitive natural sort within each group. Dot-prefixed names sort before both groups.
5101
5102```json [settings]
5103{
5104 "project_panel": {
5105 "sort_order": "lower"
5106 }
5107}
5108```
5109
51104. Pure Unicode codepoint comparison. No case folding and no natural number sorting. Uppercase ASCII letters (`A`β`Z`) sort before lowercase (`a`β`z`) as a natural consequence of their codepoint values. Accented characters like `Γ` (U+00C9) sort after all ASCII letters. Numbers are compared lexicographically (`file10` sorts before `file2`).
5111
5112```json [settings]
5113{
5114 "project_panel": {
5115 "sort_order": "unicode"
5116 }
5117}
5118```
5119
5120### Auto Open
5121
5122- Description: Control whether files are opened automatically after different creation flows in the project panel.
5123- Setting: `auto_open`
5124- Default:
5125
5126```json [settings]
5127{
5128 "project_panel": {
5129 "auto_open": {
5130 "on_create": true,
5131 "on_paste": true,
5132 "on_drop": true
5133 }
5134 }
5135}
5136```
5137
5138**Options**
5139
5140- `on_create`: Whether to automatically open newly created files in the editor.
5141- `on_paste`: Whether to automatically open files after pasting or duplicating them.
5142- `on_drop`: Whether to automatically open files dropped from external sources.
5143
5144## Agent
5145
5146Visit [the Configuration page](../ai/configuration.md) under the AI section to learn more about all the agent-related settings.
5147
5148## Collaboration Panel
5149
5150- Description: Customizations for the collaboration panel.
5151- Setting: `collaboration_panel`
5152- Default:
5153
5154```json [settings]
5155{
5156 "collaboration_panel": {
5157 "button": true,
5158 "dock": "left",
5159 "default_width": 240
5160 }
5161}
5162```
5163
5164**Options**
5165
5166- `button`: Whether to show the collaboration panel button in the status bar
5167- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
5168- `default_width`: Default width of the collaboration panel
5169
5170## Debugger
5171
5172- Description: Configuration for debugger panel and settings
5173- Setting: `debugger`
5174- Default:
5175
5176```json [settings]
5177{
5178 "debugger": {
5179 "stepping_granularity": "line",
5180 "save_breakpoints": true,
5181 "dock": "bottom",
5182 "button": true
5183 }
5184}
5185```
5186
5187See the [debugger page](../debugger.md) for more information about debugging support within Zed.
5188
5189## Git Panel
5190
5191- Description: Setting to customize the behavior of the git panel.
5192- Setting: `git_panel`
5193- Default:
5194
5195```json [settings]
5196{
5197 "git_panel": {
5198 "button": true,
5199 "dock": "left",
5200 "default_width": 360,
5201 "status_style": "icon",
5202 "fallback_branch_name": "main",
5203 "sort_by_path": false,
5204 "collapse_untracked_diff": false,
5205 "scrollbar": {
5206 "show": null
5207 },
5208 "starts_open": false
5209 }
5210}
5211```
5212
5213**Options**
5214
5215- `button`: Whether to show the git panel button in the status bar
5216- `dock`: Where to dock the git panel. Can be `left` or `right`
5217- `default_width`: Default width of the git panel
5218- `status_style`: How to display git status. Can be `label_color` or `icon`
5219- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
5220- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
5221- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
5222- `scrollbar`: When to show the scrollbar in the git panel
5223- `starts_open`: Whether the git panel should open on startup
5224
5225## Git Worktree Directory
5226
5227- Description: Directory where git worktrees are created, relative to the repository working directory.
5228- Setting: `git.worktree_directory`
5229- Default: `"../worktrees"`
5230
5231When the resolved directory falls outside the project root, the project's directory name is automatically appended so that sibling repos don't collide. For example, with the default `"../worktrees"` and a project at `~/code/zed`, worktrees are created under `~/code/worktrees/zed/`.
5232
5233When the resolved directory is inside the project root, no extra component is added (it's already project-scoped).
5234
5235**Examples**:
5236
5237- `"../worktrees"` β `~/code/worktrees/<project>/` (default)
5238- `".git/zed-worktrees"` β `<project>/.git/zed-worktrees/`
5239- `"my-worktrees"` β `<project>/my-worktrees/`
5240
5241Trailing slashes are ignored.
5242
5243```json [settings]
5244{
5245 "git": {
5246 "worktree_directory": "../worktrees"
5247 }
5248}
5249```
5250
5251## Git Hosting Providers
5252
5253- Description: Register self-hosted GitHub, GitLab, or Bitbucket instances so commit hashes, issue references, and permalinks resolve to the right host.
5254- Setting: `git_hosting_providers`
5255- Default: `[]`
5256
5257**Options**
5258
5259Each entry accepts:
5260
5261- `provider`: One of `github`, `gitlab`, or `bitbucket`
5262- `name`: Display name for the instance
5263- `base_url`: Base URL, e.g. `https://git.example.corp`
5264
5265You can define these in user or project settings; project settings are merged on top of user settings.
5266
5267```json [settings]
5268{
5269 "git_hosting_providers": [
5270 {
5271 "provider": "github",
5272 "name": "BigCorp GitHub",
5273 "base_url": "https://git.example.corp"
5274 }
5275 ]
5276}
5277```
5278
5279## Outline Panel
5280
5281- Description: Customize outline Panel
5282- Setting: `outline_panel`
5283- Default:
5284
5285```json [settings]
5286{
5287 "outline_panel": {
5288 "button": true,
5289 "default_width": 300,
5290 "dock": "left",
5291 "file_icons": true,
5292 "folder_icons": true,
5293 "git_status": true,
5294 "indent_size": 20,
5295 "auto_reveal_entries": true,
5296 "auto_fold_dirs": true,
5297 "indent_guides": {
5298 "show": "always"
5299 },
5300 "scrollbar": {
5301 "show": null
5302 }
5303 }
5304}
5305```
5306
5307## Calls
5308
5309- Description: Customize behavior when participating in a call
5310- Setting: `calls`
5311- Default:
5312
5313```json [settings]
5314{
5315 "calls": {
5316 // Join calls with the microphone live by default
5317 "mute_on_join": false,
5318 // Share your project when you are the first to join a channel
5319 "share_on_join": false
5320 }
5321}
5322```
5323
5324## Colorize Brackets
5325
5326- Description: Whether to use tree-sitter bracket queries to detect and colorize the brackets in the editor (also known as "rainbow brackets").
5327- Setting: `colorize_brackets`
5328- Default: `false`
5329
5330**Options**
5331
5332`boolean` values
5333
5334The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
5335
5336## Unnecessary Code Fade
5337
5338- Description: How much to fade out unused code.
5339- Setting: `unnecessary_code_fade`
5340- Default: `0.3`
5341
5342**Options**
5343
5344Float values between `0.0` and `0.9`, where:
5345
5346- `0.0` means no fading (unused code looks the same as used code)
5347- `0.9` means maximum fading (unused code is very faint but still visible)
5348
5349**Example**
5350
5351```json [settings]
5352{
5353 "unnecessary_code_fade": 0.5
5354}
5355```
5356
5357## UI Font Family
5358
5359- Description: The name of the font to use for text in the UI.
5360- Setting: `ui_font_family`
5361- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
5362
5363**Options**
5364
5365The 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).
5366
5367## UI Font Features
5368
5369- Description: The OpenType features to enable for text in the UI.
5370- Setting: `ui_font_features`
5371- Default:
5372
5373```json [settings]
5374{
5375 "ui_font_features": {
5376 "calt": false
5377 }
5378}
5379```
5380
5381- Platform: macOS and Windows.
5382
5383**Options**
5384
5385Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
5386
5387For example, to disable font ligatures, add the following to your settings:
5388
5389```json [settings]
5390{
5391 "ui_font_features": {
5392 "calt": false
5393 }
5394}
5395```
5396
5397You can also set other OpenType features, like setting `cv01` to `7`:
5398
5399```json [settings]
5400{
5401 "ui_font_features": {
5402 "cv01": 7
5403 }
5404}
5405```
5406
5407## UI Font Fallbacks
5408
5409- Description: The font fallbacks to use for text in the UI.
5410- Setting: `ui_font_fallbacks`
5411- Default: `null`
5412- Platform: macOS and Windows.
5413
5414**Options**
5415
5416For example, to use `Nerd Font` as a fallback, add the following to your settings:
5417
5418```json [settings]
5419{
5420 "ui_font_fallbacks": ["Nerd Font"]
5421}
5422```
5423
5424## UI Font Size
5425
5426- Description: The default font size for text in the UI.
5427- Setting: `ui_font_size`
5428- Default: `16`
5429
5430**Options**
5431
5432`integer` values from `6` to `100` pixels (inclusive)
5433
5434## UI Font Weight
5435
5436- Description: The default font weight for text in the UI.
5437- Setting: `ui_font_weight`
5438- Default: `400`
5439
5440**Options**
5441
5442`integer` values between `100` and `900`
5443
5444## Settings Profiles
5445
5446- Description: Configure any number of settings profiles that are temporarily applied when selected from `settings profile selector: toggle`.
5447- Setting: `profiles`
5448- Default: `{}`
5449
5450In your `settings.json` file, add the `profiles` object.
5451Each key within this object is the name of a settings profile. Each profile has an optional `base` field (`"user"` or `"default"`) and a `settings` object containing any of Zed's settings.
5452
5453Example:
5454
5455```json [settings]
5456{
5457 "profiles": {
5458 "Presenting (Dark)": {
5459 "settings": {
5460 "agent_buffer_font_size": 18.0,
5461 "buffer_font_size": 18.0,
5462 "theme": "One Dark",
5463 "ui_font_size": 18.0
5464 }
5465 },
5466 "Presenting (Light)": {
5467 "settings": {
5468 "agent_buffer_font_size": 18.0,
5469 "buffer_font_size": 18.0,
5470 "theme": "One Light",
5471 "ui_font_size": 18.0
5472 }
5473 },
5474 "Writing": {
5475 "settings": {
5476 "agent_buffer_font_size": 15.0,
5477 "buffer_font_size": 15.0,
5478 "theme": "Catppuccin FrappΓ© - No Italics",
5479 "ui_font_size": 15.0,
5480 "tab_bar": { "show": false },
5481 "toolbar": { "breadcrumbs": false }
5482 }
5483 }
5484 }
5485}
5486```
5487
5488To preview and enable a settings profile, open the command palette via {#kb command_palette::Toggle} and search for `settings profile selector: toggle`.
5489
5490## An example configuration:
5491
5492```json [settings]
5493// ~/.config/zed/settings.json
5494{
5495 "theme": "cave-light",
5496 "tab_size": 2,
5497 "preferred_line_length": 80,
5498 "soft_wrap": "none",
5499
5500 "buffer_font_size": 18,
5501 "buffer_font_family": ".ZedMono",
5502
5503 "autosave": "on_focus_change",
5504 "format_on_save": "off",
5505 "vim_mode": false,
5506 "terminal": {
5507 "font_family": "FiraCode Nerd Font Mono",
5508 "blinking": "off"
5509 },
5510 "languages": {
5511 "C": {
5512 "format_on_save": "on",
5513 "formatter": "language_server",
5514 "preferred_line_length": 64,
5515 "soft_wrap": "bounded"
5516 }
5517 }
5518}
5519```