1# Configuring Zed
2
3Zed is designed to be configured: we want to fit your workflow and preferences exactly. We provide default settings that are designed to be a comfortable starting point for as many people as possible, but we hope you will enjoy tweaking it to make it feel incredible.
4
5In addition to the settings described here, you may also want to change your [theme](./themes.md), configure your [key bindings](./key-bindings.md), set up [tasks](./tasks.md) or install [extensions](https://github.com/zed-industries/extensions).
6
7## Settings files
8
9<!--
10TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
11Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
12
13TBD: Add settings documentation about how settings are merged as overlays. E.g. project>local>default. Note how settings that are maps are merged, but settings that are arrays are replaced and must include the defaults.
14-->
15
16Your settings file can be opened with {#kb zed::OpenSettings}. By default it is located at `~/.config/zed/settings.json`, though if you have XDG_CONFIG_HOME in your environment on Linux it will be at `$XDG_CONFIG_HOME/zed/settings.json` instead.
17
18This configuration is merged with any local configuration inside your projects. You can open the project settings by running {#action zed::OpenProjectSettings} from the command palette. This will create a `.zed` directory containing`.zed/settings.json`.
19
20Although most projects will only need one settings file at the root, you can add more local settings files for subdirectories as needed. Not all settings can be set in local files, just those that impact the behavior of the editor and language tooling. For example you can set `tab_size`, `formatter` etc. but not `theme`, `vim_mode` and similar.
21
22The syntax for configuration files is a super-set of JSON that allows `//` comments.
23
24## Default settings
25
26You can find the default settings for your current Zed by running {#action zed::OpenDefaultSettings} from the command palette.
27
28Extensions that provide language servers may also provide default settings for those language servers.
29
30# Settings
31
32## Active Pane Modifiers
33
34- Description: Styling settings applied to the active pane.
35- Setting: `active_pane_modifiers`
36- Default:
37
38```json
39{
40 "active_pane_modifiers": {
41 "magnification": 1.0,
42 "border_size": 0.0,
43 "inactive_opacity": 1.0
44 }
45}
46```
47
48### Magnification
49
50- Description: Scale by which to zoom the active pane. When set to `1.0`, the active pane has the same size as others, but when set to a larger value, the active pane takes up more space.
51- Setting: `magnification`
52- Default: `1.0`
53
54**Options**
55
56`float` values
57
58### Border size
59
60- 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.
61- Setting: `border_size`
62- Default: `0.0`
63
64**Options**
65
66Non-negative `float` values
67
68### Inactive Opacity
69
70- Description: Opacity of inactive panels. When set to 1.0, the inactive panes have the same opacity as the active one. If set to 0, the inactive panes content will not be visible at all. Values are clamped to the [0.0, 1.0] range.
71- Setting: `inactive_opacity`
72- Default: `1.0`
73
74**Options**
75
76`float` values
77
78## Bottom Dock Layout
79
80- Description: Control the layout of the bottom dock, relative to the left and right docks
81- Setting: `bottom_dock_layout`
82- Default: `"contained"`
83
84**Options**
85
861. Contain the bottom dock, giving the full height of the window to the left and right docks
87
88```json
89{
90 "bottom_dock_layout": "contained"
91}
92```
93
942. Give the bottom dock the full width of the window, truncating the left and right docks
95
96```json
97{
98 "bottom_dock_layout": "full"
99}
100```
101
1023. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window
103
104```json
105{
106 "bottom_dock_layout": "left_aligned"
107}
108```
109
1103. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
111
112```json
113{
114 "bottom_dock_layout": "right_aligned"
115}
116```
117
118## Auto Install extensions
119
120- Description: Define extensions to be autoinstalled or never be installed.
121- Setting: `auto_install_extension`
122- Default: `{ "html": true }`
123
124**Options**
125
126You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions#installation-location):
127
128On MacOS:
129
130```sh
131ls ~/Library/Application\ Support/Zed/extensions/installed/
132```
133
134On Linux:
135
136```sh
137ls ~/.local/share/zed/extensions/installed
138```
139
140Define extensions which should be installed (`true`) or never installed (`false`).
141
142```json
143{
144 "auto_install_extensions": {
145 "html": true,
146 "dockerfile": true,
147 "docker-compose": false
148 }
149}
150```
151
152## Autosave
153
154- Description: When to automatically save edited buffers.
155- Setting: `autosave`
156- Default: `off`
157
158**Options**
159
1601. To disable autosave, set it to `off`:
161
162```json
163{
164 "autosave": "off"
165}
166```
167
1682. To autosave when focus changes, use `on_focus_change`:
169
170```json
171{
172 "autosave": "on_focus_change"
173}
174```
175
1763. To autosave when the active window changes, use `on_window_change`:
177
178```json
179{
180 "autosave": "on_window_change"
181}
182```
183
1844. To autosave after an inactivity period, use `after_delay`:
185
186```json
187{
188 "autosave": {
189 "after_delay": {
190 "milliseconds": 1000
191 }
192 }
193}
194```
195
196## Restore on Startup
197
198- Description: Controls session restoration on startup.
199- Setting: `restore_on_startup`
200- Default: `last_session`
201
202**Options**
203
2041. Restore all workspaces that were open when quitting Zed:
205
206```json
207{
208 "restore_on_startup": "last_session"
209}
210```
211
2122. Restore the workspace that was closed last:
213
214```json
215{
216 "restore_on_startup": "last_workspace"
217}
218```
219
2203. Always start with an empty editor:
221
222```json
223{
224 "restore_on_startup": "none"
225}
226```
227
228## Autoscroll on Clicks
229
230- Description: Whether to scroll when clicking near the edge of the visible text area.
231- Setting: `autoscroll_on_clicks`
232- Default: `false`
233
234**Options**
235
236`boolean` values
237
238## Auto Update
239
240- Description: Whether or not to automatically check for updates.
241- Setting: `auto_update`
242- Default: `true`
243
244**Options**
245
246`boolean` values
247
248## Base Keymap
249
250- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
251- Setting: `base_keymap`
252- Default: `VSCode`
253
254**Options**
255
2561. VSCode
257
258```json
259{
260 "base_keymap": "VSCode"
261}
262```
263
2642. Atom
265
266```json
267{
268 "base_keymap": "Atom"
269}
270```
271
2723. JetBrains
273
274```json
275{
276 "base_keymap": "JetBrains"
277}
278```
279
2804. None
281
282```json
283{
284 "base_keymap": "None"
285}
286```
287
2885. SublimeText
289
290```json
291{
292 "base_keymap": "SublimeText"
293}
294```
295
2966. TextMate
297
298```json
299{
300 "base_keymap": "TextMate"
301}
302```
303
304## Buffer Font Family
305
306- Description: The name of a font to use for rendering text in the editor.
307- Setting: `buffer_font_family`
308- Default: `Zed Plex Mono`
309
310**Options**
311
312The name of any font family installed on the user's system
313
314## Buffer Font Features
315
316- Description: The OpenType features to enable for text in the editor.
317- Setting: `buffer_font_features`
318- Default: `null`
319- Platform: macOS and Windows.
320
321**Options**
322
323Zed 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.
324
325For example, to disable font ligatures, add the following to your settings:
326
327```json
328{
329 "buffer_font_features": {
330 "calt": false
331 }
332}
333```
334
335You can also set other OpenType features, like setting `cv01` to `7`:
336
337```json
338{
339 "buffer_font_features": {
340 "cv01": 7
341 }
342}
343```
344
345## Buffer Font Fallbacks
346
347- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
348- Setting: `buffer_font_fallbacks`
349- Default: `null`
350- Platform: macOS and Windows.
351
352**Options**
353
354For example, to use `Nerd Font` as a fallback, add the following to your settings:
355
356```json
357{
358 "buffer_font_fallbacks": ["Nerd Font"]
359}
360```
361
362## Buffer Font Size
363
364- Description: The default font size for text in the editor.
365- Setting: `buffer_font_size`
366- Default: `15`
367
368**Options**
369
370`integer` values from `6` to `100` pixels (inclusive)
371
372## Buffer Font Weight
373
374- Description: The default font weight for text in the editor.
375- Setting: `buffer_font_weight`
376- Default: `400`
377
378**Options**
379
380`integer` values between `100` and `900`
381
382## Buffer Line Height
383
384- Description: The default line height for text in the editor.
385- Setting: `buffer_line_height`
386- Default: `"comfortable"`
387
388**Options**
389
390`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
391
392## Confirm Quit
393
394- Description: Whether or not to prompt the user to confirm before closing the application.
395- Setting: `confirm_quit`
396- Default: `false`
397
398**Options**
399
400`boolean` values
401
402## Centered Layout
403
404- Description: Configuration for the centered layout mode.
405- Setting: `centered_layout`
406- Default:
407
408```json
409"centered_layout": {
410 "left_padding": 0.2,
411 "right_padding": 0.2,
412}
413```
414
415**Options**
416
417The `left_padding` and `right_padding` options define the relative width of the
418left 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`.
419
420## Direnv Integration
421
422- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
423 `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.
424 It also allows for those environment variables to be used in tasks.
425- Setting: `load_direnv`
426- Default: `"direct"`
427
428**Options**
429
430There are two options to choose from:
431
4321. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
4332. `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.
434
435## Edit Predictions
436
437- Description: Settings for edit predictions.
438- Setting: `edit_predictions`
439- Default:
440
441```json
442 "edit_predictions": {
443 "disabled_globs": [
444 "**/.env*",
445 "**/*.pem",
446 "**/*.key",
447 "**/*.cert",
448 "**/*.crt",
449 "**/.dev.vars",
450 "**/secrets.yml"
451 ]
452 }
453```
454
455**Options**
456
457### Disabled Globs
458
459- 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.
460- Setting: `disabled_globs`
461- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
462
463**Options**
464
465List of `string` values.
466
467## Edit Predictions Disabled in
468
469- Description: A list of language scopes in which edit predictions should be disabled.
470- Setting: `edit_predictions_disabled_in`
471- Default: `[]`
472
473**Options**
474
475List of `string` values
476
4771. Don't show edit predictions in comments:
478
479```json
480"disabled_in": ["comment"]
481```
482
4832. Don't show edit predictions in strings and comments:
484
485```json
486"disabled_in": ["comment", "string"]
487```
488
4893. Only in Go, don't show edit predictions in strings and comments:
490
491```json
492{
493 "languages": {
494 "Go": {
495 "edit_predictions_disabled_in": ["comment", "string"]
496 }
497 }
498}
499```
500
501## Current Line Highlight
502
503- Description: How to highlight the current line in the editor.
504- Setting: `current_line_highlight`
505- Default: `all`
506
507**Options**
508
5091. Don't highlight the current line:
510
511```json
512"current_line_highlight": "none"
513```
514
5152. Highlight the gutter area:
516
517```json
518"current_line_highlight": "gutter"
519```
520
5213. Highlight the editor area:
522
523```json
524"current_line_highlight": "line"
525```
526
5274. Highlight the full line:
528
529```json
530"current_line_highlight": "all"
531```
532
533## Selection Highlight
534
535- Description: Whether to highlight all occurrences of the selected text in an editor.
536- Setting: `selection_highlight`
537- Default: `true`
538
539## LSP Highlight Debounce
540
541- Description: The debounce delay before querying highlights from the language server based on the current cursor location.
542- Setting: `lsp_highlight_debounce`
543- Default: `75`
544
545## Cursor Blink
546
547- Description: Whether or not the cursor blinks.
548- Setting: `cursor_blink`
549- Default: `true`
550
551**Options**
552
553`boolean` values
554
555## Cursor Shape
556
557- Description: Cursor shape for the default editor.
558- Setting: `cursor_shape`
559- Default: `bar`
560
561**Options**
562
5631. A vertical bar:
564
565```json
566"cursor_shape": "bar"
567```
568
5692. A block that surrounds the following character:
570
571```json
572"cursor_shape": "block"
573```
574
5753. An underline / underscore that runs along the following character:
576
577```json
578"cursor_shape": "underline"
579```
580
5814. An box drawn around the following character:
582
583```json
584"cursor_shape": "hollow"
585```
586
587## Hide Mouse
588
589- Description: Determines when the mouse cursor should be hidden in an editor or input box.
590- Setting: `hide_mouse`
591- Default: `on_typing_and_movement`
592
593**Options**
594
5951. Never hide the mouse cursor:
596
597```json
598"hide_mouse": "never"
599```
600
6012. Hide only when typing:
602
603```json
604"hide_mouse": "on_typing"
605```
606
6073. Hide on both typing and cursor movement:
608
609```json
610"hide_mouse": "on_typing_and_movement"
611```
612
613## Snippet Sort Order
614
615- Description: Determines how snippets are sorted relative to other completion items.
616- Setting: `snippet_sort_order`
617- Default: `inline`
618
619**Options**
620
6211. Place snippets at the top of the completion list:
622
623```json
624"snippet_sort_order": "top"
625```
626
6272. Place snippets normally without any preference:
628
629```json
630"snippet_sort_order": "inline"
631```
632
6333. Place snippets at the bottom of the completion list:
634
635```json
636"snippet_sort_order": "bottom"
637```
638
639## Editor Scrollbar
640
641- Description: Whether or not to show the editor scrollbar and various elements in it.
642- Setting: `scrollbar`
643- Default:
644
645```json
646"scrollbar": {
647 "show": "auto",
648 "cursors": true,
649 "git_diff": true,
650 "search_results": true,
651 "selected_text": true,
652 "selected_symbol": true,
653 "diagnostics": "all",
654 "axes": {
655 "horizontal": true,
656 "vertical": true,
657 },
658},
659```
660
661### Show Mode
662
663- Description: When to show the editor scrollbar.
664- Setting: `show`
665- Default: `auto`
666
667**Options**
668
6691. Show the scrollbar if there's important information or follow the system's configured behavior:
670
671```json
672"scrollbar": {
673 "show": "auto"
674}
675```
676
6772. Match the system's configured behavior:
678
679```json
680"scrollbar": {
681 "show": "system"
682}
683```
684
6853. Always show the scrollbar:
686
687```json
688"scrollbar": {
689 "show": "always"
690}
691```
692
6934. Never show the scrollbar:
694
695```json
696"scrollbar": {
697 "show": "never"
698}
699```
700
701### Cursor Indicators
702
703- Description: Whether to show cursor positions in the scrollbar.
704- Setting: `cursors`
705- Default: `true`
706
707**Options**
708
709`boolean` values
710
711### Git Diff Indicators
712
713- Description: Whether to show git diff indicators in the scrollbar.
714- Setting: `git_diff`
715- Default: `true`
716
717**Options**
718
719`boolean` values
720
721### Search Results Indicators
722
723- Description: Whether to show buffer search results in the scrollbar.
724- Setting: `search_results`
725- Default: `true`
726
727**Options**
728
729`boolean` values
730
731### Selected Text Indicators
732
733- Description: Whether to show selected text occurrences in the scrollbar.
734- Setting: `selected_text`
735- Default: `true`
736
737**Options**
738
739`boolean` values
740
741### Selected Symbols Indicators
742
743- Description: Whether to show selected symbol occurrences in the scrollbar.
744- Setting: `selected_symbol`
745- Default: `true`
746
747**Options**
748
749`boolean` values
750
751### Diagnostics
752
753- Description: Which diagnostic indicators to show in the scrollbar.
754- Setting: `diagnostics`
755- Default: `all`
756
757**Options**
758
7591. Show all diagnostics:
760
761```json
762{
763 "diagnostics": "all"
764}
765```
766
7672. Do not show any diagnostics:
768
769```json
770{
771 "diagnostics": "none"
772}
773```
774
7753. Show only errors:
776
777```json
778{
779 "diagnostics": "error"
780}
781```
782
7834. Show only errors and warnings:
784
785```json
786{
787 "diagnostics": "warning"
788}
789```
790
7915. Show only errors, warnings, and information:
792
793```json
794{
795 "diagnostics": "information"
796}
797```
798
799### Axes
800
801- Description: Forcefully enable or disable the scrollbar for each axis
802- Setting: `axes`
803- Default:
804
805```json
806"scrollbar": {
807 "axes": {
808 "horizontal": true,
809 "vertical": true,
810 },
811}
812```
813
814#### Horizontal
815
816- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
817- Setting: `horizontal`
818- Default: `true`
819
820**Options**
821
822`boolean` values
823
824#### Vertical
825
826- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
827- Setting: `vertical`
828- Default: `true`
829
830**Options**
831
832`boolean` values
833
834## Minimap
835
836- Description: Settings related to the editor's minimap, which provides an overview of your document.
837- Setting: `minimap`
838- Default:
839
840```json
841{
842 "minimap": {
843 "show": "never",
844 "thumb": "always",
845 "thumb_border": "left_open",
846 "current_line_highlight": null
847 }
848}
849```
850
851### Show Mode
852
853- Description: When to show the minimap in the editor.
854- Setting: `show`
855- Default: `never`
856
857**Options**
858
8591. Always show the minimap:
860
861```json
862{
863 "show": "always"
864}
865```
866
8672. Show the minimap if the editor's scrollbars are visible:
868
869```json
870{
871 "show": "auto"
872}
873```
874
8753. Never show the minimap:
876
877```json
878{
879 "show": "never"
880}
881```
882
883### Thumb Display
884
885- Description: When to show the minimap thumb (the visible editor area) in the minimap.
886- Setting: `thumb`
887- Default: `always`
888
889**Options**
890
8911. Show the minimap thumb when hovering over the minimap:
892
893```json
894{
895 "thumb": "hover"
896}
897```
898
8992. Always show the minimap thumb:
900
901```json
902{
903 "thumb": "always"
904}
905```
906
907### Thumb Border
908
909- Description: How the minimap thumb border should look.
910- Setting: `thumb_border`
911- Default: `left_open`
912
913**Options**
914
9151. Display a border on all sides of the thumb:
916
917```json
918{
919 "thumb_border": "full"
920}
921```
922
9232. Display a border on all sides except the left side:
924
925```json
926{
927 "thumb_border": "left_open"
928}
929```
930
9313. Display a border on all sides except the right side:
932
933```json
934{
935 "thumb_border": "right_open"
936}
937```
938
9394. Display a border only on the left side:
940
941```json
942{
943 "thumb_border": "left_only"
944}
945```
946
9475. Display the thumb without any border:
948
949```json
950{
951 "thumb_border": "none"
952}
953```
954
955### Current Line Highlight
956
957- Description: How to highlight the current line in the minimap.
958- Setting: `current_line_highlight`
959- Default: `null`
960
961**Options**
962
9631. Inherit the editor's current line highlight setting:
964
965```json
966{
967 "minimap": {
968 "current_line_highlight": null
969 }
970}
971```
972
9732. Highlight the current line in the minimap:
974
975```json
976{
977 "minimap": {
978 "current_line_highlight": "line"
979 }
980}
981```
982
983or
984
985```json
986{
987 "minimap": {
988 "current_line_highlight": "all"
989 }
990}
991```
992
9933. Do not highlight the current line in the minimap:
994
995```json
996{
997 "minimap": {
998 "current_line_highlight": "gutter"
999 }
1000}
1001```
1002
1003or
1004
1005```json
1006{
1007 "minimap": {
1008 "current_line_highlight": "none"
1009 }
1010}
1011```
1012
1013## Editor Tab Bar
1014
1015- Description: Settings related to the editor's tab bar.
1016- Settings: `tab_bar`
1017- Default:
1018
1019```json
1020"tab_bar": {
1021 "show": true,
1022 "show_nav_history_buttons": true,
1023 "show_tab_bar_buttons": true
1024}
1025```
1026
1027### Show
1028
1029- Description: Whether or not to show the tab bar in the editor.
1030- Setting: `show`
1031- Default: `true`
1032
1033**Options**
1034
1035`boolean` values
1036
1037### Navigation History Buttons
1038
1039- Description: Whether or not to show the navigation history buttons.
1040- Setting: `show_nav_history_buttons`
1041- Default: `true`
1042
1043**Options**
1044
1045`boolean` values
1046
1047### Tab Bar Buttons
1048
1049- Description: Whether or not to show the tab bar buttons.
1050- Setting: `show_tab_bar_buttons`
1051- Default: `true`
1052
1053**Options**
1054
1055`boolean` values
1056
1057## Editor Tabs
1058
1059- Description: Configuration for the editor tabs.
1060- Setting: `tabs`
1061- Default:
1062
1063```json
1064"tabs": {
1065 "close_position": "right",
1066 "file_icons": false,
1067 "git_status": false,
1068 "activate_on_close": "history",
1069 "show_close_button": "hover",
1070 "show_diagnostics": "off"
1071},
1072```
1073
1074### Close Position
1075
1076- Description: Where to display close button within a tab.
1077- Setting: `close_position`
1078- Default: `right`
1079
1080**Options**
1081
10821. Display the close button on the right:
1083
1084```json
1085{
1086 "close_position": "right"
1087}
1088```
1089
10902. Display the close button on the left:
1091
1092```json
1093{
1094 "close_position": "left"
1095}
1096```
1097
1098### File Icons
1099
1100- Description: Whether to show the file icon for a tab.
1101- Setting: `file_icons`
1102- Default: `false`
1103
1104### Git Status
1105
1106- Description: Whether or not to show Git file status in tab.
1107- Setting: `git_status`
1108- Default: `false`
1109
1110### Activate on close
1111
1112- Description: What to do after closing the current tab.
1113- Setting: `activate_on_close`
1114- Default: `history`
1115
1116**Options**
1117
11181. Activate the tab that was open previously:
1119
1120```json
1121{
1122 "activate_on_close": "history"
1123}
1124```
1125
11262. Activate the right neighbour tab if present:
1127
1128```json
1129{
1130 "activate_on_close": "neighbour"
1131}
1132```
1133
11343. Activate the left neighbour tab if present:
1135
1136```json
1137{
1138 "activate_on_close": "left_neighbour"
1139}
1140```
1141
1142### Show close button
1143
1144- Description: Controls the appearance behavior of the tab's close button.
1145- Setting: `show_close_button`
1146- Default: `hover`
1147
1148**Options**
1149
11501. Show it just upon hovering the tab:
1151
1152```json
1153{
1154 "show_close_button": "hover"
1155}
1156```
1157
11582. Show it persistently:
1159
1160```json
1161{
1162 "show_close_button": "always"
1163}
1164```
1165
11663. Never show it, even if hovering it:
1167
1168```json
1169{
1170 "show_close_button": "hidden"
1171}
1172```
1173
1174### Show Diagnostics
1175
1176- 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.
1177- Setting: `show_diagnostics`
1178- Default: `off`
1179
1180**Options**
1181
11821. Do not mark any files:
1183
1184```json
1185{
1186 "show_diagnostics": "off"
1187}
1188```
1189
11902. Only mark files with errors:
1191
1192```json
1193{
1194 "show_diagnostics": "errors"
1195}
1196```
1197
11983. Mark files with errors and warnings:
1199
1200```json
1201{
1202 "show_diagnostics": "all"
1203}
1204```
1205
1206## Editor Toolbar
1207
1208- Description: Whether or not to show various elements in the editor toolbar.
1209- Setting: `toolbar`
1210- Default:
1211
1212```json
1213"toolbar": {
1214 "breadcrumbs": true,
1215 "quick_actions": true,
1216 "selections_menu": true,
1217 "agent_review": true,
1218 "code_actions": true
1219},
1220```
1221
1222**Options**
1223
1224Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1225
1226## Enable Language Server
1227
1228- Description: Whether or not to use language servers to provide code intelligence.
1229- Setting: `enable_language_server`
1230- Default: `true`
1231
1232**Options**
1233
1234`boolean` values
1235
1236## Ensure Final Newline On Save
1237
1238- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1239- Setting: `ensure_final_newline_on_save`
1240- Default: `true`
1241
1242**Options**
1243
1244`boolean` values
1245
1246## LSP
1247
1248- Description: Configuration for language servers.
1249- Setting: `lsp`
1250- Default: `null`
1251
1252**Options**
1253
1254The following settings can be overridden for specific language servers:
1255
1256- `initialization_options`
1257- `settings`
1258
1259To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1260
1261Some 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.
1262
1263For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1264
1265```json
1266"lsp": {
1267 "rust-analyzer": {
1268 "initialization_options": {
1269 "check": {
1270 "command": "clippy" // rust-analyzer.check.command (default: "check")
1271 }
1272 }
1273 }
1274}
1275```
1276
1277While other options may be changed at a runtime and should be placed under `settings`:
1278
1279```json
1280"lsp": {
1281 "yaml-language-server": {
1282 "settings": {
1283 "yaml": {
1284 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1285 }
1286 }
1287 }
1288}
1289```
1290
1291## LSP Highlight Debounce
1292
1293- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1294- Setting: `lsp_highlight_debounce`
1295- Default: `75`
1296
1297**Options**
1298
1299`integer` values representing milliseconds
1300
1301## Format On Save
1302
1303- Description: Whether or not to perform a buffer format before saving.
1304- Setting: `format_on_save`
1305- Default: `on`
1306
1307**Options**
1308
13091. `on`, enables format on save obeying `formatter` setting:
1310
1311```json
1312{
1313 "format_on_save": "on"
1314}
1315```
1316
13172. `off`, disables format on save:
1318
1319```json
1320{
1321 "format_on_save": "off"
1322}
1323```
1324
1325## Formatter
1326
1327- Description: How to perform a buffer format.
1328- Setting: `formatter`
1329- Default: `auto`
1330
1331**Options**
1332
13331. To use the current language server, use `"language_server"`:
1334
1335```json
1336{
1337 "formatter": "language_server"
1338}
1339```
1340
13412. 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):
1342
1343```json
1344{
1345 "formatter": {
1346 "external": {
1347 "command": "sed",
1348 "arguments": ["-e", "s/ *$//"]
1349 }
1350 }
1351}
1352```
1353
13543. 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.
1355
1356WARNING: `{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.
1357
1358```json
1359 "formatter": {
1360 "external": {
1361 "command": "prettier",
1362 "arguments": ["--stdin-filepath", "{buffer_path}"]
1363 }
1364 }
1365```
1366
13674. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1368
1369```json
1370{
1371 "formatter": {
1372 "code_actions": {
1373 // Use ESLint's --fix:
1374 "source.fixAll.eslint": true,
1375 // Organize imports on save:
1376 "source.organizeImports": true
1377 }
1378 }
1379}
1380```
1381
13825. Or to use multiple formatters consecutively, use an array of formatters:
1383
1384```json
1385{
1386 "formatter": [
1387 { "language_server": { "name": "rust-analyzer" } },
1388 {
1389 "external": {
1390 "command": "sed",
1391 "arguments": ["-e", "s/ *$//"]
1392 }
1393 }
1394 ]
1395}
1396```
1397
1398Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1399If any of the formatters fails, the subsequent ones will still be executed.
1400
1401## Code Actions On Format
1402
1403- Description: The code actions to perform with the primary language server when formatting the buffer.
1404- Setting: `code_actions_on_format`
1405- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
1406
1407**Examples**
1408
1409<!--
1410TBD: Add Python Ruff source.organizeImports example
1411-->
1412
14131. Organize imports on format in TypeScript and TSX buffers:
1414
1415```json
1416{
1417 "languages": {
1418 "TypeScript": {
1419 "code_actions_on_format": {
1420 "source.organizeImports": true
1421 }
1422 },
1423 "TSX": {
1424 "code_actions_on_format": {
1425 "source.organizeImports": true
1426 }
1427 }
1428 }
1429}
1430```
1431
14322. Run ESLint `fixAll` code action when formatting:
1433
1434```json
1435{
1436 "languages": {
1437 "JavaScript": {
1438 "code_actions_on_format": {
1439 "source.fixAll.eslint": true
1440 }
1441 }
1442 }
1443}
1444```
1445
14463. Run only a single ESLint rule when using `fixAll`:
1447
1448```json
1449{
1450 "languages": {
1451 "JavaScript": {
1452 "code_actions_on_format": {
1453 "source.fixAll.eslint": true
1454 }
1455 }
1456 },
1457 "lsp": {
1458 "eslint": {
1459 "settings": {
1460 "codeActionOnSave": {
1461 "rules": ["import/order"]
1462 }
1463 }
1464 }
1465 }
1466}
1467```
1468
1469## Auto close
1470
1471- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1472- Setting: `use_autoclose`
1473- Default: `true`
1474
1475**Options**
1476
1477`boolean` values
1478
1479## Always Treat Brackets As Autoclosed
1480
1481- Description: Controls how the editor handles the autoclosed characters.
1482- Setting: `always_treat_brackets_as_autoclosed`
1483- Default: `false`
1484
1485**Options**
1486
1487`boolean` values
1488
1489**Example**
1490
1491If the setting is set to `true`:
1492
14931. Enter in the editor: `)))`
14942. Move the cursor to the start: `^)))`
14953. Enter again: `)))`
1496
1497The result is still `)))` and not `))))))`, which is what it would be by default.
1498
1499## File Scan Exclusions
1500
1501- Setting: `file_scan_exclusions`
1502- 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`.
1503- Default:
1504
1505```json
1506"file_scan_exclusions": [
1507 "**/.git",
1508 "**/.svn",
1509 "**/.hg",
1510 "**/.jj",
1511 "**/CVS",
1512 "**/.DS_Store",
1513 "**/Thumbs.db",
1514 "**/.classpath",
1515 "**/.settings"
1516],
1517```
1518
1519Note, 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.
1520
1521## File Scan Inclusions
1522
1523- Setting: `file_scan_inclusions`
1524- 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.
1525- Default:
1526
1527```json
1528"file_scan_inclusions": [".env*"],
1529```
1530
1531## File Types
1532
1533- Setting: `file_types`
1534- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1535- Default:
1536
1537```json
1538"file_types": {
1539 "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1540 "Shell Script": [".env.*"]
1541}
1542```
1543
1544**Examples**
1545
1546To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1547
1548```json
1549{
1550 "file_types": {
1551 "C++": ["c"],
1552 "TOML": ["MyLockFile"],
1553 "Dockerfile": ["Dockerfile*"]
1554 }
1555}
1556```
1557
1558## Diagnostics
1559
1560- Description: Configuration for diagnostics-related features.
1561- Setting: `diagnostics`
1562- Default:
1563
1564```json
1565{
1566 "diagnostics": {
1567 "include_warnings": true,
1568 "inline": {
1569 "enabled": false
1570 },
1571 "update_with_cursor": false,
1572 "primary_only": false,
1573 "use_rendered": false
1574 }
1575}
1576```
1577
1578### Inline Diagnostics
1579
1580- Description: Whether or not to show diagnostics information inline.
1581- Setting: `inline`
1582- Default:
1583
1584```json
1585{
1586 "diagnostics": {
1587 "inline": {
1588 "enabled": false,
1589 "update_debounce_ms": 150,
1590 "padding": 4,
1591 "min_column": 0,
1592 "max_severity": null
1593 }
1594 }
1595}
1596```
1597
1598**Options**
1599
16001. Enable inline diagnostics.
1601
1602```json
1603{
1604 "diagnostics": {
1605 "inline": {
1606 "enabled": true
1607 }
1608 }
1609}
1610```
1611
16122. Delay diagnostic updates until some time after the last diagnostic update.
1613
1614```json
1615{
1616 "diagnostics": {
1617 "inline": {
1618 "enabled": true,
1619 "update_debounce_ms": 150
1620 }
1621 }
1622}
1623```
1624
16253. Set padding between the end of the source line and the start of the diagnostic.
1626
1627```json
1628{
1629 "diagnostics": {
1630 "inline": {
1631 "enabled": true,
1632 "padding": 4
1633 }
1634 }
1635}
1636```
1637
16384. Horizontally align inline diagnostics at the given column.
1639
1640```json
1641{
1642 "diagnostics": {
1643 "inline": {
1644 "enabled": true,
1645 "min_column": 80
1646 }
1647 }
1648}
1649```
1650
16515. Show only warning and error diagnostics.
1652
1653```json
1654{
1655 "diagnostics": {
1656 "inline": {
1657 "enabled": true,
1658 "max_severity": "warning"
1659 }
1660 }
1661}
1662```
1663
1664## Git
1665
1666- Description: Configuration for git-related features.
1667- Setting: `git`
1668- Default:
1669
1670```json
1671{
1672 "git": {
1673 "git_gutter": "tracked_files",
1674 "inline_blame": {
1675 "enabled": true
1676 },
1677 "hunk_style": "staged_hollow"
1678 }
1679}
1680```
1681
1682### Git Gutter
1683
1684- Description: Whether or not to show the git gutter.
1685- Setting: `git_gutter`
1686- Default: `tracked_files`
1687
1688**Options**
1689
16901. Show git gutter in tracked files
1691
1692```json
1693{
1694 "git": {
1695 "git_gutter": "tracked_files"
1696 }
1697}
1698```
1699
17002. Hide git gutter
1701
1702```json
1703{
1704 "git": {
1705 "git_gutter": "hide"
1706 }
1707}
1708```
1709
1710### Gutter Debounce
1711
1712- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1713- Setting: `gutter_debounce`
1714- Default: `null`
1715
1716**Options**
1717
1718`integer` values representing milliseconds
1719
1720Example:
1721
1722```json
1723{
1724 "git": {
1725 "gutter_debounce": 100
1726 }
1727}
1728```
1729
1730### Inline Git Blame
1731
1732- Description: Whether or not to show git blame information inline, on the currently focused line.
1733- Setting: `inline_blame`
1734- Default:
1735
1736```json
1737{
1738 "git": {
1739 "inline_blame": {
1740 "enabled": true
1741 }
1742 }
1743}
1744```
1745
1746### Hunk Style
1747
1748- Description: What styling we should use for the diff hunks.
1749- Setting: `hunk_style`
1750- Default:
1751
1752```json
1753{
1754 "git": {
1755 "hunk_style": "staged_hollow"
1756 }
1757}
1758```
1759
1760**Options**
1761
17621. Show the staged hunks faded out and with a border:
1763
1764```json
1765{
1766 "git": {
1767 "hunk_style": "staged_hollow"
1768 }
1769}
1770```
1771
17722. Show unstaged hunks faded out and with a border:
1773
1774```json
1775{
1776 "git": {
1777 "hunk_style": "unstaged_hollow"
1778 }
1779}
1780```
1781
1782**Options**
1783
17841. Disable inline git blame:
1785
1786```json
1787{
1788 "git": {
1789 "inline_blame": {
1790 "enabled": false
1791 }
1792 }
1793}
1794```
1795
17962. Only show inline git blame after a delay (that starts after cursor stops moving):
1797
1798```json
1799{
1800 "git": {
1801 "inline_blame": {
1802 "enabled": true,
1803 "delay_ms": 500
1804 }
1805 }
1806}
1807```
1808
18093. Show a commit summary next to the commit date and author:
1810
1811```json
1812{
1813 "git": {
1814 "inline_blame": {
1815 "enabled": true,
1816 "show_commit_summary": true
1817 }
1818 }
1819}
1820```
1821
18224. Use this as the minimum column at which to display inline blame information:
1823
1824```json
1825{
1826 "git": {
1827 "inline_blame": {
1828 "enabled": true,
1829 "min_column": 80
1830 }
1831 }
1832}
1833```
1834
1835## Indent Guides
1836
1837- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1838- Setting: `indent_guides`
1839- Default:
1840
1841```json
1842{
1843 "indent_guides": {
1844 "enabled": true,
1845 "line_width": 1,
1846 "active_line_width": 1,
1847 "coloring": "fixed",
1848 "background_coloring": "disabled"
1849 }
1850}
1851```
1852
1853**Options**
1854
18551. Disable indent guides
1856
1857```json
1858{
1859 "indent_guides": {
1860 "enabled": false
1861 }
1862}
1863```
1864
18652. Enable indent guides for a specific language.
1866
1867```json
1868{
1869 "languages": {
1870 "Python": {
1871 "indent_guides": {
1872 "enabled": true
1873 }
1874 }
1875 }
1876}
1877```
1878
18793. Enable indent aware coloring ("rainbow indentation").
1880 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.
1881
1882```json
1883{
1884 "indent_guides": {
1885 "enabled": true,
1886 "coloring": "indent_aware"
1887 }
1888}
1889```
1890
18914. Enable indent aware background coloring ("rainbow indentation").
1892 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.
1893
1894```json
1895{
1896 "indent_guides": {
1897 "enabled": true,
1898 "coloring": "indent_aware",
1899 "background_coloring": "indent_aware"
1900 }
1901}
1902```
1903
1904## Hard Tabs
1905
1906- Description: Whether to indent lines using tab characters or multiple spaces.
1907- Setting: `hard_tabs`
1908- Default: `false`
1909
1910**Options**
1911
1912`boolean` values
1913
1914## Hover Popover Enabled
1915
1916- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1917- Setting: `hover_popover_enabled`
1918- Default: `true`
1919
1920**Options**
1921
1922`boolean` values
1923
1924## Hover Popover Delay
1925
1926- Description: Time to wait in milliseconds before showing the informational hover box.
1927- Setting: `hover_popover_delay`
1928- Default: `300`
1929
1930**Options**
1931
1932`integer` values representing milliseconds
1933
1934## Icon Theme
1935
1936- 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.
1937- Setting: `icon_theme`
1938- Default: `Zed (Default)`
1939
1940### Icon Theme Object
1941
1942- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1943- Setting: `icon_theme`
1944- Default:
1945
1946```json
1947"icon_theme": {
1948 "mode": "system",
1949 "dark": "Zed (Default)",
1950 "light": "Zed (Default)"
1951},
1952```
1953
1954### Mode
1955
1956- Description: Specify the icon theme mode.
1957- Setting: `mode`
1958- Default: `system`
1959
1960**Options**
1961
19621. Set the icon theme to dark mode
1963
1964```json
1965{
1966 "mode": "dark"
1967}
1968```
1969
19702. Set the icon theme to light mode
1971
1972```json
1973{
1974 "mode": "light"
1975}
1976```
1977
19783. Set the icon theme to system mode
1979
1980```json
1981{
1982 "mode": "system"
1983}
1984```
1985
1986### Dark
1987
1988- Description: The name of the dark icon theme.
1989- Setting: `dark`
1990- Default: `Zed (Default)`
1991
1992**Options**
1993
1994Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1995
1996### Light
1997
1998- Description: The name of the light icon theme.
1999- Setting: `light`
2000- Default: `Zed (Default)`
2001
2002**Options**
2003
2004Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
2005
2006## Inlay hints
2007
2008- Description: Configuration for displaying extra text with hints in the editor.
2009- Setting: `inlay_hints`
2010- Default:
2011
2012```json
2013"inlay_hints": {
2014 "enabled": false,
2015 "show_type_hints": true,
2016 "show_parameter_hints": true,
2017 "show_other_hints": true,
2018 "show_background": false,
2019 "edit_debounce_ms": 700,
2020 "scroll_debounce_ms": 50,
2021 "toggle_on_modifiers_press": null
2022}
2023```
2024
2025**Options**
2026
2027Inlay hints querying consists of two parts: editor (client) and LSP server.
2028With 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.
2029At 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.
2030
2031The following languages have inlay hints preconfigured by Zed:
2032
2033- [Go](https://docs.zed.dev/languages/go)
2034- [Rust](https://docs.zed.dev/languages/rust)
2035- [Svelte](https://docs.zed.dev/languages/svelte)
2036- [Typescript](https://docs.zed.dev/languages/typescript)
2037
2038Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2039
2040Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2041Settings-related hint updates are not debounced.
2042
2043All possible config values for `toggle_on_modifiers_press` are:
2044
2045```json
2046"inlay_hints": {
2047 "toggle_on_modifiers_press": {
2048 "control": true,
2049 "shift": true,
2050 "alt": true,
2051 "platform": true,
2052 "function": true
2053 }
2054}
2055```
2056
2057Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2058
2059## Journal
2060
2061- Description: Configuration for the journal.
2062- Setting: `journal`
2063- Default:
2064
2065```json
2066"journal": {
2067 "path": "~",
2068 "hour_format": "hour12"
2069}
2070```
2071
2072### Path
2073
2074- Description: The path of the directory where journal entries are stored.
2075- Setting: `path`
2076- Default: `~`
2077
2078**Options**
2079
2080`string` values
2081
2082### Hour Format
2083
2084- Description: The format to use for displaying hours in the journal.
2085- Setting: `hour_format`
2086- Default: `hour12`
2087
2088**Options**
2089
20901. 12-hour format:
2091
2092```json
2093{
2094 "hour_format": "hour12"
2095}
2096```
2097
20982. 24-hour format:
2099
2100```json
2101{
2102 "hour_format": "hour24"
2103}
2104```
2105
2106## Languages
2107
2108- Description: Configuration for specific languages.
2109- Setting: `languages`
2110- Default: `null`
2111
2112**Options**
2113
2114To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2115
2116```json
2117"languages": {
2118 "C": {
2119 "format_on_save": "off",
2120 "preferred_line_length": 64,
2121 "soft_wrap": "preferred_line_length"
2122 },
2123 "JSON": {
2124 "tab_size": 4
2125 }
2126}
2127```
2128
2129The following settings can be overridden for each specific language:
2130
2131- [`enable_language_server`](#enable-language-server)
2132- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2133- [`format_on_save`](#format-on-save)
2134- [`formatter`](#formatter)
2135- [`hard_tabs`](#hard-tabs)
2136- [`preferred_line_length`](#preferred-line-length)
2137- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2138- [`show_edit_predictions`](#show-edit-predictions)
2139- [`show_whitespaces`](#show-whitespaces)
2140- [`soft_wrap`](#soft-wrap)
2141- [`tab_size`](#tab-size)
2142- [`use_autoclose`](#use-autoclose)
2143- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2144
2145These values take in the same options as the root-level settings with the same name.
2146
2147## Network Proxy
2148
2149- Description: Configure a network proxy for Zed.
2150- Setting: `proxy`
2151- Default: `null`
2152
2153**Options**
2154
2155The proxy setting must contain a URL to the proxy.
2156
2157The following URI schemes are supported:
2158
2159- `http`
2160- `https`
2161- `socks4` - SOCKS4 proxy with local DNS
2162- `socks4a` - SOCKS4 proxy with remote DNS
2163- `socks5` - SOCKS5 proxy with local DNS
2164- `socks5h` - SOCKS5 proxy with remote DNS
2165
2166`http` will be used when no scheme is specified.
2167
2168By 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`.
2169
2170For example, to set an `http` proxy, add the following to your settings:
2171
2172```json
2173{
2174 "proxy": "http://127.0.0.1:10809"
2175}
2176```
2177
2178Or to set a `socks5` proxy:
2179
2180```json
2181{
2182 "proxy": "socks5h://localhost:10808"
2183}
2184```
2185
2186## Preview tabs
2187
2188- Description:
2189 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. \
2190 There are several ways to convert a preview tab into a regular tab:
2191
2192 - Double-clicking on the file
2193 - Double-clicking on the tab header
2194 - Using the `project_panel::OpenPermanent` action
2195 - Editing the file
2196 - Dragging the file to a different pane
2197
2198- Setting: `preview_tabs`
2199- Default:
2200
2201```json
2202"preview_tabs": {
2203 "enabled": true,
2204 "enable_preview_from_file_finder": false,
2205 "enable_preview_from_code_navigation": false,
2206}
2207```
2208
2209### Enable preview from file finder
2210
2211- Description: Determines whether to open files in preview mode when selected from the file finder.
2212- Setting: `enable_preview_from_file_finder`
2213- Default: `false`
2214
2215**Options**
2216
2217`boolean` values
2218
2219### Enable preview from code navigation
2220
2221- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2222- Setting: `enable_preview_from_code_navigation`
2223- Default: `false`
2224
2225**Options**
2226
2227`boolean` values
2228
2229## File Finder
2230
2231### File Icons
2232
2233- Description: Whether to show file icons in the file finder.
2234- Setting: `file_icons`
2235- Default: `true`
2236
2237### Modal Max Width
2238
2239- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2240- Setting: `modal_max_width`
2241- Default: `small`
2242
2243### Skip Focus For Active In Search
2244
2245- Description: Determines whether the file finder should skip focus for the active file in search results.
2246- Setting: `skip_focus_for_active_in_search`
2247- Default: `true`
2248
2249## Preferred Line Length
2250
2251- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2252- Setting: `preferred_line_length`
2253- Default: `80`
2254
2255**Options**
2256
2257`integer` values
2258
2259## Projects Online By Default
2260
2261- Description: Whether or not to show the online projects view by default.
2262- Setting: `projects_online_by_default`
2263- Default: `true`
2264
2265**Options**
2266
2267`boolean` values
2268
2269## Remove Trailing Whitespace On Save
2270
2271- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2272- Setting: `remove_trailing_whitespace_on_save`
2273- Default: `true`
2274
2275**Options**
2276
2277`boolean` values
2278
2279## Search
2280
2281- Description: Search options to enable by default when opening new project and buffer searches.
2282- Setting: `search`
2283- Default:
2284
2285```json
2286"search": {
2287 "whole_word": false,
2288 "case_sensitive": false,
2289 "include_ignored": false,
2290 "regex": false
2291},
2292```
2293
2294## Seed Search Query From Cursor
2295
2296- Description: When to populate a new search's query based on the text under the cursor.
2297- Setting: `seed_search_query_from_cursor`
2298- Default: `always`
2299
2300**Options**
2301
23021. `always` always populate the search query with the word under the cursor
23032. `selection` only populate the search query when there is text selected
23043. `never` never populate the search query
2305
2306## Use Smartcase Search
2307
2308- 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. \
2309 This applies to both in-file searches and project-wide searches.
2310- Setting: `use_smartcase_search`
2311- Default: `false`
2312
2313**Options**
2314
2315`boolean` values
2316
2317Examples:
2318
2319- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2320- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2321
2322## Show Call Status Icon
2323
2324- Description: Whether or not to show the call status icon in the status bar.
2325- Setting: `show_call_status_icon`
2326- Default: `true`
2327
2328**Options**
2329
2330`boolean` values
2331
2332## Completions
2333
2334- Description: Controls how completions are processed for this language.
2335- Setting: `completions`
2336- Default:
2337
2338```json
2339{
2340 "completions": {
2341 "words": "fallback",
2342 "lsp": true,
2343 "lsp_fetch_timeout_ms": 0,
2344 "lsp_insert_mode": "replace_suffix"
2345 }
2346}
2347```
2348
2349### Words
2350
2351- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2352- Setting: `words`
2353- Default: `fallback`
2354
2355**Options**
2356
23571. `enabled` - Always fetch document's words for completions along with LSP completions
23582. `fallback` - Only if LSP response errors or times out, use document's words to show completions
23593. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2360
2361### LSP
2362
2363- Description: Whether to fetch LSP completions or not.
2364- Setting: `lsp`
2365- Default: `true`
2366
2367**Options**
2368
2369`boolean` values
2370
2371### LSP Fetch Timeout (ms)
2372
2373- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2374- Setting: `lsp_fetch_timeout_ms`
2375- Default: `0`
2376
2377**Options**
2378
2379`integer` values representing milliseconds
2380
2381### LSP Insert Mode
2382
2383- Description: Controls what range to replace when accepting LSP completions.
2384- Setting: `lsp_insert_mode`
2385- Default: `replace_suffix`
2386
2387**Options**
2388
23891. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
23902. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
23913. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
23924. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2393
2394## Show Completions On Input
2395
2396- Description: Whether or not to show completions as you type.
2397- Setting: `show_completions_on_input`
2398- Default: `true`
2399
2400**Options**
2401
2402`boolean` values
2403
2404## Show Completion Documentation
2405
2406- Description: Whether to display inline and alongside documentation for items in the completions menu.
2407- Setting: `show_completion_documentation`
2408- Default: `true`
2409
2410**Options**
2411
2412`boolean` values
2413
2414## Show Edit Predictions
2415
2416- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2417- Setting: `show_edit_predictions`
2418- Default: `true`
2419
2420**Options**
2421
2422`boolean` values
2423
2424## Show Whitespaces
2425
2426- Description: Whether or not to render whitespace characters in the editor.
2427- Setting: `show_whitespaces`
2428- Default: `selection`
2429
2430**Options**
2431
24321. `all`
24332. `selection`
24343. `none`
24354. `boundary`
2436
2437## Soft Wrap
2438
2439- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2440- Setting: `soft_wrap`
2441- Default: `none`
2442
2443**Options**
2444
24451. `none` to avoid wrapping generally, unless the line is too long
24462. `prefer_line` (deprecated, same as `none`)
24473. `editor_width` to wrap lines that overflow the editor width
24484. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
24495. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2450
2451## Wrap Guides (Vertical Rulers)
2452
2453- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2454- Setting: `wrap_guides`
2455- Default: []
2456
2457**Options**
2458
2459List of `integer` column numbers
2460
2461## Tab Size
2462
2463- Description: The number of spaces to use for each tab character.
2464- Setting: `tab_size`
2465- Default: `4`
2466
2467**Options**
2468
2469`integer` values
2470
2471## Telemetry
2472
2473- Description: Control what info is collected by Zed.
2474- Setting: `telemetry`
2475- Default:
2476
2477```json
2478"telemetry": {
2479 "diagnostics": true,
2480 "metrics": true
2481},
2482```
2483
2484**Options**
2485
2486### Diagnostics
2487
2488- Description: Setting for sending debug-related data, such as crash reports.
2489- Setting: `diagnostics`
2490- Default: `true`
2491
2492**Options**
2493
2494`boolean` values
2495
2496### Metrics
2497
2498- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2499- Setting: `metrics`
2500- Default: `true`
2501
2502**Options**
2503
2504`boolean` values
2505
2506## Terminal
2507
2508- Description: Configuration for the terminal.
2509- Setting: `terminal`
2510- Default:
2511
2512```json
2513{
2514 "terminal": {
2515 "alternate_scroll": "off",
2516 "blinking": "terminal_controlled",
2517 "copy_on_select": false,
2518 "dock": "bottom",
2519 "default_width": 640,
2520 "default_height": 320,
2521 "detect_venv": {
2522 "on": {
2523 "directories": [".env", "env", ".venv", "venv"],
2524 "activate_script": "default"
2525 }
2526 },
2527 "env": {},
2528 "font_family": null,
2529 "font_features": null,
2530 "font_size": null,
2531 "line_height": "comfortable",
2532 "option_as_meta": false,
2533 "button": true,
2534 "shell": "system",
2535 "toolbar": {
2536 "breadcrumbs": true
2537 },
2538 "working_directory": "current_project_directory",
2539 "scrollbar": {
2540 "show": null
2541 }
2542 }
2543}
2544```
2545
2546### Terminal: Dock
2547
2548- Description: Control the position of the dock
2549- Setting: `dock`
2550- Default: `bottom`
2551
2552**Options**
2553
2554`"bottom"`, `"left"` or `"right"`
2555
2556### Terminal: Alternate Scroll
2557
2558- 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.
2559- Setting: `alternate_scroll`
2560- Default: `off`
2561
2562**Options**
2563
25641. Default alternate scroll mode to off
2565
2566```json
2567{
2568 "terminal": {
2569 "alternate_scroll": "off"
2570 }
2571}
2572```
2573
25742. Default alternate scroll mode to on
2575
2576```json
2577{
2578 "terminal": {
2579 "alternate_scroll": "on"
2580 }
2581}
2582```
2583
2584### Terminal: Blinking
2585
2586- Description: Set the cursor blinking behavior in the terminal
2587- Setting: `blinking`
2588- Default: `terminal_controlled`
2589
2590**Options**
2591
25921. Never blink the cursor, ignore the terminal mode
2593
2594```json
2595{
2596 "terminal": {
2597 "blinking": "off"
2598 }
2599}
2600```
2601
26022. Default the cursor blink to off, but allow the terminal to turn blinking on
2603
2604```json
2605{
2606 "terminal": {
2607 "blinking": "terminal_controlled"
2608 }
2609}
2610```
2611
26123. Always blink the cursor, ignore the terminal mode
2613
2614```json
2615{
2616 "terminal": {
2617 "blinking": "on"
2618 }
2619}
2620```
2621
2622### Terminal: Copy On Select
2623
2624- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2625- Setting: `copy_on_select`
2626- Default: `false`
2627
2628**Options**
2629
2630`boolean` values
2631
2632**Example**
2633
2634```json
2635{
2636 "terminal": {
2637 "copy_on_select": true
2638 }
2639}
2640```
2641
2642### Terminal: Env
2643
2644- 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
2645- Setting: `env`
2646- Default: `{}`
2647
2648**Example**
2649
2650```json
2651{
2652 "terminal": {
2653 "env": {
2654 "ZED": "1",
2655 "KEY": "value1:value2"
2656 }
2657 }
2658}
2659```
2660
2661### Terminal: Font Size
2662
2663- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2664- Setting: `font_size`
2665- Default: `null`
2666
2667**Options**
2668
2669`integer` values
2670
2671```json
2672{
2673 "terminal": {
2674 "font_size": 15
2675 }
2676}
2677```
2678
2679### Terminal: Font Family
2680
2681- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
2682- Setting: `font_family`
2683- Default: `null`
2684
2685**Options**
2686
2687The name of any font family installed on the user's system
2688
2689```json
2690{
2691 "terminal": {
2692 "font_family": "Berkeley Mono"
2693 }
2694}
2695```
2696
2697### Terminal: Font Features
2698
2699- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
2700- Setting: `font_features`
2701- Default: `null`
2702- Platform: macOS and Windows.
2703
2704**Options**
2705
2706See Buffer Font Features
2707
2708```json
2709{
2710 "terminal": {
2711 "font_features": {
2712 "calt": false
2713 // See Buffer Font Features for more features
2714 }
2715 }
2716}
2717```
2718
2719### Terminal: Line Height
2720
2721- Description: Set the terminal's line height.
2722- Setting: `line_height`
2723- Default: `comfortable`
2724
2725**Options**
2726
27271. Use a line height that's `comfortable` for reading, 1.618. (default)
2728
2729```json
2730{
2731 "terminal": {
2732 "line_height": "comfortable"
2733 }
2734}
2735```
2736
27372. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
2738
2739```json
2740{
2741 "terminal": {
2742 "line_height": "standard"
2743 }
2744}
2745```
2746
27473. Use a custom line height.
2748
2749```json
2750{
2751 "terminal": {
2752 "line_height": {
2753 "custom": 2
2754 }
2755 }
2756}
2757```
2758
2759### Terminal: Option As Meta
2760
2761- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
2762- Setting: `option_as_meta`
2763- Default: `false`
2764
2765**Options**
2766
2767`boolean` values
2768
2769```json
2770{
2771 "terminal": {
2772 "option_as_meta": true
2773 }
2774}
2775```
2776
2777### Terminal: Shell
2778
2779- Description: What shell to use when launching the terminal.
2780- Setting: `shell`
2781- Default: `system`
2782
2783**Options**
2784
27851. Use the system's default terminal configuration (usually the `/etc/passwd` file).
2786
2787```json
2788{
2789 "terminal": {
2790 "shell": "system"
2791 }
2792}
2793```
2794
27952. A program to launch:
2796
2797```json
2798{
2799 "terminal": {
2800 "shell": {
2801 "program": "sh"
2802 }
2803 }
2804}
2805```
2806
28073. A program with arguments:
2808
2809```json
2810{
2811 "terminal": {
2812 "shell": {
2813 "with_arguments": {
2814 "program": "/bin/bash",
2815 "args": ["--login"]
2816 }
2817 }
2818 }
2819}
2820```
2821
2822## Terminal: Detect Virtual Environments {#terminal-detect_venv}
2823
2824- 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.
2825- Setting: `detect_venv`
2826- Default:
2827
2828```json
2829{
2830 "terminal": {
2831 "detect_venv": {
2832 "on": {
2833 // Default directories to search for virtual environments, relative
2834 // to the current working directory. We recommend overriding this
2835 // in your project's settings, rather than globally.
2836 "directories": [".env", "env", ".venv", "venv"],
2837 // Can also be `csh`, `fish`, and `nushell`
2838 "activate_script": "default"
2839 }
2840 }
2841 }
2842}
2843```
2844
2845Disable with:
2846
2847```json
2848{
2849 "terminal": {
2850 "detect_venv": "off"
2851 }
2852}
2853```
2854
2855## Terminal: Toolbar
2856
2857- Description: Whether or not to show various elements in the terminal toolbar.
2858- Setting: `toolbar`
2859- Default:
2860
2861```json
2862{
2863 "terminal": {
2864 "toolbar": {
2865 "breadcrumbs": true
2866 }
2867 }
2868}
2869```
2870
2871**Options**
2872
2873At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
2874
2875If the terminal title is empty, the breadcrumbs won't be shown.
2876
2877The shell running in the terminal needs to be configured to emit the title.
2878
2879Example command to set the title: `echo -e "\e]2;New Title\007";`
2880
2881### Terminal: Button
2882
2883- Description: Control to show or hide the terminal button in the status bar
2884- Setting: `button`
2885- Default: `true`
2886
2887**Options**
2888
2889`boolean` values
2890
2891```json
2892{
2893 "terminal": {
2894 "button": false
2895 }
2896}
2897```
2898
2899### Terminal: Working Directory
2900
2901- Description: What working directory to use when launching the terminal.
2902- Setting: `working_directory`
2903- Default: `"current_project_directory"`
2904
2905**Options**
2906
29071. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
2908
2909```json
2910{
2911 "terminal": {
2912 "working_directory": "current_project_directory"
2913 }
2914}
2915```
2916
29172. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
2918
2919```json
2920{
2921 "terminal": {
2922 "working_directory": "first_project_directory"
2923 }
2924}
2925```
2926
29273. Always use this platform's home directory (if we can find it)
2928
2929```json
2930{
2931 "terminal": {
2932 "working_directory": "always_home"
2933 }
2934}
2935```
2936
29374. 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.
2938
2939```json
2940{
2941 "terminal": {
2942 "working_directory": {
2943 "always": {
2944 "directory": "~/zed/projects/"
2945 }
2946 }
2947 }
2948}
2949```
2950
2951## Theme
2952
2953- 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.
2954- Setting: `theme`
2955- Default: `One Dark`
2956
2957### Theme Object
2958
2959- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2960- Setting: `theme`
2961- Default:
2962
2963```json
2964"theme": {
2965 "mode": "system",
2966 "dark": "One Dark",
2967 "light": "One Light"
2968},
2969```
2970
2971### Mode
2972
2973- Description: Specify theme mode.
2974- Setting: `mode`
2975- Default: `system`
2976
2977**Options**
2978
29791. Set the theme to dark mode
2980
2981```json
2982{
2983 "mode": "dark"
2984}
2985```
2986
29872. Set the theme to light mode
2988
2989```json
2990{
2991 "mode": "light"
2992}
2993```
2994
29953. Set the theme to system mode
2996
2997```json
2998{
2999 "mode": "system"
3000}
3001```
3002
3003### Dark
3004
3005- Description: The name of the dark Zed theme to use for the UI.
3006- Setting: `dark`
3007- Default: `One Dark`
3008
3009**Options**
3010
3011Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
3012
3013### Light
3014
3015- Description: The name of the light Zed theme to use for the UI.
3016- Setting: `light`
3017- Default: `One Light`
3018
3019**Options**
3020
3021Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
3022
3023## Vim
3024
3025- Description: Whether or not to enable vim mode (work in progress).
3026- Setting: `vim_mode`
3027- Default: `false`
3028
3029## Project Panel
3030
3031- Description: Customize project panel
3032- Setting: `project_panel`
3033- Default:
3034
3035```json
3036{
3037 "project_panel": {
3038 "button": true,
3039 "default_width": 240,
3040 "dock": "left",
3041 "entry_spacing": "comfortable",
3042 "file_icons": true,
3043 "folder_icons": true,
3044 "git_status": true,
3045 "indent_size": 20,
3046 "auto_reveal_entries": true,
3047 "auto_fold_dirs": true,
3048 "scrollbar": {
3049 "show": null
3050 },
3051 "show_diagnostics": "all",
3052 "indent_guides": {
3053 "show": "always"
3054 }
3055 }
3056}
3057```
3058
3059### Dock
3060
3061- Description: Control the position of the dock
3062- Setting: `dock`
3063- Default: `left`
3064
3065**Options**
3066
30671. Default dock position to left
3068
3069```json
3070{
3071 "dock": "left"
3072}
3073```
3074
30752. Default dock position to right
3076
3077```json
3078{
3079 "dock": "right"
3080}
3081```
3082
3083### Entry Spacing
3084
3085- Description: Spacing between worktree entries
3086- Setting: `entry_spacing`
3087- Default: `comfortable`
3088
3089**Options**
3090
30911. Comfortable entry spacing
3092
3093```json
3094{
3095 "entry_spacing": "comfortable"
3096}
3097```
3098
30992. Standard entry spacing
3100
3101```json
3102{
3103 "entry_spacing": "standard"
3104}
3105```
3106
3107### Git Status
3108
3109- Description: Indicates newly created and updated files
3110- Setting: `git_status`
3111- Default: `true`
3112
3113**Options**
3114
31151. Default enable git status
3116
3117```json
3118{
3119 "git_status": true
3120}
3121```
3122
31232. Default disable git status
3124
3125```json
3126{
3127 "git_status": false
3128}
3129```
3130
3131### Default Width
3132
3133- Description: Customize default width taken by project panel
3134- Setting: `default_width`
3135- Default: `240`
3136
3137**Options**
3138
3139`float` values
3140
3141### Auto Reveal Entries
3142
3143- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
3144- Setting: `auto_reveal_entries`
3145- Default: `true`
3146
3147**Options**
3148
31491. Enable auto reveal entries
3150
3151```json
3152{
3153 "auto_reveal_entries": true
3154}
3155```
3156
31572. Disable auto reveal entries
3158
3159```json
3160{
3161 "auto_reveal_entries": false
3162}
3163```
3164
3165### Auto Fold Dirs
3166
3167- Description: Whether to fold directories automatically when directory has only one directory inside.
3168- Setting: `auto_fold_dirs`
3169- Default: `true`
3170
3171**Options**
3172
31731. Enable auto fold dirs
3174
3175```json
3176{
3177 "auto_fold_dirs": true
3178}
3179```
3180
31812. Disable auto fold dirs
3182
3183```json
3184{
3185 "auto_fold_dirs": false
3186}
3187```
3188
3189### Indent Size
3190
3191- Description: Amount of indentation (in pixels) for nested items.
3192- Setting: `indent_size`
3193- Default: `20`
3194
3195### Indent Guides: Show
3196
3197- Description: Whether to show indent guides in the project panel.
3198- Setting: `indent_guides`
3199- Default:
3200
3201```json
3202"indent_guides": {
3203 "show": "always"
3204}
3205```
3206
3207**Options**
3208
32091. Show indent guides in the project panel
3210
3211```json
3212{
3213 "indent_guides": {
3214 "show": "always"
3215 }
3216}
3217```
3218
32192. Hide indent guides in the project panel
3220
3221```json
3222{
3223 "indent_guides": {
3224 "show": "never"
3225 }
3226}
3227```
3228
3229### Scrollbar: Show
3230
3231- Description: Whether to show a scrollbar in the project panel. Possible values: null, "auto", "system", "always", "never". Inherits editor settings when absent, see its description for more details.
3232- Setting: `scrollbar`
3233- Default:
3234
3235```json
3236"scrollbar": {
3237 "show": null
3238}
3239```
3240
3241**Options**
3242
32431. Show scrollbar in the project panel
3244
3245```json
3246{
3247 "scrollbar": {
3248 "show": "always"
3249 }
3250}
3251```
3252
32532. Hide scrollbar in the project panel
3254
3255```json
3256{
3257 "scrollbar": {
3258 "show": "never"
3259 }
3260}
3261```
3262
3263## Agent
3264
3265- Description: Customize agent behavior
3266- Setting: `agent`
3267- Default:
3268
3269```json
3270"agent": {
3271 "version": "2",
3272 "enabled": true,
3273 "button": true,
3274 "dock": "right",
3275 "default_width": 640,
3276 "default_height": 320,
3277 "default_model": {
3278 "provider": "zed.dev",
3279 "model": "claude-3-7-sonnet-latest"
3280 },
3281 "editor_model": {
3282 "provider": "zed.dev",
3283 "model": "claude-3-7-sonnet-latest"
3284 },
3285 "single_file_review": true,
3286}
3287```
3288
3289## Outline Panel
3290
3291- Description: Customize outline Panel
3292- Setting: `outline_panel`
3293- Default:
3294
3295```json
3296"outline_panel": {
3297 "button": true,
3298 "default_width": 300,
3299 "dock": "left",
3300 "file_icons": true,
3301 "folder_icons": true,
3302 "git_status": true,
3303 "indent_size": 20,
3304 "auto_reveal_entries": true,
3305 "auto_fold_dirs": true,
3306 "indent_guides": {
3307 "show": "always"
3308 },
3309 "scrollbar": {
3310 "show": null
3311 }
3312}
3313```
3314
3315## Calls
3316
3317- Description: Customize behavior when participating in a call
3318- Setting: `calls`
3319- Default:
3320
3321```json
3322"calls": {
3323 // Join calls with the microphone live by default
3324 "mute_on_join": false,
3325 // Share your project when you are the first to join a channel
3326 "share_on_join": false
3327},
3328```
3329
3330## Unnecessary Code Fade
3331
3332- Description: How much to fade out unused code.
3333- Setting: `unnecessary_code_fade`
3334- Default: `0.3`
3335
3336**Options**
3337
3338Float values between `0.0` and `0.9`, where:
3339
3340- `0.0` means no fading (unused code looks the same as used code)
3341- `0.9` means maximum fading (unused code is very faint but still visible)
3342
3343**Example**
3344
3345```json
3346{
3347 "unnecessary_code_fade": 0.5
3348}
3349```
3350
3351## UI Font Family
3352
3353- Description: The name of the font to use for text in the UI.
3354- Setting: `ui_font_family`
3355- Default: `Zed Plex Sans`
3356
3357**Options**
3358
3359The name of any font family installed on the system.
3360
3361## UI Font Features
3362
3363- Description: The OpenType features to enable for text in the UI.
3364- Setting: `ui_font_features`
3365- Default:
3366
3367```json
3368"ui_font_features": {
3369 "calt": false
3370}
3371```
3372
3373- Platform: macOS and Windows.
3374
3375**Options**
3376
3377Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3378
3379For example, to disable font ligatures, add the following to your settings:
3380
3381```json
3382{
3383 "ui_font_features": {
3384 "calt": false
3385 }
3386}
3387```
3388
3389You can also set other OpenType features, like setting `cv01` to `7`:
3390
3391```json
3392{
3393 "ui_font_features": {
3394 "cv01": 7
3395 }
3396}
3397```
3398
3399## UI Font Fallbacks
3400
3401- Description: The font fallbacks to use for text in the UI.
3402- Setting: `ui_font_fallbacks`
3403- Default: `null`
3404- Platform: macOS and Windows.
3405
3406**Options**
3407
3408For example, to use `Nerd Font` as a fallback, add the following to your settings:
3409
3410```json
3411{
3412 "ui_font_fallbacks": ["Nerd Font"]
3413}
3414```
3415
3416## UI Font Size
3417
3418- Description: The default font size for text in the UI.
3419- Setting: `ui_font_size`
3420- Default: `16`
3421
3422**Options**
3423
3424`integer` values from `6` to `100` pixels (inclusive)
3425
3426## UI Font Weight
3427
3428- Description: The default font weight for text in the UI.
3429- Setting: `ui_font_weight`
3430- Default: `400`
3431
3432**Options**
3433
3434`integer` values between `100` and `900`
3435
3436## An example configuration:
3437
3438```json
3439// ~/.config/zed/settings.json
3440{
3441 "theme": "cave-light",
3442 "tab_size": 2,
3443 "preferred_line_length": 80,
3444 "soft_wrap": "none",
3445
3446 "buffer_font_size": 18,
3447 "buffer_font_family": "Zed Plex Mono",
3448
3449 "autosave": "on_focus_change",
3450 "format_on_save": "off",
3451 "vim_mode": false,
3452 "projects_online_by_default": true,
3453 "terminal": {
3454 "font_family": "FiraCode Nerd Font Mono",
3455 "blinking": "off"
3456 },
3457 "languages": {
3458 "C": {
3459 "format_on_save": "language_server",
3460 "preferred_line_length": 64,
3461 "soft_wrap": "preferred_line_length"
3462 }
3463 }
3464}
3465```