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