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## Line Ending
1640
1641- Description: How line endings should be handled for new files and during format and save. This can be specified on a per-language basis.
1642- Setting: `line_ending`
1643- Default: `detect`
1644
1645**Options**
1646
16471. To detect existing line endings and otherwise use the platform default (`lf` on Unix, `crlf` on Windows), set it to `detect`:
1648
1649```json [settings]
1650{
1651 "line_ending": "detect"
1652}
1653```
1654
16552. To prefer LF (`\n`) for new files and files with no existing line ending, use `prefer_lf`:
1656
1657```json [settings]
1658{
1659 "line_ending": "prefer_lf"
1660}
1661```
1662
16633. To prefer CRLF (`\r\n`) for new files and files with no existing line ending, use `prefer_crlf`:
1664
1665```json [settings]
1666{
1667 "line_ending": "prefer_crlf"
1668}
1669```
1670
16714. To enforce LF (`\n`) during format and save, use `enforce_lf`:
1672
1673```json [settings]
1674{
1675 "line_ending": "enforce_lf"
1676}
1677```
1678
16795. To enforce CRLF (`\r\n`) during format and save, use `enforce_crlf`:
1680
1681```json [settings]
1682{
1683 "line_ending": "enforce_crlf"
1684}
1685```
1686
1687The [`.editorconfig`](https://editorconfig.org) `end_of_line` property overrides this setting and behaves like `enforce_lf` or `enforce_crlf`.
1688
1689## Expand Excerpt Lines
1690
1691- Description: The default number of lines to expand excerpts in the multibuffer by
1692- Setting: `expand_excerpt_lines`
1693- Default: `5`
1694
1695**Options**
1696
1697Positive `integer` values
1698
1699## Excerpt Context Lines
1700
1701- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1702- Setting: `excerpt_context_lines`
1703- Default: `2`
1704
1705**Options**
1706
1707Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1708
1709## Extend Comment On Newline
1710
1711- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1712- Setting: `extend_comment_on_newline`
1713- Default: `true`
1714
1715**Options**
1716
1717`boolean` values
1718
1719## Status Bar
1720
1721- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1722- Setting: `status_bar`
1723- Default:
1724
1725```json [settings]
1726{
1727 "status_bar": {
1728 "active_language_button": true,
1729 "cursor_position_button": true,
1730 "line_endings_button": false
1731 }
1732}
1733```
1734
1735There 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.
1736
1737```json
1738"status_bar": {
1739 "experimental.show": false
1740}
1741```
1742
1743## LSP
1744
1745- Description: Configuration for language servers.
1746- Setting: `lsp`
1747- Default: `null`
1748
1749**Options**
1750
1751The following settings can be overridden for specific language servers:
1752
1753- `initialization_options`
1754- `settings`
1755
1756To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1757
1758Some 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.
1759
1760For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1761
1762```json [settings]
1763{
1764 "lsp": {
1765 "rust-analyzer": {
1766 "initialization_options": {
1767 "check": {
1768 "command": "clippy" // rust-analyzer.check.command (default: "check")
1769 }
1770 }
1771 }
1772 }
1773}
1774```
1775
1776While other options may be changed at a runtime and should be placed under `settings`:
1777
1778```json [settings]
1779{
1780 "lsp": {
1781 "yaml-language-server": {
1782 "settings": {
1783 "yaml": {
1784 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1785 }
1786 }
1787 }
1788 }
1789}
1790```
1791
1792## Global LSP Settings
1793
1794- Description: Configuration for global LSP settings that apply to all language servers
1795- Setting: `global_lsp_settings`
1796- Default:
1797
1798```json [settings]
1799{
1800 "global_lsp_settings": {
1801 "button": true,
1802 "request_timeout": 120,
1803 "notifications": {
1804 // Timeout in milliseconds for automatically dismissing language server notifications.
1805 // Set to 0 to disable auto-dismiss.
1806 "dismiss_timeout_ms": 5000
1807 }
1808 }
1809}
1810```
1811
1812**Options**
1813
1814- `button`: Whether to show the LSP status button in the status bar
1815- `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`
1816- `notifications`: Notification-related settings.
1817 - `dismiss_timeout_ms`: Timeout in milliseconds for automatically dismissing language server notifications. Set to 0 to disable auto-dismiss.
1818
1819## LSP Highlight Debounce
1820
1821- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1822- Setting: `lsp_highlight_debounce`
1823- Default: `75`
1824
1825**Options**
1826
1827`integer` values representing milliseconds
1828
1829## Features
1830
1831- Description: Features that can be globally enabled or disabled
1832- Setting: `features`
1833- Default:
1834
1835```json [settings]
1836{
1837 "edit_predictions": {
1838 "provider": "zed"
1839 }
1840}
1841```
1842
1843### Edit Prediction Provider
1844
1845- Description: Which edit prediction provider to use
1846- Setting: `edit_prediction_provider`
1847- Default: `"zed"`
1848
1849**Options**
1850
18511. Use Zeta as the edit prediction provider:
1852
1853```json [settings]
1854{
1855 "edit_predictions": {
1856 "provider": "zed"
1857 }
1858}
1859```
1860
18612. Use Copilot as the edit prediction provider:
1862
1863```json [settings]
1864{
1865 "edit_predictions": {
1866 "provider": "copilot"
1867 }
1868}
1869```
1870
18713. Turn off edit predictions across all providers
1872
1873```json [settings]
1874{
1875 "edit_predictions": {
1876 "provider": "none"
1877 }
1878}
1879```
1880
1881## Format On Save
1882
1883- Description: Whether or not to perform a buffer format before saving.
1884- Setting: `format_on_save`
1885- Default: `on`
1886
1887**Options**
1888
18891. `on`, enables format on save obeying `formatter` setting:
1890
1891```json [settings]
1892{
1893 "format_on_save": "on"
1894}
1895```
1896
18972. `off`, disables format on save:
1898
1899```json [settings]
1900{
1901 "format_on_save": "off"
1902}
1903```
1904
1905## Formatter
1906
1907- Description: How to perform a buffer format.
1908- Setting: `formatter`
1909- Default: `auto`
1910
1911**Options**
1912
19131. To use the current language server, use `"language_server"`:
1914
1915```json [settings]
1916{
1917 "formatter": "language_server"
1918}
1919```
1920
19212. 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):
1922
1923```json [settings]
1924{
1925 "formatter": {
1926 "external": {
1927 "command": "sed",
1928 "arguments": ["-e", "s/ *$//"]
1929 }
1930 }
1931}
1932```
1933
19343. 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.
1935
1936WARNING: `{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.
1937
1938```json [settings]
1939 "formatter": {
1940 "external": {
1941 "command": "prettier",
1942 "arguments": ["--stdin-filepath", "{buffer_path}"]
1943 }
1944 }
1945```
1946
19474. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1948
1949```json [settings]
1950{
1951 "formatter": [
1952 // Use ESLint's --fix:
1953 { "code_action": "source.fixAll.eslint" },
1954 // Organize imports on save:
1955 { "code_action": "source.organizeImports" }
1956 ]
1957}
1958```
1959
19605. Or to use multiple formatters consecutively, use an array of formatters:
1961
1962```json [settings]
1963{
1964 "formatter": [
1965 { "language_server": { "name": "rust-analyzer" } },
1966 {
1967 "external": {
1968 "command": "sed",
1969 "arguments": ["-e", "s/ *$//"]
1970 }
1971 }
1972 ]
1973}
1974```
1975
1976Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1977If any of the formatters fails, the subsequent ones will still be executed.
1978
19796. To disable the formatter, use `"none"`. This setting disables the configured formatter, but any actions in `code_actions_on_format` will still be executed:
1980
1981```json [settings]
1982{
1983 "formatter": "none"
1984}
1985```
1986
1987## Auto close
1988
1989- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1990- Setting: `use_autoclose`
1991- Default: `true`
1992
1993**Options**
1994
1995`boolean` values
1996
1997## Always Treat Brackets As Autoclosed
1998
1999- Description: Controls how the editor handles the autoclosed characters.
2000- Setting: `always_treat_brackets_as_autoclosed`
2001- Default: `false`
2002
2003**Options**
2004
2005`boolean` values
2006
2007**Example**
2008
2009If the setting is set to `true`:
2010
20111. Enter in the editor: `)))`
20122. Move the cursor to the start: `^)))`
20133. Enter again: `)))`
2014
2015The result is still `)))` and not `))))))`, which is what it would be by default.
2016
2017## File Scan Exclusions
2018
2019- Setting: `file_scan_exclusions`
2020- 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`.
2021- Default:
2022
2023```json [settings]
2024{
2025 "file_scan_exclusions": [
2026 "**/.git",
2027 "**/.svn",
2028 "**/.hg",
2029 "**/.jj",
2030 "**/CVS",
2031 "**/.DS_Store",
2032 "**/Thumbs.db",
2033 "**/.classpath",
2034 "**/.settings"
2035 ]
2036}
2037```
2038
2039Note, 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.
2040
2041## File Scan Inclusions
2042
2043- Setting: `file_scan_inclusions`
2044- 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.
2045- Default:
2046
2047```json [settings]
2048{
2049 "file_scan_inclusions": [".env*"]
2050}
2051```
2052
2053## File Types
2054
2055- Setting: `file_types`
2056- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
2057- Default:
2058
2059```json [settings]
2060{
2061 "file_types": {
2062 "JSONC": [
2063 "**/.zed/**/*.json",
2064 "**/zed/**/*.json",
2065 "**/Zed/**/*.json",
2066 "**/.vscode/**/*.json"
2067 ],
2068 "Shell Script": [".env.*"]
2069 }
2070}
2071```
2072
2073**Examples**
2074
2075To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
2076
2077```json [settings]
2078{
2079 "file_types": {
2080 "C++": ["c"],
2081 "TOML": ["MyLockFile"],
2082 "Dockerfile": ["Dockerfile*"]
2083 }
2084}
2085```
2086
2087## Diagnostics
2088
2089- Description: Configuration for diagnostics-related features.
2090- Setting: `diagnostics`
2091- Default:
2092
2093```json [settings]
2094{
2095 "diagnostics": {
2096 "include_warnings": true,
2097 "inline": {
2098 "enabled": false
2099 }
2100 }
2101}
2102```
2103
2104### Inline Diagnostics
2105
2106- Description: Whether or not to show diagnostics information inline.
2107- Setting: `inline`
2108- Default:
2109
2110```json [settings]
2111{
2112 "diagnostics": {
2113 "inline": {
2114 "enabled": false,
2115 "update_debounce_ms": 150,
2116 "padding": 4,
2117 "min_column": 0,
2118 "max_severity": null
2119 }
2120 }
2121}
2122```
2123
2124**Options**
2125
21261. Enable inline diagnostics.
2127
2128```json [settings]
2129{
2130 "diagnostics": {
2131 "inline": {
2132 "enabled": true
2133 }
2134 }
2135}
2136```
2137
21382. Delay diagnostic updates until some time after the last diagnostic update.
2139
2140```json [settings]
2141{
2142 "diagnostics": {
2143 "inline": {
2144 "enabled": true,
2145 "update_debounce_ms": 150
2146 }
2147 }
2148}
2149```
2150
21513. Set padding between the end of the source line and the start of the diagnostic.
2152
2153```json [settings]
2154{
2155 "diagnostics": {
2156 "inline": {
2157 "enabled": true,
2158 "padding": 4
2159 }
2160 }
2161}
2162```
2163
21644. Horizontally align inline diagnostics at the given column.
2165
2166```json [settings]
2167{
2168 "diagnostics": {
2169 "inline": {
2170 "enabled": true,
2171 "min_column": 80
2172 }
2173 }
2174}
2175```
2176
21775. Show only warning and error diagnostics.
2178
2179```json [settings]
2180{
2181 "diagnostics": {
2182 "inline": {
2183 "enabled": true,
2184 "max_severity": "warning"
2185 }
2186 }
2187}
2188```
2189
2190## Git
2191
2192- Description: Configuration for git-related features.
2193- Setting: `git`
2194- Default:
2195
2196```json [settings]
2197{
2198 "git": {
2199 "git_gutter": "tracked_files",
2200 "inline_blame": {
2201 "enabled": true
2202 },
2203 "branch_picker": {
2204 "show_author_name": true
2205 },
2206 "hunk_style": "staged_hollow"
2207 }
2208}
2209```
2210
2211### Git Gutter
2212
2213- Description: Whether or not to show the git gutter.
2214- Setting: `git_gutter`
2215- Default: `tracked_files`
2216
2217**Options**
2218
22191. Show git gutter in tracked files
2220
2221```json [settings]
2222{
2223 "git": {
2224 "git_gutter": "tracked_files"
2225 }
2226}
2227```
2228
22292. Hide git gutter
2230
2231```json [settings]
2232{
2233 "git": {
2234 "git_gutter": "hide"
2235 }
2236}
2237```
2238
2239### Gutter Debounce
2240
2241- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
2242- Setting: `gutter_debounce`
2243- Default: `null`
2244
2245**Options**
2246
2247`integer` values representing milliseconds
2248
2249Example:
2250
2251```json [settings]
2252{
2253 "git": {
2254 "gutter_debounce": 100
2255 }
2256}
2257```
2258
2259### Inline Git Blame
2260
2261- Description: Whether or not to show git blame information inline, on the currently focused line.
2262- Setting: `inline_blame`
2263- Default:
2264
2265```json [settings]
2266{
2267 "git": {
2268 "inline_blame": {
2269 "enabled": true
2270 }
2271 }
2272}
2273```
2274
2275**Options**
2276
22771. Disable inline git blame:
2278
2279```json [settings]
2280{
2281 "git": {
2282 "inline_blame": {
2283 "enabled": false
2284 }
2285 }
2286}
2287```
2288
22892. Only show inline git blame after a delay (that starts after cursor stops moving):
2290
2291```json [settings]
2292{
2293 "git": {
2294 "inline_blame": {
2295 "delay_ms": 500
2296 }
2297 }
2298}
2299```
2300
23013. Show a commit summary next to the commit date and author:
2302
2303```json [settings]
2304{
2305 "git": {
2306 "inline_blame": {
2307 "show_commit_summary": true
2308 }
2309 }
2310}
2311```
2312
23134. Use this as the minimum column at which to display inline blame information:
2314
2315```json [settings]
2316{
2317 "git": {
2318 "inline_blame": {
2319 "min_column": 80
2320 }
2321 }
2322}
2323```
2324
23255. Set the padding between the end of the line and the inline blame hint, in ems:
2326
2327```json [settings]
2328{
2329 "git": {
2330 "inline_blame": {
2331 "padding": 10
2332 }
2333 }
2334}
2335```
2336
2337### Branch Picker
2338
2339- Description: Configuration related to the branch picker.
2340- Setting: `branch_picker`
2341- Default:
2342
2343```json [settings]
2344{
2345 "git": {
2346 "branch_picker": {
2347 "show_author_name": false
2348 }
2349 }
2350}
2351```
2352
2353**Options**
2354
23551. Show the author name in the branch picker:
2356
2357```json [settings]
2358{
2359 "git": {
2360 "branch_picker": {
2361 "show_author_name": true
2362 }
2363 }
2364}
2365```
2366
2367### Hunk Style
2368
2369- Description: What styling we should use for the diff hunks.
2370- Setting: `hunk_style`
2371- Default:
2372
2373```json [settings]
2374{
2375 "git": {
2376 "hunk_style": "staged_hollow"
2377 }
2378}
2379```
2380
2381**Options**
2382
23831. Show the staged hunks faded out and with a border:
2384
2385```json [settings]
2386{
2387 "git": {
2388 "hunk_style": "staged_hollow"
2389 }
2390}
2391```
2392
23932. Show unstaged hunks faded out and with a border:
2394
2395```json [settings]
2396{
2397 "git": {
2398 "hunk_style": "unstaged_hollow"
2399 }
2400}
2401```
2402
2403## Go to Definition Fallback
2404
2405- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2406- Setting: `go_to_definition_fallback`
2407- Default: `"find_all_references"`
2408
2409**Options**
2410
24111. Do nothing:
2412
2413```json [settings]
2414{
2415 "go_to_definition_fallback": "none"
2416}
2417```
2418
24192. Find references for the same symbol (default):
2420
2421```json [settings]
2422{
2423 "go_to_definition_fallback": "find_all_references"
2424}
2425```
2426
2427## Hard Tabs
2428
2429- Description: Whether to indent lines using tab characters or multiple spaces.
2430- Setting: `hard_tabs`
2431- Default: `false`
2432
2433**Options**
2434
2435`boolean` values
2436
2437## Helix Mode
2438
2439- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](../helix.md) for more details.
2440- Setting: `helix_mode`
2441- Default: `false`
2442
2443**Options**
2444
2445`boolean` values
2446
2447## Indent Guides
2448
2449- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2450- Setting: `indent_guides`
2451- Default:
2452
2453```json [settings]
2454{
2455 "indent_guides": {
2456 "enabled": true,
2457 "line_width": 1,
2458 "active_line_width": 1,
2459 "coloring": "fixed",
2460 "background_coloring": "disabled"
2461 }
2462}
2463```
2464
2465**Options**
2466
24671. Disable indent guides
2468
2469```json [settings]
2470{
2471 "indent_guides": {
2472 "enabled": false
2473 }
2474}
2475```
2476
24772. Enable indent guides for a specific language.
2478
2479```json [settings]
2480{
2481 "languages": {
2482 "Python": {
2483 "indent_guides": {
2484 "enabled": true
2485 }
2486 }
2487 }
2488}
2489```
2490
24913. Enable indent aware coloring ("rainbow indentation").
2492 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.
2493
2494```json [settings]
2495{
2496 "indent_guides": {
2497 "enabled": true,
2498 "coloring": "indent_aware"
2499 }
2500}
2501```
2502
25034. Enable indent aware background coloring ("rainbow indentation").
2504 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.
2505
2506```json [settings]
2507{
2508 "indent_guides": {
2509 "enabled": true,
2510 "coloring": "indent_aware",
2511 "background_coloring": "indent_aware"
2512 }
2513}
2514```
2515
2516## Hover Popover Enabled
2517
2518- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2519- Setting: `hover_popover_enabled`
2520- Default: `true`
2521
2522**Options**
2523
2524`boolean` values
2525
2526## Hover Popover Delay
2527
2528- 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.
2529- Setting: `hover_popover_delay`
2530- Default: `300`
2531
2532**Options**
2533
2534`integer` values representing milliseconds
2535
2536## Hover Popover Sticky
2537
2538- Description: Whether the hover popover sticks when the mouse moves toward it, allowing interaction with its contents before it disappears.
2539- Setting: `hover_popover_sticky`
2540- Default: `true`
2541
2542**Options**
2543
2544`boolean` values
2545
2546## Hover Popover Hiding Delay
2547
2548- 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.
2549- Setting: `hover_popover_hiding_delay`
2550- Default: `300`
2551
2552**Options**
2553
2554`integer` values representing milliseconds
2555
2556## Icon Theme
2557
2558- 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.
2559- Setting: `icon_theme`
2560- Default: `Zed (Default)`
2561
2562### Icon Theme Object
2563
2564- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2565- Setting: `icon_theme`
2566- Default:
2567
2568```json [settings]
2569{
2570 "icon_theme": {
2571 "mode": "system",
2572 "dark": "Zed (Default)",
2573 "light": "Zed (Default)"
2574 }
2575}
2576```
2577
2578### Mode
2579
2580- Description: Specify the icon theme mode.
2581- Setting: `mode`
2582- Default: `system`
2583
2584**Options**
2585
25861. Set the icon theme to dark mode
2587
2588```json [settings]
2589{
2590 "icon_theme": {
2591 "mode": "dark",
2592 "dark": "Zed (Default)",
2593 "light": "Zed (Default)"
2594 }
2595}
2596```
2597
25982. Set the icon theme to light mode
2599
2600```json [settings]
2601{
2602 "icon_theme": {
2603 "mode": "light",
2604 "dark": "Zed (Default)",
2605 "light": "Zed (Default)"
2606 }
2607}
2608```
2609
26103. Set the icon theme to system mode
2611
2612```json [settings]
2613{
2614 "icon_theme": {
2615 "mode": "system",
2616 "dark": "Zed (Default)",
2617 "light": "Zed (Default)"
2618 }
2619}
2620```
2621
2622### Dark
2623
2624- Description: The name of the dark icon theme.
2625- Setting: `dark`
2626- Default: `Zed (Default)`
2627
2628**Options**
2629
2630Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2631
2632### Light
2633
2634- Description: The name of the light icon theme.
2635- Setting: `light`
2636- Default: `Zed (Default)`
2637
2638**Options**
2639
2640Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2641
2642## Image Viewer
2643
2644- Description: Settings for image viewer functionality
2645- Setting: `image_viewer`
2646- Default:
2647
2648```json [settings]
2649{
2650 "image_viewer": {
2651 "unit": "binary"
2652 }
2653}
2654```
2655
2656**Options**
2657
2658### Unit
2659
2660- Description: The unit for image file sizes
2661- Setting: `unit`
2662- Default: `"binary"`
2663
2664**Options**
2665
26661. Use binary units (KiB, MiB):
2667
2668```json [settings]
2669{
2670 "image_viewer": {
2671 "unit": "binary"
2672 }
2673}
2674```
2675
26762. Use decimal units (KB, MB):
2677
2678```json [settings]
2679{
2680 "image_viewer": {
2681 "unit": "decimal"
2682 }
2683}
2684```
2685
2686## Inlay hints
2687
2688- Description: Configuration for displaying extra text with hints in the editor.
2689- Setting: `inlay_hints`
2690- Default:
2691
2692```json [settings]
2693{
2694 "inlay_hints": {
2695 "enabled": false,
2696 "show_type_hints": true,
2697 "show_parameter_hints": true,
2698 "show_other_hints": true,
2699 "show_background": false,
2700 "edit_debounce_ms": 700,
2701 "scroll_debounce_ms": 50,
2702 "toggle_on_modifiers_press": null
2703 }
2704}
2705```
2706
2707**Options**
2708
2709Inlay hints querying consists of two parts: editor (client) and LSP server.
2710With 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.
2711At 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.
2712
2713The following languages have inlay hints preconfigured by Zed:
2714
2715- [Go](https://docs.zed.dev/languages/go)
2716- [Rust](https://docs.zed.dev/languages/rust)
2717- [Svelte](https://docs.zed.dev/languages/svelte)
2718- [TypeScript](https://docs.zed.dev/languages/typescript)
2719
2720Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2721
2722Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2723Settings-related hint updates are not debounced.
2724
2725All possible config values for `toggle_on_modifiers_press` are:
2726
2727```json [settings]
2728{
2729 "inlay_hints": {
2730 "toggle_on_modifiers_press": {
2731 "control": true,
2732 "shift": true,
2733 "alt": true,
2734 "platform": true,
2735 "function": true
2736 }
2737 }
2738}
2739```
2740
2741Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2742
2743## Journal
2744
2745- Description: Configuration for the journal.
2746- Setting: `journal`
2747- Default:
2748
2749```json [settings]
2750{
2751 "journal": {
2752 "path": "~",
2753 "hour_format": "hour12"
2754 }
2755}
2756```
2757
2758### Path
2759
2760- 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).
2761- Setting: `path`
2762- Default: `~`
2763
2764**Options**
2765
2766`string` values
2767
2768### Hour Format
2769
2770- Description: The format to use for displaying hours in the journal.
2771- Setting: `hour_format`
2772- Default: `hour12`
2773
2774**Options**
2775
27761. 12-hour format:
2777
2778```json [settings]
2779{
2780 "journal": {
2781 "hour_format": "hour12"
2782 }
2783}
2784```
2785
27862. 24-hour format:
2787
2788```json [settings]
2789{
2790 "journal": {
2791 "hour_format": "hour24"
2792 }
2793}
2794```
2795
2796## JSX Tag Auto Close
2797
2798- Description: Whether to automatically close JSX tags
2799- Setting: `jsx_tag_auto_close`
2800- Default:
2801
2802```json [settings]
2803{
2804 "jsx_tag_auto_close": {
2805 "enabled": true
2806 }
2807}
2808```
2809
2810**Options**
2811
2812- `enabled`: Whether to enable automatic JSX tag closing
2813
2814## Languages
2815
2816- Description: Configuration for specific languages.
2817- Setting: `languages`
2818- Default: `null`
2819
2820**Options**
2821
2822To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2823
2824```json [settings]
2825{
2826 "languages": {
2827 "C": {
2828 "format_on_save": "off",
2829 "preferred_line_length": 64,
2830 "soft_wrap": "bounded"
2831 },
2832 "JSON": {
2833 "tab_size": 4
2834 }
2835 }
2836}
2837```
2838
2839The following settings can be overridden for each specific language:
2840
2841- [`enable_language_server`](#enable-language-server)
2842- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2843- [`line_ending`](#line-ending)
2844- [`format_on_save`](#format-on-save)
2845- [`formatter`](#formatter)
2846- [`hard_tabs`](#hard-tabs)
2847- [`preferred_line_length`](#preferred-line-length)
2848- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2849- [`semantic_tokens`](#semantic-tokens)
2850- [`show_edit_predictions`](#show-edit-predictions)
2851- [`show_whitespaces`](#show-whitespaces)
2852- [`whitespace_map`](#whitespace-map)
2853- [`soft_wrap`](#soft-wrap)
2854- [`tab_size`](#tab-size)
2855- [`use_autoclose`](#use-autoclose)
2856- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2857
2858These values take in the same options as the root-level settings with the same name.
2859
2860### Document Symbols
2861
2862- Description: Controls the source of document symbols used for outlines and breadcrumbs.
2863- Setting: `document_symbols`
2864- Default: `off`
2865
2866**Options**
2867
2868- `"off"`: Use tree-sitter queries to compute document symbols (default)
2869- `"on"`: Use the language server's `textDocument/documentSymbol` LSP response. When enabled, tree-sitter is not used for document symbols
2870
2871LSP 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.
2872
2873Example:
2874
2875```json [settings]
2876{
2877 "languages": {
2878 "TypeScript": {
2879 "document_symbols": "on"
2880 }
2881 }
2882}
2883```
2884
2885## Language Models
2886
2887- Description: Configuration for language model providers
2888- Setting: `language_models`
2889- Default:
2890
2891```json [settings]
2892{
2893 "language_models": {
2894 "anthropic": {
2895 "api_url": "https://api.anthropic.com"
2896 },
2897 "google": {
2898 "api_url": "https://generativelanguage.googleapis.com"
2899 },
2900 "ollama": {
2901 "api_url": "http://localhost:11434"
2902 },
2903 "openai": {
2904 "api_url": "https://api.openai.com/v1"
2905 }
2906 }
2907}
2908```
2909
2910**Options**
2911
2912Configuration for various AI model providers including API URLs and authentication settings.
2913
2914## Line Indicator Format
2915
2916- Description: Format for line indicator in the status bar
2917- Setting: `line_indicator_format`
2918- Default: `"short"`
2919
2920**Options**
2921
29221. Short format:
2923
2924```json [settings]
2925{
2926 "line_indicator_format": "short"
2927}
2928```
2929
29302. Long format:
2931
2932```json [settings]
2933{
2934 "line_indicator_format": "long"
2935}
2936```
2937
2938## Linked Edits
2939
2940- 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.
2941- Setting: `linked_edits`
2942- Default: `true`
2943
2944**Options**
2945
2946`boolean` values
2947
2948## LSP Document Colors
2949
2950- Description: How to render LSP `textDocument/documentColor` colors in the editor
2951- Setting: `lsp_document_colors`
2952- Default: `inlay`
2953
2954**Options**
2955
29561. `inlay`: Render document colors as inlay hints near the color text.
29572. `background`: Draw a background behind the color text.
29583. `border`: Draw a border around the color text.
29594. `none`: Do not query and render document colors.
2960
2961## Max Tabs
2962
2963- Description: Maximum number of tabs to show in the tab bar
2964- Setting: `max_tabs`
2965- Default: `null`
2966
2967**Options**
2968
2969Positive `integer` values or `null` for unlimited tabs
2970
2971## Middle Click Paste (Linux only)
2972
2973- Description: Enable middle-click paste on Linux
2974- Setting: `middle_click_paste`
2975- Default: `true`
2976
2977**Options**
2978
2979`boolean` values
2980
2981## Multi Cursor Modifier
2982
2983- 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.
2984- Setting: `multi_cursor_modifier`
2985- Default: `alt`
2986
2987**Options**
2988
29891. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2990
2991```json [settings]
2992{
2993 "multi_cursor_modifier": "alt"
2994}
2995```
2996
29972. Maps `Control` on Linux and Windows and to `Command` on macOS:
2998
2999```json [settings]
3000{
3001 "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
3002}
3003```
3004
3005## Node
3006
3007- Description: Configuration for Node.js integration
3008- Setting: `node`
3009- Default:
3010
3011```json [settings]
3012{
3013 "node": {
3014 "ignore_system_version": false,
3015 "path": null,
3016 "npm_path": null
3017 }
3018}
3019```
3020
3021**Options**
3022
3023- `ignore_system_version`: Whether to ignore the system Node.js version
3024- `path`: Custom path to Node.js binary
3025- `npm_path`: Custom path to npm binary
3026
3027## Network Proxy
3028
3029- Description: Configure a network proxy for Zed.
3030- Setting: `proxy`
3031- Default: `null`
3032
3033**Options**
3034
3035The proxy setting must contain a URL to the proxy.
3036
3037The following URI schemes are supported:
3038
3039- `http`
3040- `https`
3041- `socks4` - SOCKS4 proxy with local DNS
3042- `socks4a` - SOCKS4 proxy with remote DNS
3043- `socks5` - SOCKS5 proxy with local DNS
3044- `socks5h` - SOCKS5 proxy with remote DNS
3045
3046`http` will be used when no scheme is specified.
3047
3048By 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`.
3049
3050For example, to set an `http` proxy, add the following to your settings:
3051
3052```json [settings]
3053{
3054 "proxy": "http://127.0.0.1:10809"
3055}
3056```
3057
3058Or to set a `socks5` proxy:
3059
3060```json [settings]
3061{
3062 "proxy": "socks5h://localhost:10808"
3063}
3064```
3065
3066If 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.
3067
3068## On Last Window Closed
3069
3070- Description: What to do when the last window is closed
3071- Setting: `on_last_window_closed`
3072- Default: `"platform_default"`
3073
3074**Options**
3075
30761. Use platform default behavior:
3077
3078```json [settings]
3079{
3080 "on_last_window_closed": "platform_default"
3081}
3082```
3083
30842. Always quit the application:
3085
3086```json [settings]
3087{
3088 "on_last_window_closed": "quit_app"
3089}
3090```
3091
3092## Profiles
3093
3094- Description: Configuration profiles that can be temporarily applied on top of existing settings or Zed's defaults.
3095- Setting: `profiles`
3096- Default: `{}`
3097
3098**Options**
3099
3100Each profile is an object with the following optional fields:
3101
3102- `base`: What settings to start from before applying the profile's overrides.
3103 - `"user"` (default): Apply on top of your current user settings.
3104 - `"default"`: Apply on top of Zed's default settings, ignoring user customizations.
3105- `settings`: The settings overrides for this profile.
3106
3107Examples:
3108
3109```json [settings]
3110{
3111 "profiles": {
3112 "Presentation": {
3113 "settings": {
3114 "buffer_font_size": 20,
3115 "ui_font_size": 18,
3116 "theme": "One Light"
3117 }
3118 },
3119 "Clean Slate": {
3120 "base": "default",
3121 "settings": {
3122 "theme": "Ayu Dark"
3123 }
3124 }
3125 }
3126}
3127```
3128
3129## Preview tabs
3130
3131- Description:
3132 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. \
3133 There are several ways to convert a preview tab into a regular tab:
3134
3135 - Double-clicking on the file
3136 - Double-clicking on the tab header
3137 - Using the {#action project_panel::OpenPermanent} action
3138 - Editing the file
3139 - Dragging the file to a different pane
3140
3141- Setting: `preview_tabs`
3142- Default:
3143
3144```json [settings]
3145{
3146 "preview_tabs": {
3147 "enabled": true,
3148 "enable_preview_from_project_panel": true,
3149 "enable_preview_from_file_finder": false,
3150 "enable_preview_from_multibuffer": true,
3151 "enable_preview_multibuffer_from_code_navigation": false,
3152 "enable_preview_file_from_code_navigation": true,
3153 "enable_keep_preview_on_code_navigation": false
3154 }
3155}
3156```
3157
3158### Enable preview from project panel
3159
3160- Description: Determines whether to open files in preview mode when opened from the project panel with a single click.
3161- Setting: `enable_preview_from_project_panel`
3162- Default: `true`
3163
3164**Options**
3165
3166`boolean` values
3167
3168### Enable preview from file finder
3169
3170- Description: Determines whether to open files in preview mode when selected from the file finder.
3171- Setting: `enable_preview_from_file_finder`
3172- Default: `false`
3173
3174**Options**
3175
3176`boolean` values
3177
3178### Enable preview from multibuffer
3179
3180- Description: Determines whether to open files in preview mode when opened from a multibuffer.
3181- Setting: `enable_preview_from_multibuffer`
3182- Default: `true`
3183
3184**Options**
3185
3186`boolean` values
3187
3188### Enable preview multibuffer from code navigation
3189
3190- Description: Determines whether to open tabs in preview mode when code navigation is used to open a multibuffer.
3191- Setting: `enable_preview_multibuffer_from_code_navigation`
3192- Default: `false`
3193
3194**Options**
3195
3196`boolean` values
3197
3198### Enable preview file from code navigation
3199
3200- Description: Determines whether to open tabs in preview mode when code navigation is used to open a single file.
3201- Setting: `enable_preview_file_from_code_navigation`
3202- Default: `true`
3203
3204**Options**
3205
3206`boolean` values
3207
3208### Enable keep preview on code navigation
3209
3210- 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.
3211- Setting: `enable_keep_preview_on_code_navigation`
3212- Default: `false`
3213
3214**Options**
3215
3216`boolean` values
3217
3218## File Finder
3219
3220### File Icons
3221
3222- Description: Whether to show file icons in the file finder.
3223- Setting: `file_icons`
3224- Default: `true`
3225
3226### Modal Max Width
3227
3228- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
3229- Setting: `modal_max_width`
3230- Default: `small`
3231
3232### Skip Focus For Active In Search
3233
3234- Description: Determines whether the file finder should skip focus for the active file in search results.
3235- Setting: `skip_focus_for_active_in_search`
3236- Default: `true`
3237
3238## Pane Split Direction Horizontal
3239
3240- Description: The direction that you want to split panes horizontally
3241- Setting: `pane_split_direction_horizontal`
3242- Default: `"up"`
3243
3244**Options**
3245
32461. Split upward:
3247
3248```json [settings]
3249{
3250 "pane_split_direction_horizontal": "up"
3251}
3252```
3253
32542. Split downward:
3255
3256```json [settings]
3257{
3258 "pane_split_direction_horizontal": "down"
3259}
3260```
3261
3262## Pane Split Direction Vertical
3263
3264- Description: The direction that you want to split panes vertically
3265- Setting: `pane_split_direction_vertical`
3266- Default: `"left"`
3267
3268**Options**
3269
32701. Split to the left:
3271
3272```json [settings]
3273{
3274 "pane_split_direction_vertical": "left"
3275}
3276```
3277
32782. Split to the right:
3279
3280```json [settings]
3281{
3282 "pane_split_direction_vertical": "right"
3283}
3284```
3285
3286## Preferred Line Length
3287
3288- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
3289- Setting: `preferred_line_length`
3290- Default: `80`
3291
3292**Options**
3293
3294`integer` values
3295
3296## Private Files
3297
3298- Description: Globs to match against file paths to determine if a file is private
3299- Setting: `private_files`
3300- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
3301
3302**Options**
3303
3304List of `string` glob patterns
3305
3306## Projects Online By Default
3307
3308- Description: Whether or not to show the online projects view by default.
3309- Setting: `projects_online_by_default`
3310- Default: `true`
3311
3312**Options**
3313
3314`boolean` values
3315
3316## Read SSH Config
3317
3318- Description: Whether to read SSH configuration files
3319- Setting: `read_ssh_config`
3320- Default: `true`
3321
3322**Options**
3323
3324`boolean` values
3325
3326## Redact Private Values
3327
3328- Description: Hide the values of variables from visual display in private files
3329- Setting: `redact_private_values`
3330- Default: `false`
3331
3332**Options**
3333
3334`boolean` values
3335
3336## Relative Line Numbers
3337
3338- Description: Whether to show relative line numbers in the gutter
3339- Setting: `relative_line_numbers`
3340- Default: `"disabled"`
3341
3342**Options**
3343
33441. Show relative line numbers in the gutter whilst counting wrapped lines as one line:
3345
3346```json [settings]
3347{
3348 "relative_line_numbers": "enabled"
3349}
3350```
3351
33522. Show relative line numbers in the gutter, including wrapped lines in the counting:
3353
3354```json [settings]
3355{
3356 "relative_line_numbers": "wrapped"
3357}
3358```
3359
33602. Do not use relative line numbers:
3361
3362```json [settings]
3363{
3364 "relative_line_numbers": "disabled"
3365}
3366```
3367
3368## Remove Trailing Whitespace On Save
3369
3370- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
3371- Setting: `remove_trailing_whitespace_on_save`
3372- Default: `true`
3373
3374**Options**
3375
3376`boolean` values
3377
3378## Resize All Panels In Dock
3379
3380- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
3381- Setting: `resize_all_panels_in_dock`
3382- Default: `["left"]`
3383
3384**Options**
3385
3386List of strings containing any combination of:
3387
3388- `"left"`: Resize left dock panels together
3389- `"right"`: Resize right dock panels together
3390- `"bottom"`: Resize bottom dock panels together
3391
3392## Restore on File Reopen
3393
3394- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
3395- Setting: `restore_on_file_reopen`
3396- Default: `true`
3397
3398**Options**
3399
3400`boolean` values
3401
3402## Restore on Startup
3403
3404- Description: Controls session restoration on startup.
3405- Setting: `restore_on_startup`
3406- Default: `last_session`
3407
3408**Options**
3409
34101. Restore all workspaces that were open when quitting Zed:
3411
3412```json [settings]
3413{
3414 "restore_on_startup": "last_session"
3415}
3416```
3417
34182. Restore the workspace that was closed last:
3419
3420```json [settings]
3421{
3422 "restore_on_startup": "last_workspace"
3423}
3424```
3425
34263. Always start with an empty editor:
3427
3428```json [settings]
3429{
3430 "restore_on_startup": "empty_tab"
3431}
3432```
3433
34344. Always start with the welcome launchpad:
3435
3436```json [settings]
3437{
3438 "restore_on_startup": "launchpad"
3439}
3440```
3441
3442## Scroll Beyond Last Line
3443
3444- Description: Whether the editor will scroll beyond the last line
3445- Setting: `scroll_beyond_last_line`
3446- Default: `"one_page"`
3447
3448**Options**
3449
34501. Scroll one page beyond the last line by one page:
3451
3452```json [settings]
3453{
3454 "scroll_beyond_last_line": "one_page"
3455}
3456```
3457
34582. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3459
3460```json [settings]
3461{
3462 "scroll_beyond_last_line": "vertical_scroll_margin"
3463}
3464```
3465
34663. The editor will not scroll beyond the last line:
3467
3468```json [settings]
3469{
3470 "scroll_beyond_last_line": "off"
3471}
3472```
3473
3474**Options**
3475
3476`boolean` values
3477
3478## Scroll Sensitivity
3479
3480- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3481- Setting: `scroll_sensitivity`
3482- Default: `1.0`
3483
3484**Options**
3485
3486Positive `float` values
3487
3488### Mouse Wheel Zoom
3489
3490- 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).
3491- Setting: `mouse_wheel_zoom`
3492- Default: `false`
3493
3494**Options**
3495
3496`boolean` values
3497
3498### Fast Scroll Sensitivity
3499
3500- 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.
3501- Setting: `fast_scroll_sensitivity`
3502- Default: `4.0`
3503
3504**Options**
3505
3506Positive `float` values
3507
3508### Horizontal Scroll Margin
3509
3510- Description: The number of characters to keep on either side when scrolling with the mouse
3511- Setting: `horizontal_scroll_margin`
3512- Default: `5`
3513
3514**Options**
3515
3516Non-negative `integer` values
3517
3518### Vertical Scroll Margin
3519
3520- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3521- Setting: `vertical_scroll_margin`
3522- Default: `3`
3523
3524**Options**
3525
3526Non-negative `integer` values
3527
3528## Search
3529
3530- Description: Search options to enable by default when opening new project and buffer searches.
3531- Setting: `search`
3532- Default:
3533
3534```json [settings]
3535{
3536 "search": {
3537 "button": true,
3538 "whole_word": false,
3539 "case_sensitive": false,
3540 "include_ignored": false,
3541 "regex": false,
3542 "center_on_match": false
3543 }
3544}
3545```
3546
3547### Button
3548
3549- Description: Whether to show the project search button in the status bar.
3550- Setting: `button`
3551- Default: `true`
3552
3553### Whole Word
3554
3555- Description: Whether to only match on whole words.
3556- Setting: `whole_word`
3557- Default: `false`
3558
3559### Case Sensitive
3560
3561- Description: Whether to match case sensitively. This setting affects both
3562 searches and editor actions like "Select Next Occurrence", "Select Previous
3563 Occurrence", and "Select All Occurrences".
3564- Setting: `case_sensitive`
3565- Default: `false`
3566
3567### Include Ignore
3568
3569- Description: Whether to include gitignored files in search results.
3570- Setting: `include_ignored`
3571- Default: `false`
3572
3573### Regex
3574
3575- Description: Whether to interpret the search query as a regular expression.
3576- Setting: `regex`
3577- Default: `false`
3578
3579### Center On Match
3580
3581- Description: Whether to center the cursor on each search match when navigating.
3582- Setting: `center_on_match`
3583- Default: `false`
3584
3585## Search Wrap
3586
3587- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3588- Setting: `search_wrap`
3589- Default: `true`
3590
3591## Seed Search Query From Cursor
3592
3593- Description: When to populate a new search's query based on the text under the cursor.
3594- Setting: `seed_search_query_from_cursor`
3595- Default: `always`
3596
3597**Options**
3598
35991. `always` always populate the search query with the word under the cursor
36002. `selection` only populate the search query when there is text selected
36013. `never` never populate the search query
3602
3603## Semantic Tokens
3604
3605- Description: Controls how semantic tokens from language servers are used for syntax highlighting.
3606- Setting: `semantic_tokens`
3607- Default: `off`
3608
3609**Options**
3610
36111. `off`: Do not request semantic tokens from language servers.
36122. `combined`: Use LSP semantic tokens together with tree-sitter highlighting.
36133. `full`: Use LSP semantic tokens exclusively, replacing tree-sitter highlighting.
3614
3615To enable semantic tokens globally:
3616
3617```json [settings]
3618{
3619 "semantic_tokens": "combined"
3620}
3621```
3622
3623To enable semantic tokens for a specific language:
3624
3625```json [settings]
3626{
3627 "languages": {
3628 "Rust": {
3629 "semantic_tokens": "full"
3630 }
3631 }
3632}
3633```
3634
3635May require language server restart to properly apply.
3636
3637## LSP Folding Ranges
3638
3639- 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.
3640- Setting: `document_folding_ranges`
3641- Default: `off`
3642
3643**Options**
3644
36451. `off`: Use tree-sitter and indent-based folding.
36462. `on`: Use LSP folding wherever possible, falling back to tree-sitter and indent-based folding when no results were returned by the server.
3647
3648To enable LSP folding ranges globally:
3649
3650```json [settings]
3651{
3652 "document_folding_ranges": "on"
3653}
3654```
3655
3656To enable LSP folding ranges for a specific language:
3657
3658```json [settings]
3659{
3660 "languages": {
3661 "Rust": {
3662 "document_folding_ranges": "on"
3663 }
3664 }
3665}
3666```
3667
3668## LSP Document Symbols
3669
3670- 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.
3671- Setting: `document_symbols`
3672- Default: `off`
3673
3674**Options**
3675
36761. `off`: Use tree-sitter queries to compute document symbols.
36772. `on`: Use the language server's `textDocument/documentSymbol` LSP response. When enabled, tree-sitter is not used for document symbols.
3678
3679To enable LSP document symbols globally:
3680
3681```json [settings]
3682{
3683 "document_symbols": "on"
3684}
3685```
3686
3687To enable LSP document symbols for a specific language:
3688
3689```json [settings]
3690{
3691 "languages": {
3692 "Rust": {
3693 "document_symbols": "on"
3694 }
3695 }
3696}
3697```
3698
3699## Use Smartcase Search
3700
3701- 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. \
3702 This applies to both in-file searches and project-wide searches.
3703- Setting: `use_smartcase_search`
3704- Default: `false`
3705
3706**Options**
3707
3708`boolean` values
3709
3710Examples:
3711
3712- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3713- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3714
3715## Show Call Status Icon
3716
3717- Description: Whether or not to show the call status icon in the status bar.
3718- Setting: `show_call_status_icon`
3719- Default: `true`
3720
3721**Options**
3722
3723`boolean` values
3724
3725## Completions
3726
3727- Description: Controls how completions are processed for this language.
3728- Setting: `completions`
3729- Default:
3730
3731```json [settings]
3732{
3733 "completions": {
3734 "words": "fallback",
3735 "words_min_length": 3,
3736 "lsp": true,
3737 "lsp_fetch_timeout_ms": 0,
3738 "lsp_insert_mode": "replace_suffix"
3739 }
3740}
3741```
3742
3743### Words
3744
3745- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3746- Setting: `words`
3747- Default: `fallback`
3748
3749**Options**
3750
37511. `enabled` - Always fetch document's words for completions along with LSP completions
37522. `fallback` - Only if LSP response errors or times out, use document's words to show completions
37533. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3754
3755### Min Words Query Length
3756
3757- Description: Minimum number of characters required to automatically trigger word-based completions.
3758 Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3759- Setting: `words_min_length`
3760- Default: `3`
3761
3762**Options**
3763
3764Positive integer values
3765
3766### LSP
3767
3768- Description: Whether to fetch LSP completions or not.
3769- Setting: `lsp`
3770- Default: `true`
3771
3772**Options**
3773
3774`boolean` values
3775
3776### LSP Fetch Timeout (ms)
3777
3778- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3779- Setting: `lsp_fetch_timeout_ms`
3780- Default: `0`
3781
3782**Options**
3783
3784`integer` values representing milliseconds
3785
3786### LSP Insert Mode
3787
3788- Description: Controls what range to replace when accepting LSP completions.
3789- Setting: `lsp_insert_mode`
3790- Default: `replace_suffix`
3791
3792**Options**
3793
37941. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
37952. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
37963. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
37974. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3798
3799## Show Completions On Input
3800
3801- Description: Whether or not to show completions as you type.
3802- Setting: `show_completions_on_input`
3803- Default: `true`
3804
3805**Options**
3806
3807`boolean` values
3808
3809## Show Completion Documentation
3810
3811- Description: Whether to display inline and alongside documentation for items in the completions menu.
3812- Setting: `show_completion_documentation`
3813- Default: `true`
3814
3815**Options**
3816
3817`boolean` values
3818
3819## Show Edit Predictions
3820
3821- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3822- Setting: `show_edit_predictions`
3823- Default: `true`
3824
3825**Options**
3826
3827`boolean` values
3828
3829## Show Whitespaces
3830
3831- Description: Whether or not to render whitespace characters in the editor.
3832- Setting: `show_whitespaces`
3833- Default: `selection`
3834
3835**Options**
3836
38371. `all`
38382. `selection`
38393. `none`
38404. `boundary`
3841
3842## Whitespace Map
3843
3844- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
3845- Setting: `whitespace_map`
3846- Default:
3847
3848```json [settings]
3849{
3850 "whitespace_map": {
3851 "space": "β’",
3852 "tab": "β"
3853 }
3854}
3855```
3856
3857## Soft Wrap
3858
3859- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3860- Setting: `soft_wrap`
3861- Default: `none`
3862
3863**Options**
3864
38651. `none` to avoid wrapping generally, unless the line is too long
38662. `prefer_line` (deprecated, same as `none`)
38673. `editor_width` to wrap lines that overflow the editor width
38684. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
38695. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3870
3871## Show Wrap Guides
3872
3873- 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.
3874- Setting: `show_wrap_guides`
3875- Default: `true`
3876
3877**Options**
3878
3879`boolean` values
3880
3881## Use On Type Format
3882
3883- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3884- Setting: `use_on_type_format`
3885- Default: `true`
3886
3887**Options**
3888
3889`boolean` values
3890
3891## Use Auto Surround
3892
3893- 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 ().
3894- Setting: `use_auto_surround`
3895- Default: `true`
3896
3897**Options**
3898
3899`boolean` values
3900
3901## Use System Path Prompts
3902
3903- 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.
3904- Setting: `use_system_path_prompts`
3905- Default: `true`
3906
3907**Options**
3908
3909`boolean` values
3910
3911## Use System Prompts
3912
3913- 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.
3914- Setting: `use_system_prompts`
3915- Default: `true`
3916
3917**Options**
3918
3919`boolean` values
3920
3921## Wrap Guides (Vertical Rulers)
3922
3923- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3924- Setting: `wrap_guides`
3925- Default: []
3926
3927**Options**
3928
3929List of `integer` column numbers
3930
3931## Tab Size
3932
3933- Description: The number of spaces to use for each tab character.
3934- Setting: `tab_size`
3935- Default: `4`
3936
3937**Options**
3938
3939`integer` values
3940
3941## Tasks
3942
3943- Description: Configuration for tasks that can be run within Zed
3944- Setting: `tasks`
3945- Default:
3946
3947```json [settings]
3948{
3949 "tasks": {
3950 "variables": {},
3951 "enabled": true,
3952 "prefer_lsp": false
3953 }
3954}
3955```
3956
3957**Options**
3958
3959- `variables`: Custom variables for task configuration
3960- `enabled`: Whether tasks are enabled
3961- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3962
3963## Telemetry
3964
3965- Description: Control what info is collected by Zed.
3966- Setting: `telemetry`
3967- Default:
3968
3969```json [settings]
3970{
3971 "telemetry": {
3972 "diagnostics": true,
3973 "metrics": true
3974 }
3975}
3976```
3977
3978**Options**
3979
3980### Diagnostics
3981
3982- Description: Setting for sending debug-related data, such as crash reports.
3983- Setting: `diagnostics`
3984- Default: `true`
3985
3986**Options**
3987
3988`boolean` values
3989
3990### Metrics
3991
3992- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3993- Setting: `metrics`
3994- Default: `true`
3995
3996**Options**
3997
3998`boolean` values
3999
4000## Terminal
4001
4002- Description: Configuration for the terminal.
4003- Setting: `terminal`
4004- Default:
4005
4006```json [settings]
4007{
4008 "terminal": {
4009 "alternate_scroll": "off",
4010 "blinking": "terminal_controlled",
4011 "copy_on_select": false,
4012 "keep_selection_on_copy": true,
4013 "dock": "bottom",
4014 "default_width": 640,
4015 "default_height": 320,
4016 "detect_venv": {
4017 "on": {
4018 "directories": [".env", "env", ".venv", "venv"],
4019 "activate_script": "default"
4020 }
4021 },
4022 "env": {},
4023 "font_family": null,
4024 "font_features": null,
4025 "font_size": null,
4026 "line_height": "comfortable",
4027 "minimum_contrast": 45,
4028 "option_as_meta": false,
4029 "button": true,
4030 "shell": "system",
4031 "scroll_multiplier": 3.0,
4032 "toolbar": {
4033 "breadcrumbs": false
4034 },
4035 "working_directory": "current_project_directory",
4036 "scrollbar": {
4037 "show": null
4038 }
4039 }
4040}
4041```
4042
4043### Terminal: Dock
4044
4045- Description: Control the position of the dock
4046- Setting: `dock`
4047- Default: `bottom`
4048
4049**Options**
4050
4051`"bottom"`, `"left"` or `"right"`
4052
4053### Terminal: Alternate Scroll
4054
4055- 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.
4056- Setting: `alternate_scroll`
4057- Default: `off`
4058
4059**Options**
4060
40611. Default alternate scroll mode to off
4062
4063```json [settings]
4064{
4065 "terminal": {
4066 "alternate_scroll": "off"
4067 }
4068}
4069```
4070
40712. Default alternate scroll mode to on
4072
4073```json [settings]
4074{
4075 "terminal": {
4076 "alternate_scroll": "on"
4077 }
4078}
4079```
4080
4081### Terminal: Blinking
4082
4083- Description: Set the cursor blinking behavior in the terminal
4084- Setting: `blinking`
4085- Default: `terminal_controlled`
4086
4087**Options**
4088
40891. Never blink the cursor, ignore the terminal mode
4090
4091```json [settings]
4092{
4093 "terminal": {
4094 "blinking": "off"
4095 }
4096}
4097```
4098
40992. Default the cursor blink to off, but allow the terminal to turn blinking on
4100
4101```json [settings]
4102{
4103 "terminal": {
4104 "blinking": "terminal_controlled"
4105 }
4106}
4107```
4108
41093. Always blink the cursor, ignore the terminal mode
4110
4111```json [settings]
4112{
4113 "terminal": {
4114 "blinking": "on"
4115 }
4116}
4117```
4118
4119### Terminal: Copy On Select
4120
4121- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
4122- Setting: `copy_on_select`
4123- Default: `false`
4124
4125**Options**
4126
4127`boolean` values
4128
4129**Example**
4130
4131```json [settings]
4132{
4133 "terminal": {
4134 "copy_on_select": true
4135 }
4136}
4137```
4138
4139### Terminal: Cursor Shape
4140
4141- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
4142- Setting: `cursor_shape`
4143- Default: `null` (defaults to block)
4144
4145**Options**
4146
41471. A block that surrounds the following character
4148
4149```json [settings]
4150{
4151 "terminal": {
4152 "cursor_shape": "block"
4153 }
4154}
4155```
4156
41572. A vertical bar
4158
4159```json [settings]
4160{
4161 "terminal": {
4162 "cursor_shape": "bar"
4163 }
4164}
4165```
4166
41673. An underline / underscore that runs along the following character
4168
4169```json [settings]
4170{
4171 "terminal": {
4172 "cursor_shape": "underline"
4173 }
4174}
4175```
4176
41774. A box drawn around the following character
4178
4179```json [settings]
4180{
4181 "terminal": {
4182 "cursor_shape": "hollow"
4183 }
4184}
4185```
4186
4187### Terminal: Keep Selection On Copy
4188
4189- Description: Whether or not to keep the selection in the terminal after copying text.
4190- Setting: `keep_selection_on_copy`
4191- Default: `true`
4192
4193**Options**
4194
4195`boolean` values
4196
4197**Example**
4198
4199```json [settings]
4200{
4201 "terminal": {
4202 "keep_selection_on_copy": false
4203 }
4204}
4205```
4206
4207### Terminal: Env
4208
4209- 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
4210- Setting: `env`
4211- Default: `{}`
4212
4213**Example**
4214
4215```json [settings]
4216{
4217 "terminal": {
4218 "env": {
4219 "ZED": "1",
4220 "KEY": "value1:value2"
4221 }
4222 }
4223}
4224```
4225
4226### Terminal: Font Size
4227
4228- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
4229- Setting: `font_size`
4230- Default: `null`
4231
4232**Options**
4233
4234`integer` values
4235
4236```json [settings]
4237{
4238 "terminal": {
4239 "font_size": 15
4240 }
4241}
4242```
4243
4244### Terminal: Font Family
4245
4246- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
4247- Setting: `font_family`
4248- Default: `null`
4249
4250**Options**
4251
4252The name of any font family installed on the user's system
4253
4254```json [settings]
4255{
4256 "terminal": {
4257 "font_family": "Berkeley Mono"
4258 }
4259}
4260```
4261
4262### Terminal: Font Features
4263
4264- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
4265- Setting: `font_features`
4266- Default: `null`
4267- Platform: macOS and Windows.
4268
4269**Options**
4270
4271See Buffer Font Features
4272
4273```json [settings]
4274{
4275 "terminal": {
4276 "font_features": {
4277 "calt": false
4278 // See Buffer Font Features for more features
4279 }
4280 }
4281}
4282```
4283
4284### Terminal: Line Height
4285
4286- Description: Set the terminal's line height.
4287- Setting: `line_height`
4288- Default: `standard`
4289
4290**Options**
4291
42921. Use a line height that's `comfortable` for reading, 1.618.
4293
4294```json [settings]
4295{
4296 "terminal": {
4297 "line_height": "comfortable"
4298 }
4299}
4300```
4301
43022. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
4303
4304```json [settings]
4305{
4306 "terminal": {
4307 "line_height": "standard"
4308 }
4309}
4310```
4311
43123. Use a custom line height.
4313
4314```json [settings]
4315{
4316 "terminal": {
4317 "line_height": {
4318 "custom": 2
4319 }
4320 }
4321}
4322```
4323
4324### Terminal: Minimum Contrast
4325
4326- 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.
4327- Setting: `minimum_contrast`
4328- Default: `45`
4329
4330**Options**
4331
4332`integer` values from 0 to 106. Common recommended values:
4333
4334- `0`: No contrast adjustment
4335- `45`: Minimum for large fluent text (default)
4336- `60`: Minimum for other content text
4337- `75`: Minimum for body text
4338- `90`: Preferred for body text
4339
4340```json [settings]
4341{
4342 "terminal": {
4343 "minimum_contrast": 45
4344 }
4345}
4346```
4347
4348### Terminal: Option As Meta
4349
4350- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
4351- Setting: `option_as_meta`
4352- Default: `false`
4353
4354**Options**
4355
4356`boolean` values
4357
4358```json [settings]
4359{
4360 "terminal": {
4361 "option_as_meta": true
4362 }
4363}
4364```
4365
4366### Terminal: Shell
4367
4368- Description: What shell to use when launching the terminal.
4369- Setting: `shell`
4370- Default: `system`
4371
4372**Options**
4373
43741. Use the system's default terminal configuration (usually the `/etc/passwd` file).
4375
4376```json [settings]
4377{
4378 "terminal": {
4379 "shell": "system"
4380 }
4381}
4382```
4383
43842. A program to launch:
4385
4386```json [settings]
4387{
4388 "terminal": {
4389 "shell": {
4390 "program": "sh"
4391 }
4392 }
4393}
4394```
4395
43963. A program with arguments:
4397
4398```json [settings]
4399{
4400 "terminal": {
4401 "shell": {
4402 "with_arguments": {
4403 "program": "/bin/bash",
4404 "args": ["--login"]
4405 }
4406 }
4407 }
4408}
4409```
4410
4411## Terminal: Detect Virtual Environments {#terminal-detect_venv}
4412
4413- 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.
4414- Setting: `detect_venv`
4415- Default:
4416
4417```json [settings]
4418{
4419 "terminal": {
4420 "detect_venv": {
4421 "on": {
4422 // Default directories to search for virtual environments, relative
4423 // to the current working directory. We recommend overriding this
4424 // in your project's settings, rather than globally.
4425 "directories": [".env", "env", ".venv", "venv"],
4426 // Can also be `csh`, `fish`, and `nushell`
4427 "activate_script": "default"
4428 }
4429 }
4430 }
4431}
4432```
4433
4434Disable with:
4435
4436```json [settings]
4437{
4438 "terminal": {
4439 "detect_venv": "off"
4440 }
4441}
4442```
4443
4444### Terminal: Scroll Multiplier
4445
4446- Description: The multiplier for scrolling speed in the terminal when using mouse wheel or trackpad.
4447- Setting: `scroll_multiplier`
4448- Default: `1.0`
4449
4450**Options**
4451
4452Positive floating point values. Values less than or equal to 0 will be clamped to a minimum of 0.01.
4453
4454**Example**
4455
4456```json
4457{
4458 "terminal": {
4459 "scroll_multiplier": 5.0
4460 }
4461}
4462```
4463
4464## Terminal: Toolbar
4465
4466- Description: Whether or not to show various elements in the terminal toolbar.
4467- Setting: `toolbar`
4468- Default:
4469
4470```json [settings]
4471{
4472 "terminal": {
4473 "toolbar": {
4474 "breadcrumbs": false
4475 }
4476 }
4477}
4478```
4479
4480**Options**
4481
4482At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
4483
4484If the terminal title is empty, the breadcrumbs won't be shown.
4485
4486The shell running in the terminal needs to be configured to emit the title.
4487
4488Example command to set the title: `echo -e "\e]2;New Title\007";`
4489
4490### Terminal: Button
4491
4492- Description: Control to show or hide the terminal button in the status bar
4493- Setting: `button`
4494- Default: `true`
4495
4496**Options**
4497
4498`boolean` values
4499
4500```json [settings]
4501{
4502 "terminal": {
4503 "button": false
4504 }
4505}
4506```
4507
4508### Terminal: Working Directory
4509
4510- Description: What working directory to use when launching the terminal.
4511- Setting: `working_directory`
4512- Default: `"current_project_directory"`
4513
4514**Options**
4515
45161. Use the current file's directory, falling back to the project directory, then the first project in the workspace.
4517
4518```json [settings]
4519{
4520 "terminal": {
4521 "working_directory": "current_file_directory"
4522 }
4523}
4524```
4525
45262. Use the current file's project directory. Fallback to the first project directory strategy if unsuccessful.
4527
4528```json [settings]
4529{
4530 "terminal": {
4531 "working_directory": "current_project_directory"
4532 }
4533}
4534```
4535
45363. Use the first project in this workspace's directory. Fallback to using this platform's home directory.
4537
4538```json [settings]
4539{
4540 "terminal": {
4541 "working_directory": "first_project_directory"
4542 }
4543}
4544```
4545
45464. Always use this platform's home directory if it can be found.
4547
4548```json [settings]
4549{
4550 "terminal": {
4551 "working_directory": "always_home"
4552 }
4553}
4554```
4555
45565. 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.
4557
4558```json [settings]
4559{
4560 "terminal": {
4561 "working_directory": {
4562 "always": {
4563 "directory": "~/zed/projects/"
4564 }
4565 }
4566 }
4567}
4568```
4569
4570### Terminal: Path Hyperlink Regexes
4571
4572- 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).
4573- Setting: `path_hyperlink_regexes`
4574- Default:
4575
4576```json [settings]
4577{
4578 "terminal": {
4579 "path_hyperlink_regexes": [
4580 // Python-style diagnostics
4581 "File \"(?<path>[^\"]+)\", line (?<line>[0-9]+)",
4582 // Common path syntax with optional line, column, description, trailing punctuation, or
4583 // surrounding symbols or quotes
4584 [
4585 "(?x)",
4586 "# optionally starts with 0-2 opening prefix symbols",
4587 "[({\\[<]{0,2}",
4588 "# which may be followed by an opening quote",
4589 "(?<quote>[\"'`])?",
4590 "# `path` is the shortest sequence of any non-space character",
4591 "(?<link>(?<path>[^ ]+?",
4592 " # which may end with a line and optionally a column,",
4593 " (?<line_column>:+[0-9]+(:[0-9]+)?|:?\\([0-9]+([,:][0-9]+)?\\))?",
4594 "))",
4595 "# which must be followed by a matching quote",
4596 "(?(<quote>)\\k<quote>)",
4597 "# and optionally a single closing symbol",
4598 "[)}\\]>]?",
4599 "# if line/column matched, may be followed by a description",
4600 "(?(<line_column>):[^ 0-9][^ ]*)?",
4601 "# which may be followed by trailing punctuation",
4602 "[.,:)}\\]>]*",
4603 "# and always includes trailing whitespace or end of line",
4604 "([ ]+|$)"
4605 ]
4606 ]
4607 }
4608}
4609```
4610
4611### Terminal: Path Hyperlink Timeout (ms)
4612
4613- Description: Maximum time to search for a path hyperlink. When set to 0, path hyperlinks are disabled.
4614- Setting: `path_hyperlink_timeout_ms`
4615- Default: `1`
4616
4617## REPL
4618
4619- Description: Repl settings.
4620- Setting: `repl`
4621- Default:
4622
4623```json [settings]
4624{
4625 "repl": {
4626 // Maximum number of columns to keep in REPL's scrollback buffer.
4627 // Clamped with [20, 512] range.
4628 "max_columns": 128,
4629 // Maximum number of lines to keep in REPL's scrollback buffer.
4630 // Clamped with [4, 256] range.
4631 "max_lines": 32
4632 }
4633}
4634```
4635
4636## Theme
4637
4638- 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.
4639- Setting: `theme`
4640- Default: `One Dark`
4641
4642### Theme Object
4643
4644- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
4645- Setting: `theme`
4646- Default:
4647
4648```json [settings]
4649{
4650 "theme": {
4651 "mode": "system",
4652 "dark": "One Dark",
4653 "light": "One Light"
4654 }
4655}
4656```
4657
4658### Mode
4659
4660- Description: Specify theme mode.
4661- Setting: `mode`
4662- Default: `system`
4663
4664**Options**
4665
46661. Set the theme to dark mode
4667
4668```json [settings]
4669{
4670 "theme": {
4671 "mode": "dark",
4672 "dark": "One Dark",
4673 "light": "One Light"
4674 }
4675}
4676```
4677
46782. Set the theme to light mode
4679
4680```json [settings]
4681{
4682 "theme": {
4683 "mode": "light",
4684 "dark": "One Dark",
4685 "light": "One Light"
4686 }
4687}
4688```
4689
46903. Set the theme to system mode
4691
4692```json [settings]
4693{
4694 "theme": {
4695 "mode": "system",
4696 "dark": "One Dark",
4697 "light": "One Light"
4698 }
4699}
4700```
4701
4702### Dark
4703
4704- Description: The name of the dark Zed theme to use for the UI.
4705- Setting: `dark`
4706- Default: `One Dark`
4707
4708**Options**
4709
4710Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4711
4712### Light
4713
4714- Description: The name of the light Zed theme to use for the UI.
4715- Setting: `light`
4716- Default: `One Light`
4717
4718**Options**
4719
4720Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4721
4722## Title Bar
4723
4724- Description: Whether or not to show various elements in the title bar
4725- Setting: `title_bar`
4726- Default:
4727
4728```json [settings]
4729{
4730 "title_bar": {
4731 "show_branch_status_icon": false,
4732 "show_branch_name": true,
4733 "show_project_items": true,
4734 "show_onboarding_banner": true,
4735 "show_user_picture": true,
4736 "show_user_menu": true,
4737 "show_sign_in": true,
4738 "show_menus": false,
4739 "button_layout": "platform_default"
4740 }
4741}
4742```
4743
4744**Options**
4745
4746- `show_branch_status_icon`: Whether to show git status indicators on the branch icon in the titlebar
4747- `show_branch_name`: Whether to show the branch name button in the titlebar
4748- `show_project_items`: Whether to show the project host and name in the titlebar
4749- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4750- `show_user_picture`: Whether to show user picture in the titlebar
4751- `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.)
4752- `show_sign_in`: Whether to show the sign in button in the titlebar
4753- `show_menus`: Whether to show the menus in the titlebar
4754- `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"`
4755
4756## Vim
4757
4758- Description: Whether or not to enable vim mode.
4759- Setting: `vim_mode`
4760- Default: `false`
4761
4762## When Closing With No Tabs
4763
4764- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4765- Setting: `when_closing_with_no_tabs`
4766- Default: `"platform_default"`
4767
4768**Options**
4769
47701. Use platform default behavior:
4771
4772```json [settings]
4773{
4774 "when_closing_with_no_tabs": "platform_default"
4775}
4776```
4777
47782. Always close the window:
4779
4780```json [settings]
4781{
4782 "when_closing_with_no_tabs": "close_window"
4783}
4784```
4785
47863. Never close the window:
4787
4788```json [settings]
4789{
4790 "when_closing_with_no_tabs": "keep_window_open"
4791}
4792```
4793
4794## Project Panel
4795
4796- Description: Customize project panel
4797- Setting: `project_panel`
4798- Default:
4799
4800```json [settings]
4801{
4802 "project_panel": {
4803 "button": true,
4804 "default_width": 240,
4805 "dock": "left",
4806 "entry_spacing": "comfortable",
4807 "file_icons": true,
4808 "folder_icons": true,
4809 "git_status": true,
4810 "indent_size": 20,
4811 "auto_reveal_entries": true,
4812 "auto_fold_dirs": true,
4813 "bold_folder_labels": false,
4814 "drag_and_drop": true,
4815 "scrollbar": {
4816 "show": null,
4817 "horizontal_scroll": true
4818 },
4819 "sticky_scroll": true,
4820 "show_diagnostics": "all",
4821 "indent_guides": {
4822 "show": "always"
4823 },
4824 "sort_mode": "directories_first",
4825 "hide_root": false,
4826 "hide_hidden": false,
4827 "starts_open": true,
4828 "auto_open": {
4829 "on_create": true,
4830 "on_paste": true,
4831 "on_drop": true
4832 }
4833 }
4834}
4835```
4836
4837### Dock
4838
4839- Description: Control the position of the dock
4840- Setting: `dock`
4841- Default: `left`
4842
4843**Options**
4844
48451. Default dock position to left
4846
4847```json [settings]
4848{
4849 "project_panel": {
4850 "dock": "left"
4851 }
4852}
4853```
4854
48552. Default dock position to right
4856
4857```json [settings]
4858{
4859 "project_panel": {
4860 "dock": "right"
4861 }
4862}
4863```
4864
4865### Entry Spacing
4866
4867- Description: Spacing between worktree entries
4868- Setting: `entry_spacing`
4869- Default: `comfortable`
4870
4871**Options**
4872
48731. Comfortable entry spacing
4874
4875```json [settings]
4876{
4877 "project_panel": {
4878 "entry_spacing": "comfortable"
4879 }
4880}
4881```
4882
48832. Standard entry spacing
4884
4885```json [settings]
4886{
4887 "project_panel": {
4888 "entry_spacing": "standard"
4889 }
4890}
4891```
4892
4893### Git Status
4894
4895- Description: Indicates newly created and updated files
4896- Setting: `git_status`
4897- Default: `true`
4898
4899**Options**
4900
49011. Default enable git status
4902
4903```json [settings]
4904{
4905 "project_panel": {
4906 "git_status": true
4907 }
4908}
4909```
4910
49112. Default disable git status
4912
4913```json [settings]
4914{
4915 "project_panel": {
4916 "git_status": false
4917 }
4918}
4919```
4920
4921### Default Width
4922
4923- Description: Customize default width taken by project panel
4924- Setting: `default_width`
4925- Default: `240`
4926
4927**Options**
4928
4929`float` values
4930
4931### Auto Reveal Entries
4932
4933- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4934- Setting: `auto_reveal_entries`
4935- Default: `true`
4936
4937**Options**
4938
49391. Enable auto reveal entries
4940
4941```json [settings]
4942{
4943 "project_panel": {
4944 "auto_reveal_entries": true
4945 }
4946}
4947```
4948
49492. Disable auto reveal entries
4950
4951```json [settings]
4952{
4953 "project_panel": {
4954 "auto_reveal_entries": false
4955 }
4956}
4957```
4958
4959### Auto Fold Dirs
4960
4961- Description: Whether to fold directories automatically when directory has only one directory inside.
4962- Setting: `auto_fold_dirs`
4963- Default: `true`
4964
4965**Options**
4966
49671. Enable auto fold dirs
4968
4969```json [settings]
4970{
4971 "project_panel": {
4972 "auto_fold_dirs": true
4973 }
4974}
4975```
4976
49772. Disable auto fold dirs
4978
4979```json [settings]
4980{
4981 "project_panel": {
4982 "auto_fold_dirs": false
4983 }
4984}
4985```
4986
4987### Bold Folder Labels
4988
4989- Description: Whether to show folder names with bold text in the project panel.
4990- Setting: `bold_folder_labels`
4991- Default: `false`
4992
4993**Options**
4994
49951. Enable bold folder labels
4996
4997```json [settings]
4998{
4999 "project_panel": {
5000 "bold_folder_labels": true
5001 }
5002}
5003```
5004
50052. Disable bold folder labels
5006
5007```json [settings]
5008{
5009 "project_panel": {
5010 "bold_folder_labels": false
5011 }
5012}
5013```
5014
5015### Indent Size
5016
5017- Description: Amount of indentation (in pixels) for nested items.
5018- Setting: `indent_size`
5019- Default: `20`
5020
5021### Indent Guides: Show
5022
5023- Description: Whether to show indent guides in the project panel.
5024- Setting: `indent_guides`
5025- Default:
5026
5027```json [settings]
5028{
5029 "project_panel": {
5030 "indent_guides": {
5031 "show": "always"
5032 }
5033 }
5034}
5035```
5036
5037**Options**
5038
50391. Show indent guides in the project panel
5040
5041```json [settings]
5042{
5043 "project_panel": {
5044 "indent_guides": {
5045 "show": "always"
5046 }
5047 }
5048}
5049```
5050
50512. Hide indent guides in the project panel
5052
5053```json [settings]
5054{
5055 "project_panel": {
5056 "indent_guides": {
5057 "show": "never"
5058 }
5059 }
5060}
5061```
5062
5063### Scrollbar
5064
5065- Description: Scrollbar-related settings for the project panel.
5066- Setting: `scrollbar`
5067- Default:
5068
5069```json [settings]
5070{
5071 "project_panel": {
5072 "scrollbar": {
5073 "show": null,
5074 "horizontal_scroll": true
5075 }
5076 }
5077}
5078```
5079
5080**Options**
5081
5082- `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.
5083- `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.
5084
5085### Sort Mode
5086
5087- Description: Sort order for entries in the project panel
5088- Setting: `sort_mode`
5089- Default: `directories_first`
5090
5091**Options**
5092
50931. Show directories first, then files
5094
5095```json [settings]
5096{
5097 "project_panel": {
5098 "sort_mode": "directories_first"
5099 }
5100}
5101```
5102
51032. Mix directories and files together
5104
5105```json [settings]
5106{
5107 "project_panel": {
5108 "sort_mode": "mixed"
5109 }
5110}
5111```
5112
51133. Show files first, then directories
5114
5115```json [settings]
5116{
5117 "project_panel": {
5118 "sort_mode": "files_first"
5119 }
5120}
5121```
5122
5123### Sort Order
5124
5125- 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.
5126- Setting: `sort_order`
5127- Default: `default`
5128
5129**Options**
5130
51311. 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`).
5132
5133```json [settings]
5134{
5135 "project_panel": {
5136 "sort_order": "default"
5137 }
5138}
5139```
5140
51412. 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.
5142
5143```json [settings]
5144{
5145 "project_panel": {
5146 "sort_order": "upper"
5147 }
5148}
5149```
5150
51513. Lowercase names are grouped before uppercase names, with case-insensitive natural sort within each group. Dot-prefixed names sort before both groups.
5152
5153```json [settings]
5154{
5155 "project_panel": {
5156 "sort_order": "lower"
5157 }
5158}
5159```
5160
51614. 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`).
5162
5163```json [settings]
5164{
5165 "project_panel": {
5166 "sort_order": "unicode"
5167 }
5168}
5169```
5170
5171### Auto Open
5172
5173- Description: Control whether files are opened automatically after different creation flows in the project panel.
5174- Setting: `auto_open`
5175- Default:
5176
5177```json [settings]
5178{
5179 "project_panel": {
5180 "auto_open": {
5181 "on_create": true,
5182 "on_paste": true,
5183 "on_drop": true
5184 }
5185 }
5186}
5187```
5188
5189**Options**
5190
5191- `on_create`: Whether to automatically open newly created files in the editor.
5192- `on_paste`: Whether to automatically open files after pasting or duplicating them.
5193- `on_drop`: Whether to automatically open files dropped from external sources.
5194
5195## Agent
5196
5197Visit [the Configuration page](../ai/configuration.md) under the AI section to learn more about all the agent-related settings.
5198
5199## Collaboration Panel
5200
5201- Description: Customizations for the collaboration panel.
5202- Setting: `collaboration_panel`
5203- Default:
5204
5205```json [settings]
5206{
5207 "collaboration_panel": {
5208 "button": true,
5209 "dock": "left",
5210 "default_width": 240
5211 }
5212}
5213```
5214
5215**Options**
5216
5217- `button`: Whether to show the collaboration panel button in the status bar
5218- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
5219- `default_width`: Default width of the collaboration panel
5220
5221## Debugger
5222
5223- Description: Configuration for debugger panel and settings
5224- Setting: `debugger`
5225- Default:
5226
5227```json [settings]
5228{
5229 "debugger": {
5230 "stepping_granularity": "line",
5231 "save_breakpoints": true,
5232 "dock": "bottom",
5233 "button": true
5234 }
5235}
5236```
5237
5238See the [debugger page](../debugger.md) for more information about debugging support within Zed.
5239
5240## Git Panel
5241
5242- Description: Setting to customize the behavior of the git panel.
5243- Setting: `git_panel`
5244- Default:
5245
5246```json [settings]
5247{
5248 "git_panel": {
5249 "button": true,
5250 "dock": "left",
5251 "default_width": 360,
5252 "status_style": "icon",
5253 "fallback_branch_name": "main",
5254 "sort_by_path": false,
5255 "collapse_untracked_diff": false,
5256 "scrollbar": {
5257 "show": null
5258 },
5259 "starts_open": false
5260 }
5261}
5262```
5263
5264**Options**
5265
5266- `button`: Whether to show the git panel button in the status bar
5267- `dock`: Where to dock the git panel. Can be `left` or `right`
5268- `default_width`: Default width of the git panel
5269- `status_style`: How to display git status. Can be `label_color` or `icon`
5270- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
5271- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
5272- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
5273- `scrollbar`: When to show the scrollbar in the git panel
5274- `starts_open`: Whether the git panel should open on startup
5275
5276## Git Worktree Directory
5277
5278- Description: Directory where git worktrees are created, relative to the repository working directory.
5279- Setting: `git.worktree_directory`
5280- Default: `"../worktrees"`
5281
5282When 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/`.
5283
5284When the resolved directory is inside the project root, no extra component is added (it's already project-scoped).
5285
5286**Examples**:
5287
5288- `"../worktrees"` β `~/code/worktrees/<project>/` (default)
5289- `".git/zed-worktrees"` β `<project>/.git/zed-worktrees/`
5290- `"my-worktrees"` β `<project>/my-worktrees/`
5291
5292Trailing slashes are ignored.
5293
5294```json [settings]
5295{
5296 "git": {
5297 "worktree_directory": "../worktrees"
5298 }
5299}
5300```
5301
5302## Git Hosting Providers
5303
5304- Description: Register self-hosted GitHub, GitLab, or Bitbucket instances so commit hashes, issue references, and permalinks resolve to the right host.
5305- Setting: `git_hosting_providers`
5306- Default: `[]`
5307
5308**Options**
5309
5310Each entry accepts:
5311
5312- `provider`: One of `github`, `gitlab`, or `bitbucket`
5313- `name`: Display name for the instance
5314- `base_url`: Base URL, e.g. `https://git.example.corp`
5315
5316You can define these in user or project settings; project settings are merged on top of user settings.
5317
5318```json [settings]
5319{
5320 "git_hosting_providers": [
5321 {
5322 "provider": "github",
5323 "name": "BigCorp GitHub",
5324 "base_url": "https://git.example.corp"
5325 }
5326 ]
5327}
5328```
5329
5330## Outline Panel
5331
5332- Description: Customize outline Panel
5333- Setting: `outline_panel`
5334- Default:
5335
5336```json [settings]
5337{
5338 "outline_panel": {
5339 "button": true,
5340 "default_width": 300,
5341 "dock": "left",
5342 "file_icons": true,
5343 "folder_icons": true,
5344 "git_status": true,
5345 "indent_size": 20,
5346 "auto_reveal_entries": true,
5347 "auto_fold_dirs": true,
5348 "indent_guides": {
5349 "show": "always"
5350 },
5351 "scrollbar": {
5352 "show": null
5353 }
5354 }
5355}
5356```
5357
5358## Calls
5359
5360- Description: Customize behavior when participating in a call
5361- Setting: `calls`
5362- Default:
5363
5364```json [settings]
5365{
5366 "calls": {
5367 // Join calls with the microphone live by default
5368 "mute_on_join": false,
5369 // Share your project when you are the first to join a channel
5370 "share_on_join": false
5371 }
5372}
5373```
5374
5375## Colorize Brackets
5376
5377- Description: Whether to use tree-sitter bracket queries to detect and colorize the brackets in the editor (also known as "rainbow brackets").
5378- Setting: `colorize_brackets`
5379- Default: `false`
5380
5381**Options**
5382
5383`boolean` values
5384
5385The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
5386
5387## Unnecessary Code Fade
5388
5389- Description: How much to fade out unused code.
5390- Setting: `unnecessary_code_fade`
5391- Default: `0.3`
5392
5393**Options**
5394
5395Float values between `0.0` and `0.9`, where:
5396
5397- `0.0` means no fading (unused code looks the same as used code)
5398- `0.9` means maximum fading (unused code is very faint but still visible)
5399
5400**Example**
5401
5402```json [settings]
5403{
5404 "unnecessary_code_fade": 0.5
5405}
5406```
5407
5408## UI Font Family
5409
5410- Description: The name of the font to use for text in the UI.
5411- Setting: `ui_font_family`
5412- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
5413
5414**Options**
5415
5416The 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).
5417
5418## UI Font Features
5419
5420- Description: The OpenType features to enable for text in the UI.
5421- Setting: `ui_font_features`
5422- Default:
5423
5424```json [settings]
5425{
5426 "ui_font_features": {
5427 "calt": false
5428 }
5429}
5430```
5431
5432- Platform: macOS and Windows.
5433
5434**Options**
5435
5436Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
5437
5438For example, to disable font ligatures, add the following to your settings:
5439
5440```json [settings]
5441{
5442 "ui_font_features": {
5443 "calt": false
5444 }
5445}
5446```
5447
5448You can also set other OpenType features, like setting `cv01` to `7`:
5449
5450```json [settings]
5451{
5452 "ui_font_features": {
5453 "cv01": 7
5454 }
5455}
5456```
5457
5458## UI Font Fallbacks
5459
5460- Description: The font fallbacks to use for text in the UI.
5461- Setting: `ui_font_fallbacks`
5462- Default: `null`
5463- Platform: macOS and Windows.
5464
5465**Options**
5466
5467For example, to use `Nerd Font` as a fallback, add the following to your settings:
5468
5469```json [settings]
5470{
5471 "ui_font_fallbacks": ["Nerd Font"]
5472}
5473```
5474
5475## UI Font Size
5476
5477- Description: The default font size for text in the UI.
5478- Setting: `ui_font_size`
5479- Default: `16`
5480
5481**Options**
5482
5483`integer` values from `6` to `100` pixels (inclusive)
5484
5485## UI Font Weight
5486
5487- Description: The default font weight for text in the UI.
5488- Setting: `ui_font_weight`
5489- Default: `400`
5490
5491**Options**
5492
5493`integer` values between `100` and `900`
5494
5495## Settings Profiles
5496
5497- Description: Configure any number of settings profiles that are temporarily applied when selected from `settings profile selector: toggle`.
5498- Setting: `profiles`
5499- Default: `{}`
5500
5501In your `settings.json` file, add the `profiles` object.
5502Each 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.
5503
5504Example:
5505
5506```json [settings]
5507{
5508 "profiles": {
5509 "Presenting (Dark)": {
5510 "settings": {
5511 "agent_buffer_font_size": 18.0,
5512 "buffer_font_size": 18.0,
5513 "theme": "One Dark",
5514 "ui_font_size": 18.0
5515 }
5516 },
5517 "Presenting (Light)": {
5518 "settings": {
5519 "agent_buffer_font_size": 18.0,
5520 "buffer_font_size": 18.0,
5521 "theme": "One Light",
5522 "ui_font_size": 18.0
5523 }
5524 },
5525 "Writing": {
5526 "settings": {
5527 "agent_buffer_font_size": 15.0,
5528 "buffer_font_size": 15.0,
5529 "theme": "Catppuccin FrappΓ© - No Italics",
5530 "ui_font_size": 15.0,
5531 "tab_bar": { "show": false },
5532 "toolbar": { "breadcrumbs": false }
5533 }
5534 }
5535 }
5536}
5537```
5538
5539To preview and enable a settings profile, open the command palette via {#kb command_palette::Toggle} and search for `settings profile selector: toggle`.
5540
5541## An example configuration:
5542
5543```json [settings]
5544// ~/.config/zed/settings.json
5545{
5546 "theme": "cave-light",
5547 "tab_size": 2,
5548 "preferred_line_length": 80,
5549 "soft_wrap": "none",
5550
5551 "buffer_font_size": 18,
5552 "buffer_font_family": ".ZedMono",
5553
5554 "autosave": "on_focus_change",
5555 "format_on_save": "off",
5556 "vim_mode": false,
5557 "terminal": {
5558 "font_family": "FiraCode Nerd Font Mono",
5559 "blinking": "off"
5560 },
5561 "languages": {
5562 "C": {
5563 "format_on_save": "on",
5564 "formatter": "language_server",
5565 "preferred_line_length": 64,
5566 "soft_wrap": "bounded"
5567 }
5568 }
5569}
5570```