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