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