1# All Settings
2
3This is the complete reference for all Zed settings.
4
5You may also want to change your [theme](../themes.md), configure your [key bindings](../key-bindings.md), set up [tasks](../tasks.md), or install [extensions](../extensions.md).
6
7# Settings
8
9Find below an extensive run-through of many supported settings by Zed.
10
11## Active Pane Modifiers
12
13- Description: Styling settings applied to the active pane.
14- Setting: `active_pane_modifiers`
15- Default:
16
17```json [settings]
18{
19 "active_pane_modifiers": {
20 "border_size": 0.0,
21 "inactive_opacity": 1.0
22 }
23}
24```
25
26### Border size
27
28- 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.
29- Setting: `border_size`
30- Default: `0.0`
31
32**Options**
33
34Non-negative `float` values
35
36### Inactive Opacity
37
38- 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.
39- Setting: `inactive_opacity`
40- Default: `1.0`
41
42**Options**
43
44`float` values
45
46## Bottom Dock Layout
47
48- Description: Control the layout of the bottom dock, relative to the left and right docks.
49- Setting: `bottom_dock_layout`
50- Default: `"contained"`
51
52**Options**
53
541. Contain the bottom dock, giving the full height of the window to the left and right docks.
55
56```json [settings]
57{
58 "bottom_dock_layout": "contained"
59}
60```
61
622. Give the bottom dock the full width of the window, truncating the left and right docks.
63
64```json [settings]
65{
66 "bottom_dock_layout": "full"
67}
68```
69
703. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window.
71
72```json [settings]
73{
74 "bottom_dock_layout": "left_aligned"
75}
76```
77
784. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
79
80```json [settings]
81{
82 "bottom_dock_layout": "right_aligned"
83}
84```
85
86## Agent Font Size
87
88- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
89- Setting: `agent_font_size`
90- Default: `null`
91
92**Options**
93
94`integer` values from `6` to `100` pixels (inclusive)
95
96## Allow Rewrap
97
98- Description: Controls where the {#action editor::Rewrap} action is allowed in the current language scope
99- Setting: `allow_rewrap`
100- Default: `"in_comments"`
101
102**Options**
103
1041. Allow rewrap in comments only:
105
106```json [settings]
107{
108 "allow_rewrap": "in_comments"
109}
110```
111
1122. Allow rewrap in selections only:
113
114```json [settings]
115{
116 "allow_rewrap": "in_selections"
117}
118```
119
1203. Allow rewrap anywhere:
121
122```json [settings]
123{
124 "allow_rewrap": "anywhere"
125}
126```
127
128Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
129
130## Auto Indent
131
132- Description: Whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis.
133- Setting: `auto_indent`
134- Default: `true`
135
136**Options**
137
138`boolean` values
139
140## Auto Indent On Paste
141
142- Description: Whether indentation of pasted content should be adjusted based on the context
143- Setting: `auto_indent_on_paste`
144- Default: `true`
145
146**Options**
147
148`boolean` values
149
150## Auto Install extensions
151
152- Description: Define extensions to be autoinstalled or never be installed.
153- Setting: `auto_install_extensions`
154- Default: `{ "html": true }`
155
156**Options**
157
158You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](../extensions/installing-extensions.md#installation-location):
159
160On macOS:
161
162```sh
163ls ~/Library/Application\ Support/Zed/extensions/installed/
164```
165
166On Linux:
167
168```sh
169ls ~/.local/share/zed/extensions/installed
170```
171
172Define extensions which should be installed (`true`) or never installed (`false`).
173
174```json [settings]
175{
176 "auto_install_extensions": {
177 "html": true,
178 "dockerfile": true,
179 "docker-compose": false
180 }
181}
182```
183
184## Autosave
185
186- Description: When to automatically save edited buffers.
187- Setting: `autosave`
188- Default: `off`
189
190**Options**
191
1921. To disable autosave, set it to `off`:
193
194```json [settings]
195{
196 "autosave": "off"
197}
198```
199
2002. To autosave when focus changes, use `on_focus_change`:
201
202```json [settings]
203{
204 "autosave": "on_focus_change"
205}
206```
207
2083. To autosave when the active window changes, use `on_window_change`:
209
210```json [settings]
211{
212 "autosave": "on_window_change"
213}
214```
215
2164. To autosave after an inactivity period, use `after_delay`:
217
218```json [settings]
219{
220 "autosave": {
221 "after_delay": {
222 "milliseconds": 1000
223 }
224 }
225}
226```
227
228Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.
229
230## Autoscroll on Clicks
231
232- Description: Whether to scroll when clicking near the edge of the visible text area.
233- Setting: `autoscroll_on_clicks`
234- Default: `false`
235
236**Options**
237
238`boolean` values
239
240## Auto Signature Help
241
242- Description: Show method signatures in the editor, when inside parentheses
243- Setting: `auto_signature_help`
244- Default: `false`
245
246**Options**
247
248`boolean` values
249
250### Show Signature Help After Edits
251
252- Description: Whether to show the signature help after completion or a bracket pair inserted. If `auto_signature_help` is enabled, this setting will be treated as enabled also.
253- Setting: `show_signature_help_after_edits`
254- Default: `false`
255
256**Options**
257
258`boolean` values
259
260## Auto Update
261
262- Description: Whether or not to automatically check for updates.
263- Setting: `auto_update`
264- Default: `true`
265
266**Options**
267
268`boolean` values
269
270## Base Keymap
271
272- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
273- Setting: `base_keymap`
274- Default: `VSCode`
275
276**Options**
277
2781. VS Code
279
280```json [settings]
281{
282 "base_keymap": "VSCode"
283}
284```
285
2862. Atom
287
288```json [settings]
289{
290 "base_keymap": "Atom"
291}
292```
293
2943. JetBrains
295
296```json [settings]
297{
298 "base_keymap": "JetBrains"
299}
300```
301
3024. None
303
304```json [settings]
305{
306 "base_keymap": "None"
307}
308```
309
3105. Sublime Text
311
312```json [settings]
313{
314 "base_keymap": "SublimeText"
315}
316```
317
3186. TextMate
319
320```json [settings]
321{
322 "base_keymap": "TextMate"
323}
324```
325
326## Buffer Font Family
327
328- Description: The name of a font to use for rendering text in the editor.
329- Setting: `buffer_font_family`
330- Default: `.ZedMono`. This currently aliases to [Lilex](https://lilex.myrt.co).
331
332**Options**
333
334The name of any font family installed on the user's system, or `".ZedMono"`.
335
336## Buffer Font Features
337
338- Description: The OpenType features to enable for text in the editor.
339- Setting: `buffer_font_features`
340- Default: `null`
341- Platform: macOS and Windows.
342
343**Options**
344
345Zed 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.
346
347For example, to disable font ligatures, add the following to your settings:
348
349```json [settings]
350{
351 "buffer_font_features": {
352 "calt": false
353 }
354}
355```
356
357You can also set other OpenType features, like setting `cv01` to `7`:
358
359```json [settings]
360{
361 "buffer_font_features": {
362 "cv01": 7
363 }
364}
365```
366
367## Buffer Font Fallbacks
368
369- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
370- Setting: `buffer_font_fallbacks`
371- Default: `null`
372- Platform: macOS and Windows.
373
374**Options**
375
376For example, to use `Nerd Font` as a fallback, add the following to your settings:
377
378```json [settings]
379{
380 "buffer_font_fallbacks": ["Nerd Font"]
381}
382```
383
384## Buffer Font Size
385
386- Description: The default font size for text in the editor.
387- Setting: `buffer_font_size`
388- Default: `15`
389
390**Options**
391
392A font size from `6` to `100` pixels (inclusive)
393
394## Buffer Font Weight
395
396- Description: The default font weight for text in the editor.
397- Setting: `buffer_font_weight`
398- Default: `400`
399
400**Options**
401
402`integer` values between `100` and `900`
403
404## Buffer Line Height
405
406- Description: The default line height for text in the editor.
407- Setting: `buffer_line_height`
408- Default: `"comfortable"`
409
410**Options**
411
412`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
413
414## Centered Layout
415
416- Description: Configuration for the centered layout mode.
417- Setting: `centered_layout`
418- Default:
419
420```json [settings]
421"centered_layout": {
422 "left_padding": 0.2,
423 "right_padding": 0.2,
424}
425```
426
427**Options**
428
429The `left_padding` and `right_padding` options define the relative width of the
430left 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`.
431
432## Close on File Delete
433
434- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
435- Setting: `close_on_file_delete`
436- Default: `false`
437
438**Options**
439
440`boolean` values
441
442When 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.
443
444Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
445
446## Confirm Quit
447
448- Description: Whether or not to prompt the user to confirm before closing the application.
449- Setting: `confirm_quit`
450- Default: `false`
451
452**Options**
453
454`boolean` values
455
456## Diagnostics Max Severity
457
458- Description: Which level to use to filter out diagnostics displayed in the editor
459- Setting: `diagnostics_max_severity`
460- Default: `null`
461
462**Options**
463
4641. Allow all diagnostics (default):
465
466```json [settings]
467{
468 "diagnostics_max_severity": "all"
469}
470```
471
4722. Show only errors:
473
474```json [settings]
475{
476 "diagnostics_max_severity": "error"
477}
478```
479
4803. Show errors and warnings:
481
482```json [settings]
483{
484 "diagnostics_max_severity": "warning"
485}
486```
487
4884. Show errors, warnings, and information:
489
490```json [settings]
491{
492 "diagnostics_max_severity": "info"
493}
494```
495
4965. Show all including hints:
497
498```json [settings]
499{
500 "diagnostics_max_severity": "hint"
501}
502```
503
504## Disable AI
505
506- Description: Whether to disable all AI features in Zed
507- Setting: `disable_ai`
508- Default: `false`
509
510**Options**
511
512`boolean` values
513
514## Direnv Integration
515
516- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
517 `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.
518 It also allows for those environment variables to be used in tasks.
519- Setting: `load_direnv`
520- Default: `"direct"`
521
522**Options**
523
524There are three options to choose from:
525
5261. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
5272. `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.
5283. `disabled`: No shell environment will be loaded automatically; direnv must be invoked manually (e.g. with `direnv exec`) to be used.
529
530## Double Click In Multibuffer
531
532- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
533- Setting: `double_click_in_multibuffer`
534- Default: `"select"`
535
536**Options**
537
5381. Behave as a regular buffer and select the whole word (default):
539
540```json [settings]
541{
542 "double_click_in_multibuffer": "select"
543}
544```
545
5462. Open the excerpt clicked as a new buffer in the new tab:
547
548```json [settings]
549{
550 "double_click_in_multibuffer": "open"
551}
552```
553
554For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
555
556## Drop Target Size
557
558- Description: Relative size of the drop target in the editor that will open dropped file as a split pane (0-0.5). For example, 0.25 means if you drop onto the top/bottom quarter of the pane a new vertical split will be used, if you drop onto the left/right quarter of the pane a new horizontal split will be used.
559- Setting: `drop_target_size`
560- Default: `0.2`
561
562**Options**
563
564`float` values between `0` and `0.5`
565
566## Edit Predictions
567
568- Description: Settings for edit predictions.
569- Setting: `edit_predictions`
570- Default:
571
572```json [settings]
573 "edit_predictions": {
574 "disabled_globs": [
575 "**/.env*",
576 "**/*.pem",
577 "**/*.key",
578 "**/*.cert",
579 "**/*.crt",
580 "**/.dev.vars",
581 "**/secrets.yml"
582 ]
583 }
584```
585
586**Options**
587
588### Disabled Globs
589
590- 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.
591- Setting: `disabled_globs`
592- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
593
594**Options**
595
596List of `string` values.
597
598## Edit Predictions Disabled in
599
600- Description: A list of language scopes in which edit predictions should be disabled.
601- Setting: `edit_predictions_disabled_in`
602- Default: `[]`
603
604**Options**
605
606List of `string` values
607
6081. Don't show edit predictions in comments:
609
610```json [settings]
611"disabled_in": ["comment"]
612```
613
6142. Don't show edit predictions in strings and comments:
615
616```json [settings]
617"disabled_in": ["comment", "string"]
618```
619
6203. Only in Go, don't show edit predictions in strings and comments:
621
622```json [settings]
623{
624 "languages": {
625 "Go": {
626 "edit_predictions_disabled_in": ["comment", "string"]
627 }
628 }
629}
630```
631
632## Current Line Highlight
633
634- Description: How to highlight the current line in the editor.
635- Setting: `current_line_highlight`
636- Default: `all`
637
638**Options**
639
6401. Don't highlight the current line:
641
642```json [settings]
643"current_line_highlight": "none"
644```
645
6462. Highlight the gutter area:
647
648```json [settings]
649"current_line_highlight": "gutter"
650```
651
6523. Highlight the editor area:
653
654```json [settings]
655"current_line_highlight": "line"
656```
657
6584. Highlight the full line:
659
660```json [settings]
661"current_line_highlight": "all"
662```
663
664## Selection Highlight
665
666- Description: Whether to highlight all occurrences of the selected text in an editor.
667- Setting: `selection_highlight`
668- Default: `true`
669
670## Rounded Selection
671
672- Description: Whether the text selection should have rounded corners.
673- Setting: `rounded_selection`
674- Default: `true`
675
676## Cursor Blink
677
678- Description: Whether or not the cursor blinks.
679- Setting: `cursor_blink`
680- Default: `true`
681
682**Options**
683
684`boolean` values
685
686## Cursor Shape
687
688- Description: Cursor shape for the default editor.
689- Setting: `cursor_shape`
690- Default: `bar`
691
692**Options**
693
6941. A vertical bar:
695
696```json [settings]
697"cursor_shape": "bar"
698```
699
7002. A block that surrounds the following character:
701
702```json [settings]
703"cursor_shape": "block"
704```
705
7063. An underline / underscore that runs along the following character:
707
708```json [settings]
709"cursor_shape": "underline"
710```
711
7124. An box drawn around the following character:
713
714```json [settings]
715"cursor_shape": "hollow"
716```
717
718## Gutter
719
720- Description: Settings for the editor gutter
721- Setting: `gutter`
722- Default:
723
724```json [settings]
725{
726 "gutter": {
727 "line_numbers": true,
728 "runnables": true,
729 "breakpoints": true,
730 "folds": true,
731 "min_line_number_digits": 4
732 }
733}
734```
735
736**Options**
737
738- `line_numbers`: Whether to show line numbers in the gutter
739- `runnables`: Whether to show runnable buttons in the gutter
740- `breakpoints`: Whether to show breakpoints in the gutter
741- `folds`: Whether to show fold buttons in the gutter
742- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
743
744## Hide Mouse
745
746- Description: Determines when the mouse cursor should be hidden in an editor or input box.
747- Setting: `hide_mouse`
748- Default: `on_typing_and_movement`
749
750**Options**
751
7521. Never hide the mouse cursor:
753
754```json [settings]
755"hide_mouse": "never"
756```
757
7582. Hide only when typing:
759
760```json [settings]
761"hide_mouse": "on_typing"
762```
763
7643. Hide on both typing and cursor movement:
765
766```json [settings]
767"hide_mouse": "on_typing_and_movement"
768```
769
770## Snippet Sort Order
771
772- Description: Determines how snippets are sorted relative to other completion items.
773- Setting: `snippet_sort_order`
774- Default: `inline`
775
776**Options**
777
7781. Place snippets at the top of the completion list:
779
780```json [settings]
781"snippet_sort_order": "top"
782```
783
7842. Place snippets normally without any preference:
785
786```json [settings]
787"snippet_sort_order": "inline"
788```
789
7903. Place snippets at the bottom of the completion list:
791
792```json [settings]
793"snippet_sort_order": "bottom"
794```
795
7964. Do not show snippets in the completion list at all:
797
798```json [settings]
799"snippet_sort_order": "none"
800```
801
802## Editor Scrollbar
803
804- Description: Whether or not to show the editor scrollbar and various elements in it.
805- Setting: `scrollbar`
806- Default:
807
808```json [settings]
809"scrollbar": {
810 "show": "auto",
811 "cursors": true,
812 "git_diff": true,
813 "search_results": true,
814 "selected_text": true,
815 "selected_symbol": true,
816 "diagnostics": "all",
817 "axes": {
818 "horizontal": true,
819 "vertical": true,
820 },
821},
822```
823
824### Show Mode
825
826- Description: When to show the editor scrollbar.
827- Setting: `show`
828- Default: `auto`
829
830**Options**
831
8321. Show the scrollbar if there's important information or follow the system's configured behavior:
833
834```json [settings]
835"scrollbar": {
836 "show": "auto"
837}
838```
839
8402. Match the system's configured behavior:
841
842```json [settings]
843"scrollbar": {
844 "show": "system"
845}
846```
847
8483. Always show the scrollbar:
849
850```json [settings]
851"scrollbar": {
852 "show": "always"
853}
854```
855
8564. Never show the scrollbar:
857
858```json [settings]
859"scrollbar": {
860 "show": "never"
861}
862```
863
864### Cursor Indicators
865
866- Description: Whether to show cursor positions in the scrollbar.
867- Setting: `cursors`
868- Default: `true`
869
870Cursor indicators appear as small marks on the scrollbar showing where other collaborators' cursors are positioned in the file.
871
872**Options**
873
874`boolean` values
875
876### Git Diff Indicators
877
878- Description: Whether to show git diff indicators in the scrollbar.
879- Setting: `git_diff`
880- Default: `true`
881
882Git diff indicators appear as colored marks showing lines that have been added, modified, or deleted compared to the git HEAD.
883
884**Options**
885
886`boolean` values
887
888### Search Results Indicators
889
890- Description: Whether to show buffer search results in the scrollbar.
891- Setting: `search_results`
892- Default: `true`
893
894Search result indicators appear as marks showing all locations in the file where your current search query matches.
895
896**Options**
897
898`boolean` values
899
900### Selected Text Indicators
901
902- Description: Whether to show selected text occurrences in the scrollbar.
903- Setting: `selected_text`
904- Default: `true`
905
906Selected text indicators appear as marks showing all occurrences of the currently selected text throughout the file.
907
908**Options**
909
910`boolean` values
911
912### Selected Symbols Indicators
913
914- Description: Whether to show selected symbol occurrences in the scrollbar.
915- Setting: `selected_symbol`
916- Default: `true`
917
918Selected symbol indicators appear as marks showing all occurrences of the currently selected symbol (like a function or variable name) throughout the file.
919
920**Options**
921
922`boolean` values
923
924### Diagnostics
925
926- Description: Which diagnostic indicators to show in the scrollbar.
927- Setting: `diagnostics`
928- Default: `all`
929
930Diagnostic indicators appear as colored marks showing errors, warnings, and other language server diagnostics at their corresponding line positions in the file.
931
932**Options**
933
9341. Show all diagnostics:
935
936```json [settings]
937{
938 "show_diagnostics": "all"
939}
940```
941
9422. Do not show any diagnostics:
943
944```json [settings]
945{
946 "show_diagnostics": "off"
947}
948```
949
9503. Show only errors:
951
952```json [settings]
953{
954 "show_diagnostics": "error"
955}
956```
957
9584. Show only errors and warnings:
959
960```json [settings]
961{
962 "show_diagnostics": "warning"
963}
964```
965
9665. Show only errors, warnings, and information:
967
968```json [settings]
969{
970 "show_diagnostics": "info"
971}
972```
973
974### Axes
975
976- Description: Forcefully enable or disable the scrollbar for each axis
977- Setting: `axes`
978- Default:
979
980```json [settings]
981"scrollbar": {
982 "axes": {
983 "horizontal": true,
984 "vertical": true,
985 },
986}
987```
988
989#### Horizontal
990
991- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
992- Setting: `horizontal`
993- Default: `true`
994
995**Options**
996
997`boolean` values
998
999#### Vertical
1000
1001- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
1002- Setting: `vertical`
1003- Default: `true`
1004
1005**Options**
1006
1007`boolean` values
1008
1009## Minimap
1010
1011- Description: Settings related to the editor's minimap, which provides an overview of your document.
1012- Setting: `minimap`
1013- Default:
1014
1015```json [settings]
1016{
1017 "minimap": {
1018 "show": "never",
1019 "thumb": "always",
1020 "thumb_border": "left_open",
1021 "current_line_highlight": null
1022 }
1023}
1024```
1025
1026### Show Mode
1027
1028- Description: When to show the minimap in the editor.
1029- Setting: `show`
1030- Default: `never`
1031
1032**Options**
1033
10341. Always show the minimap:
1035
1036```json [settings]
1037{
1038 "show": "always"
1039}
1040```
1041
10422. Show the minimap if the editor's scrollbars are visible:
1043
1044```json [settings]
1045{
1046 "show": "auto"
1047}
1048```
1049
10503. Never show the minimap:
1051
1052```json [settings]
1053{
1054 "show": "never"
1055}
1056```
1057
1058### Thumb Display
1059
1060- Description: When to show the minimap thumb (the visible editor area) in the minimap.
1061- Setting: `thumb`
1062- Default: `always`
1063
1064**Options**
1065
10661. Show the minimap thumb when hovering over the minimap:
1067
1068```json [settings]
1069{
1070 "thumb": "hover"
1071}
1072```
1073
10742. Always show the minimap thumb:
1075
1076```json [settings]
1077{
1078 "thumb": "always"
1079}
1080```
1081
1082### Thumb Border
1083
1084- Description: How the minimap thumb border should look.
1085- Setting: `thumb_border`
1086- Default: `left_open`
1087
1088**Options**
1089
10901. Display a border on all sides of the thumb:
1091
1092```json [settings]
1093{
1094 "thumb_border": "full"
1095}
1096```
1097
10982. Display a border on all sides except the left side:
1099
1100```json [settings]
1101{
1102 "thumb_border": "left_open"
1103}
1104```
1105
11063. Display a border on all sides except the right side:
1107
1108```json [settings]
1109{
1110 "thumb_border": "right_open"
1111}
1112```
1113
11144. Display a border only on the left side:
1115
1116```json [settings]
1117{
1118 "thumb_border": "left_only"
1119}
1120```
1121
11225. Display the thumb without any border:
1123
1124```json [settings]
1125{
1126 "thumb_border": "none"
1127}
1128```
1129
1130### Current Line Highlight
1131
1132- Description: How to highlight the current line in the minimap.
1133- Setting: `current_line_highlight`
1134- Default: `null`
1135
1136**Options**
1137
11381. Inherit the editor's current line highlight setting:
1139
1140```json [settings]
1141{
1142 "minimap": {
1143 "current_line_highlight": null
1144 }
1145}
1146```
1147
11482. Highlight the current line in the minimap:
1149
1150```json [settings]
1151{
1152 "minimap": {
1153 "current_line_highlight": "line"
1154 }
1155}
1156```
1157
1158or
1159
1160```json [settings]
1161{
1162 "minimap": {
1163 "current_line_highlight": "all"
1164 }
1165}
1166```
1167
11683. Do not highlight the current line in the minimap:
1169
1170```json [settings]
1171{
1172 "minimap": {
1173 "current_line_highlight": "gutter"
1174 }
1175}
1176```
1177
1178or
1179
1180```json [settings]
1181{
1182 "minimap": {
1183 "current_line_highlight": "none"
1184 }
1185}
1186```
1187
1188## Editor Tab Bar
1189
1190- Description: Settings related to the editor's tab bar.
1191- Settings: `tab_bar`
1192- Default:
1193
1194```json [settings]
1195"tab_bar": {
1196 "show": true,
1197 "show_nav_history_buttons": true,
1198 "show_tab_bar_buttons": true
1199}
1200```
1201
1202### Show
1203
1204- Description: Whether or not to show the tab bar in the editor.
1205- Setting: `show`
1206- Default: `true`
1207
1208**Options**
1209
1210`boolean` values
1211
1212### Navigation History Buttons
1213
1214- Description: Whether or not to show the navigation history buttons.
1215- Setting: `show_nav_history_buttons`
1216- Default: `true`
1217
1218**Options**
1219
1220`boolean` values
1221
1222### Tab Bar Buttons
1223
1224- Description: Whether or not to show the tab bar buttons.
1225- Setting: `show_tab_bar_buttons`
1226- Default: `true`
1227
1228**Options**
1229
1230`boolean` values
1231
1232## Editor Tabs
1233
1234- Description: Configuration for the editor tabs.
1235- Setting: `tabs`
1236- Default:
1237
1238```json [settings]
1239"tabs": {
1240 "close_position": "right",
1241 "file_icons": false,
1242 "git_status": false,
1243 "activate_on_close": "history",
1244 "show_close_button": "hover",
1245 "show_diagnostics": "off"
1246},
1247```
1248
1249### Close Position
1250
1251- Description: Where to display close button within a tab.
1252- Setting: `close_position`
1253- Default: `right`
1254
1255**Options**
1256
12571. Display the close button on the right:
1258
1259```json [settings]
1260{
1261 "close_position": "right"
1262}
1263```
1264
12652. Display the close button on the left:
1266
1267```json [settings]
1268{
1269 "close_position": "left"
1270}
1271```
1272
1273### File Icons
1274
1275- Description: Whether to show the file icon for a tab.
1276- Setting: `file_icons`
1277- Default: `false`
1278
1279### Git Status
1280
1281- Description: Whether or not to show Git file status in tab.
1282- Setting: `git_status`
1283- Default: `false`
1284
1285### Activate on close
1286
1287- Description: What to do after closing the current tab.
1288- Setting: `activate_on_close`
1289- Default: `history`
1290
1291**Options**
1292
12931. Activate the tab that was open previously:
1294
1295```json [settings]
1296{
1297 "activate_on_close": "history"
1298}
1299```
1300
13012. Activate the right neighbour tab if present:
1302
1303```json [settings]
1304{
1305 "activate_on_close": "neighbour"
1306}
1307```
1308
13093. Activate the left neighbour tab if present:
1310
1311```json [settings]
1312{
1313 "activate_on_close": "left_neighbour"
1314}
1315```
1316
1317### Show close button
1318
1319- Description: Controls the appearance behavior of the tab's close button.
1320- Setting: `show_close_button`
1321- Default: `hover`
1322
1323**Options**
1324
13251. Show it just upon hovering the tab:
1326
1327```json [settings]
1328{
1329 "show_close_button": "hover"
1330}
1331```
1332
13332. Show it persistently:
1334
1335```json [settings]
1336{
1337 "show_close_button": "always"
1338}
1339```
1340
13413. Never show it, even if hovering it:
1342
1343```json [settings]
1344{
1345 "show_close_button": "hidden"
1346}
1347```
1348
1349### Show Diagnostics
1350
1351- 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.
1352- Setting: `show_diagnostics`
1353- Default: `off`
1354
1355**Options**
1356
13571. Do not mark any files:
1358
1359```json [settings]
1360{
1361 "show_diagnostics": "off"
1362}
1363```
1364
13652. Only mark files with errors:
1366
1367```json [settings]
1368{
1369 "show_diagnostics": "errors"
1370}
1371```
1372
13733. Mark files with errors and warnings:
1374
1375```json [settings]
1376{
1377 "show_diagnostics": "all"
1378}
1379```
1380
1381### Show Inline Code Actions
1382
1383- Description: Whether to show code action button at start of buffer line.
1384- Setting: `inline_code_actions`
1385- Default: `true`
1386
1387**Options**
1388
1389`boolean` values
1390
1391### Session
1392
1393- Description: Controls Zed lifecycle-related behavior.
1394- Setting: `session`
1395- Default:
1396
1397```json
1398{
1399 "session": {
1400 "restore_unsaved_buffers": true,
1401 "trust_all_worktrees": false
1402 }
1403}
1404```
1405
1406**Options**
1407
14081. Whether or not to restore unsaved buffers on restart:
1409
1410```json [settings]
1411{
1412 "session": {
1413 "restore_unsaved_buffers": true
1414 }
1415}
1416```
1417
1418If this is true, user won't be prompted whether to save/discard dirty files when closing the application.
1419
14202. Whether or not to skip worktree and workspace trust checks:
1421
1422```json [settings]
1423{
1424 "session": {
1425 "trust_all_worktrees": false
1426 }
1427}
1428```
1429
1430When trusted, project settings are synchronized automatically, language and MCP servers are downloaded and started automatically.
1431
1432### Drag And Drop Selection
1433
1434- Description: Whether to allow drag and drop text selection in buffer. `delay` is the milliseconds that must elapse before drag and drop is allowed. Otherwise, a new text selection is created.
1435- Setting: `drag_and_drop_selection`
1436- Default:
1437
1438```json [settings]
1439"drag_and_drop_selection": {
1440 "enabled": true,
1441 "delay": 300
1442}
1443```
1444
1445## Editor Toolbar
1446
1447- Description: Whether or not to show various elements in the editor toolbar.
1448- Setting: `toolbar`
1449- Default:
1450
1451```json [settings]
1452"toolbar": {
1453 "breadcrumbs": true,
1454 "quick_actions": true,
1455 "selections_menu": true,
1456 "agent_review": true,
1457 "code_actions": false
1458},
1459```
1460
1461**Options**
1462
1463Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1464
1465## Use System Tabs
1466
1467- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
1468- Setting: `use_system_window_tabs`
1469- Default: `false`
1470
1471**Options**
1472
1473This setting enables integration with macOS’s native window tabbing feature. When set to `true`, Zed windows can be grouped together as tabs in a single macOS window, following the system-wide tabbing preferences set by the user (such as "Always", "In Full Screen", or "Never"). This setting is only available on macOS.
1474
1475## Enable Language Server
1476
1477- Description: Whether or not to use language servers to provide code intelligence.
1478- Setting: `enable_language_server`
1479- Default: `true`
1480
1481**Options**
1482
1483`boolean` values
1484
1485## Ensure Final Newline On Save
1486
1487- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1488- Setting: `ensure_final_newline_on_save`
1489- Default: `true`
1490
1491**Options**
1492
1493`boolean` values
1494
1495## Expand Excerpt Lines
1496
1497- Description: The default number of lines to expand excerpts in the multibuffer by
1498- Setting: `expand_excerpt_lines`
1499- Default: `5`
1500
1501**Options**
1502
1503Positive `integer` values
1504
1505## Excerpt Context Lines
1506
1507- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1508- Setting: `excerpt_context_lines`
1509- Default: `2`
1510
1511**Options**
1512
1513Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1514
1515## Extend Comment On Newline
1516
1517- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1518- Setting: `extend_comment_on_newline`
1519- Default: `true`
1520
1521**Options**
1522
1523`boolean` values
1524
1525## Status Bar
1526
1527- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1528- Setting: `status_bar`
1529- Default:
1530
1531```json [settings]
1532"status_bar": {
1533 "active_language_button": true,
1534 "cursor_position_button": true,
1535 "line_endings_button": false
1536},
1537```
1538
1539There is an experimental setting that completely hides the status bar. This causes major usability problems (you will be unable to use many of Zed's features), but is provided for those who value screen real-estate above all else.
1540
1541```json
1542"status_bar": {
1543 "experimental.show": false
1544}
1545```
1546
1547## LSP
1548
1549- Description: Configuration for language servers.
1550- Setting: `lsp`
1551- Default: `null`
1552
1553**Options**
1554
1555The following settings can be overridden for specific language servers:
1556
1557- `initialization_options`
1558- `settings`
1559
1560To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1561
1562Some 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.
1563
1564For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1565
1566```json [settings]
1567"lsp": {
1568 "rust-analyzer": {
1569 "initialization_options": {
1570 "check": {
1571 "command": "clippy" // rust-analyzer.check.command (default: "check")
1572 }
1573 }
1574 }
1575}
1576```
1577
1578While other options may be changed at a runtime and should be placed under `settings`:
1579
1580```json [settings]
1581"lsp": {
1582 "yaml-language-server": {
1583 "settings": {
1584 "yaml": {
1585 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1586 }
1587 }
1588 }
1589}
1590```
1591
1592## Global LSP Settings
1593
1594- Description: Configuration for global LSP settings that apply to all language servers
1595- Setting: `global_lsp_settings`
1596- Default:
1597
1598```json [settings]
1599{
1600 "global_lsp_settings": {
1601 "button": true
1602 }
1603}
1604```
1605
1606**Options**
1607
1608- `button`: Whether to show the LSP status button in the status bar
1609
1610## LSP Highlight Debounce
1611
1612- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1613- Setting: `lsp_highlight_debounce`
1614- Default: `75`
1615
1616**Options**
1617
1618`integer` values representing milliseconds
1619
1620## Features
1621
1622- Description: Features that can be globally enabled or disabled
1623- Setting: `features`
1624- Default:
1625
1626```json [settings]
1627{
1628 "features": {
1629 "edit_prediction_provider": "zed"
1630 }
1631}
1632```
1633
1634### Edit Prediction Provider
1635
1636- Description: Which edit prediction provider to use
1637- Setting: `edit_prediction_provider`
1638- Default: `"zed"`
1639
1640**Options**
1641
16421. Use Zeta as the edit prediction provider:
1643
1644```json [settings]
1645{
1646 "features": {
1647 "edit_prediction_provider": "zed"
1648 }
1649}
1650```
1651
16522. Use Copilot as the edit prediction provider:
1653
1654```json [settings]
1655{
1656 "features": {
1657 "edit_prediction_provider": "copilot"
1658 }
1659}
1660```
1661
16623. Use Supermaven as the edit prediction provider:
1663
1664```json [settings]
1665{
1666 "features": {
1667 "edit_prediction_provider": "supermaven"
1668 }
1669}
1670```
1671
16724. Turn off edit predictions across all providers
1673
1674```json [settings]
1675{
1676 "features": {
1677 "edit_prediction_provider": "none"
1678 }
1679}
1680```
1681
1682## Format On Save
1683
1684- Description: Whether or not to perform a buffer format before saving.
1685- Setting: `format_on_save`
1686- Default: `on`
1687
1688**Options**
1689
16901. `on`, enables format on save obeying `formatter` setting:
1691
1692```json [settings]
1693{
1694 "format_on_save": "on"
1695}
1696```
1697
16982. `off`, disables format on save:
1699
1700```json [settings]
1701{
1702 "format_on_save": "off"
1703}
1704```
1705
1706## Formatter
1707
1708- Description: How to perform a buffer format.
1709- Setting: `formatter`
1710- Default: `auto`
1711
1712**Options**
1713
17141. To use the current language server, use `"language_server"`:
1715
1716```json [settings]
1717{
1718 "formatter": "language_server"
1719}
1720```
1721
17222. 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):
1723
1724```json [settings]
1725{
1726 "formatter": {
1727 "external": {
1728 "command": "sed",
1729 "arguments": ["-e", "s/ *$//"]
1730 }
1731 }
1732}
1733```
1734
17353. 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.
1736
1737WARNING: `{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.
1738
1739```json [settings]
1740 "formatter": {
1741 "external": {
1742 "command": "prettier",
1743 "arguments": ["--stdin-filepath", "{buffer_path}"]
1744 }
1745 }
1746```
1747
17484. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1749
1750```json [settings]
1751{
1752 "formatter": [
1753 // Use ESLint's --fix:
1754 { "code_action": "source.fixAll.eslint" },
1755 // Organize imports on save:
1756 { "code_action": "source.organizeImports" }
1757 ]
1758}
1759```
1760
17615. Or to use multiple formatters consecutively, use an array of formatters:
1762
1763```json [settings]
1764{
1765 "formatter": [
1766 { "language_server": { "name": "rust-analyzer" } },
1767 {
1768 "external": {
1769 "command": "sed",
1770 "arguments": ["-e", "s/ *$//"]
1771 }
1772 }
1773 ]
1774}
1775```
1776
1777Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1778If any of the formatters fails, the subsequent ones will still be executed.
1779
1780## Auto close
1781
1782- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1783- Setting: `use_autoclose`
1784- Default: `true`
1785
1786**Options**
1787
1788`boolean` values
1789
1790## Always Treat Brackets As Autoclosed
1791
1792- Description: Controls how the editor handles the autoclosed characters.
1793- Setting: `always_treat_brackets_as_autoclosed`
1794- Default: `false`
1795
1796**Options**
1797
1798`boolean` values
1799
1800**Example**
1801
1802If the setting is set to `true`:
1803
18041. Enter in the editor: `)))`
18052. Move the cursor to the start: `^)))`
18063. Enter again: `)))`
1807
1808The result is still `)))` and not `))))))`, which is what it would be by default.
1809
1810## File Scan Exclusions
1811
1812- Setting: `file_scan_exclusions`
1813- 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`.
1814- Default:
1815
1816```json [settings]
1817"file_scan_exclusions": [
1818 "**/.git",
1819 "**/.svn",
1820 "**/.hg",
1821 "**/.jj",
1822 "**/CVS",
1823 "**/.DS_Store",
1824 "**/Thumbs.db",
1825 "**/.classpath",
1826 "**/.settings"
1827],
1828```
1829
1830Note, 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.
1831
1832## File Scan Inclusions
1833
1834- Setting: `file_scan_inclusions`
1835- 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.
1836- Default:
1837
1838```json [settings]
1839"file_scan_inclusions": [".env*"],
1840```
1841
1842## File Types
1843
1844- Setting: `file_types`
1845- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1846- Default:
1847
1848```json [settings]
1849"file_types": {
1850 "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1851 "Shell Script": [".env.*"]
1852}
1853```
1854
1855**Examples**
1856
1857To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1858
1859```json [settings]
1860{
1861 "file_types": {
1862 "C++": ["c"],
1863 "TOML": ["MyLockFile"],
1864 "Dockerfile": ["Dockerfile*"]
1865 }
1866}
1867```
1868
1869## Diagnostics
1870
1871- Description: Configuration for diagnostics-related features.
1872- Setting: `diagnostics`
1873- Default:
1874
1875```json [settings]
1876{
1877 "diagnostics": {
1878 "include_warnings": true,
1879 "inline": {
1880 "enabled": false
1881 },
1882 "update_with_cursor": false,
1883 "primary_only": false,
1884 "use_rendered": false
1885 }
1886}
1887```
1888
1889### Inline Diagnostics
1890
1891- Description: Whether or not to show diagnostics information inline.
1892- Setting: `inline`
1893- Default:
1894
1895```json [settings]
1896{
1897 "diagnostics": {
1898 "inline": {
1899 "enabled": false,
1900 "update_debounce_ms": 150,
1901 "padding": 4,
1902 "min_column": 0,
1903 "max_severity": null
1904 }
1905 }
1906}
1907```
1908
1909**Options**
1910
19111. Enable inline diagnostics.
1912
1913```json [settings]
1914{
1915 "diagnostics": {
1916 "inline": {
1917 "enabled": true
1918 }
1919 }
1920}
1921```
1922
19232. Delay diagnostic updates until some time after the last diagnostic update.
1924
1925```json [settings]
1926{
1927 "diagnostics": {
1928 "inline": {
1929 "enabled": true,
1930 "update_debounce_ms": 150
1931 }
1932 }
1933}
1934```
1935
19363. Set padding between the end of the source line and the start of the diagnostic.
1937
1938```json [settings]
1939{
1940 "diagnostics": {
1941 "inline": {
1942 "enabled": true,
1943 "padding": 4
1944 }
1945 }
1946}
1947```
1948
19494. Horizontally align inline diagnostics at the given column.
1950
1951```json [settings]
1952{
1953 "diagnostics": {
1954 "inline": {
1955 "enabled": true,
1956 "min_column": 80
1957 }
1958 }
1959}
1960```
1961
19625. Show only warning and error diagnostics.
1963
1964```json [settings]
1965{
1966 "diagnostics": {
1967 "inline": {
1968 "enabled": true,
1969 "max_severity": "warning"
1970 }
1971 }
1972}
1973```
1974
1975## Git
1976
1977- Description: Configuration for git-related features.
1978- Setting: `git`
1979- Default:
1980
1981```json [settings]
1982{
1983 "git": {
1984 "git_gutter": "tracked_files",
1985 "inline_blame": {
1986 "enabled": true
1987 },
1988 "branch_picker": {
1989 "show_author_name": true
1990 },
1991 "hunk_style": "staged_hollow"
1992 }
1993}
1994```
1995
1996### Git Gutter
1997
1998- Description: Whether or not to show the git gutter.
1999- Setting: `git_gutter`
2000- Default: `tracked_files`
2001
2002**Options**
2003
20041. Show git gutter in tracked files
2005
2006```json [settings]
2007{
2008 "git": {
2009 "git_gutter": "tracked_files"
2010 }
2011}
2012```
2013
20142. Hide git gutter
2015
2016```json [settings]
2017{
2018 "git": {
2019 "git_gutter": "hide"
2020 }
2021}
2022```
2023
2024### Gutter Debounce
2025
2026- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
2027- Setting: `gutter_debounce`
2028- Default: `null`
2029
2030**Options**
2031
2032`integer` values representing milliseconds
2033
2034Example:
2035
2036```json [settings]
2037{
2038 "git": {
2039 "gutter_debounce": 100
2040 }
2041}
2042```
2043
2044### Inline Git Blame
2045
2046- Description: Whether or not to show git blame information inline, on the currently focused line.
2047- Setting: `inline_blame`
2048- Default:
2049
2050```json [settings]
2051{
2052 "git": {
2053 "inline_blame": {
2054 "enabled": true
2055 }
2056 }
2057}
2058```
2059
2060**Options**
2061
20621. Disable inline git blame:
2063
2064```json [settings]
2065{
2066 "git": {
2067 "inline_blame": {
2068 "enabled": false
2069 }
2070 }
2071}
2072```
2073
20742. Only show inline git blame after a delay (that starts after cursor stops moving):
2075
2076```json [settings]
2077{
2078 "git": {
2079 "inline_blame": {
2080 "delay_ms": 500
2081 }
2082 }
2083}
2084```
2085
20863. Show a commit summary next to the commit date and author:
2087
2088```json [settings]
2089{
2090 "git": {
2091 "inline_blame": {
2092 "show_commit_summary": true
2093 }
2094 }
2095}
2096```
2097
20984. Use this as the minimum column at which to display inline blame information:
2099
2100```json [settings]
2101{
2102 "git": {
2103 "inline_blame": {
2104 "min_column": 80
2105 }
2106 }
2107}
2108```
2109
21105. Set the padding between the end of the line and the inline blame hint, in ems:
2111
2112```json [settings]
2113{
2114 "git": {
2115 "inline_blame": {
2116 "padding": 10
2117 }
2118 }
2119}
2120```
2121
2122### Branch Picker
2123
2124- Description: Configuration related to the branch picker.
2125- Setting: `branch_picker`
2126- Default:
2127
2128```json [settings]
2129{
2130 "git": {
2131 "branch_picker": {
2132 "show_author_name": false
2133 }
2134 }
2135}
2136```
2137
2138**Options**
2139
21401. Show the author name in the branch picker:
2141
2142```json [settings]
2143{
2144 "git": {
2145 "branch_picker": {
2146 "show_author_name": true
2147 }
2148 }
2149}
2150```
2151
2152### Hunk Style
2153
2154- Description: What styling we should use for the diff hunks.
2155- Setting: `hunk_style`
2156- Default:
2157
2158```json [settings]
2159{
2160 "git": {
2161 "hunk_style": "staged_hollow"
2162 }
2163}
2164```
2165
2166**Options**
2167
21681. Show the staged hunks faded out and with a border:
2169
2170```json [settings]
2171{
2172 "git": {
2173 "hunk_style": "staged_hollow"
2174 }
2175}
2176```
2177
21782. Show unstaged hunks faded out and with a border:
2179
2180```json [settings]
2181{
2182 "git": {
2183 "hunk_style": "unstaged_hollow"
2184 }
2185}
2186```
2187
2188## Go to Definition Fallback
2189
2190- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2191- Setting: `go_to_definition_fallback`
2192- Default: `"find_all_references"`
2193
2194**Options**
2195
21961. Do nothing:
2197
2198```json [settings]
2199{
2200 "go_to_definition_fallback": "none"
2201}
2202```
2203
22042. Find references for the same symbol (default):
2205
2206```json [settings]
2207{
2208 "go_to_definition_fallback": "find_all_references"
2209}
2210```
2211
2212## Hard Tabs
2213
2214- Description: Whether to indent lines using tab characters or multiple spaces.
2215- Setting: `hard_tabs`
2216- Default: `false`
2217
2218**Options**
2219
2220`boolean` values
2221
2222## Helix Mode
2223
2224- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](../helix.md) for more details.
2225- Setting: `helix_mode`
2226- Default: `false`
2227
2228**Options**
2229
2230`boolean` values
2231
2232## Indent Guides
2233
2234- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2235- Setting: `indent_guides`
2236- Default:
2237
2238```json [settings]
2239{
2240 "indent_guides": {
2241 "enabled": true,
2242 "line_width": 1,
2243 "active_line_width": 1,
2244 "coloring": "fixed",
2245 "background_coloring": "disabled"
2246 }
2247}
2248```
2249
2250**Options**
2251
22521. Disable indent guides
2253
2254```json [settings]
2255{
2256 "indent_guides": {
2257 "enabled": false
2258 }
2259}
2260```
2261
22622. Enable indent guides for a specific language.
2263
2264```json [settings]
2265{
2266 "languages": {
2267 "Python": {
2268 "indent_guides": {
2269 "enabled": true
2270 }
2271 }
2272 }
2273}
2274```
2275
22763. Enable indent aware coloring ("rainbow indentation").
2277 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.
2278
2279```json [settings]
2280{
2281 "indent_guides": {
2282 "enabled": true,
2283 "coloring": "indent_aware"
2284 }
2285}
2286```
2287
22884. Enable indent aware background coloring ("rainbow indentation").
2289 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.
2290
2291```json [settings]
2292{
2293 "indent_guides": {
2294 "enabled": true,
2295 "coloring": "indent_aware",
2296 "background_coloring": "indent_aware"
2297 }
2298}
2299```
2300
2301## Hover Popover Enabled
2302
2303- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2304- Setting: `hover_popover_enabled`
2305- Default: `true`
2306
2307**Options**
2308
2309`boolean` values
2310
2311## Hover Popover Delay
2312
2313- Description: Time to wait in milliseconds before showing the informational hover box.
2314- Setting: `hover_popover_delay`
2315- Default: `300`
2316
2317**Options**
2318
2319`integer` values representing milliseconds
2320
2321## Icon Theme
2322
2323- 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.
2324- Setting: `icon_theme`
2325- Default: `Zed (Default)`
2326
2327### Icon Theme Object
2328
2329- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2330- Setting: `icon_theme`
2331- Default:
2332
2333```json [settings]
2334"icon_theme": {
2335 "mode": "system",
2336 "dark": "Zed (Default)",
2337 "light": "Zed (Default)"
2338},
2339```
2340
2341### Mode
2342
2343- Description: Specify the icon theme mode.
2344- Setting: `mode`
2345- Default: `system`
2346
2347**Options**
2348
23491. Set the icon theme to dark mode
2350
2351```json [settings]
2352{
2353 "mode": "dark"
2354}
2355```
2356
23572. Set the icon theme to light mode
2358
2359```json [settings]
2360{
2361 "mode": "light"
2362}
2363```
2364
23653. Set the icon theme to system mode
2366
2367```json [settings]
2368{
2369 "mode": "system"
2370}
2371```
2372
2373### Dark
2374
2375- Description: The name of the dark icon theme.
2376- Setting: `dark`
2377- Default: `Zed (Default)`
2378
2379**Options**
2380
2381Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2382
2383### Light
2384
2385- Description: The name of the light icon theme.
2386- Setting: `light`
2387- Default: `Zed (Default)`
2388
2389**Options**
2390
2391Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2392
2393## Image Viewer
2394
2395- Description: Settings for image viewer functionality
2396- Setting: `image_viewer`
2397- Default:
2398
2399```json [settings]
2400{
2401 "image_viewer": {
2402 "unit": "binary"
2403 }
2404}
2405```
2406
2407**Options**
2408
2409### Unit
2410
2411- Description: The unit for image file sizes
2412- Setting: `unit`
2413- Default: `"binary"`
2414
2415**Options**
2416
24171. Use binary units (KiB, MiB):
2418
2419```json [settings]
2420{
2421 "image_viewer": {
2422 "unit": "binary"
2423 }
2424}
2425```
2426
24272. Use decimal units (KB, MB):
2428
2429```json [settings]
2430{
2431 "image_viewer": {
2432 "unit": "decimal"
2433 }
2434}
2435```
2436
2437## Inlay hints
2438
2439- Description: Configuration for displaying extra text with hints in the editor.
2440- Setting: `inlay_hints`
2441- Default:
2442
2443```json [settings]
2444"inlay_hints": {
2445 "enabled": false,
2446 "show_type_hints": true,
2447 "show_parameter_hints": true,
2448 "show_other_hints": true,
2449 "show_background": false,
2450 "edit_debounce_ms": 700,
2451 "scroll_debounce_ms": 50,
2452 "toggle_on_modifiers_press": null
2453}
2454```
2455
2456**Options**
2457
2458Inlay hints querying consists of two parts: editor (client) and LSP server.
2459With 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.
2460At 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.
2461
2462The following languages have inlay hints preconfigured by Zed:
2463
2464- [Go](https://docs.zed.dev/languages/go)
2465- [Rust](https://docs.zed.dev/languages/rust)
2466- [Svelte](https://docs.zed.dev/languages/svelte)
2467- [TypeScript](https://docs.zed.dev/languages/typescript)
2468
2469Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2470
2471Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2472Settings-related hint updates are not debounced.
2473
2474All possible config values for `toggle_on_modifiers_press` are:
2475
2476```json [settings]
2477"inlay_hints": {
2478 "toggle_on_modifiers_press": {
2479 "control": true,
2480 "shift": true,
2481 "alt": true,
2482 "platform": true,
2483 "function": true
2484 }
2485}
2486```
2487
2488Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2489
2490## Journal
2491
2492- Description: Configuration for the journal.
2493- Setting: `journal`
2494- Default:
2495
2496```json [settings]
2497"journal": {
2498 "path": "~",
2499 "hour_format": "hour12"
2500}
2501
2502```
2503
2504### Path
2505
2506- Description: The path of the directory where journal entries are stored. If an invalid path is specified, the journal will fall back to using `~` (the home directory).
2507- Setting: `path`
2508- Default: `~`
2509
2510**Options**
2511
2512`string` values
2513
2514### Hour Format
2515
2516- Description: The format to use for displaying hours in the journal.
2517- Setting: `hour_format`
2518- Default: `hour12`
2519
2520**Options**
2521
25221. 12-hour format:
2523
2524```json [settings]
2525{
2526 "hour_format": "hour12"
2527}
2528```
2529
25302. 24-hour format:
2531
2532```json [settings]
2533{
2534 "hour_format": "hour24"
2535}
2536```
2537
2538## JSX Tag Auto Close
2539
2540- Description: Whether to automatically close JSX tags
2541- Setting: `jsx_tag_auto_close`
2542- Default:
2543
2544```json [settings]
2545{
2546 "jsx_tag_auto_close": {
2547 "enabled": true
2548 }
2549}
2550```
2551
2552**Options**
2553
2554- `enabled`: Whether to enable automatic JSX tag closing
2555
2556## Languages
2557
2558- Description: Configuration for specific languages.
2559- Setting: `languages`
2560- Default: `null`
2561
2562**Options**
2563
2564To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2565
2566```json [settings]
2567"languages": {
2568 "C": {
2569 "format_on_save": "off",
2570 "preferred_line_length": 64,
2571 "soft_wrap": "preferred_line_length"
2572 },
2573 "JSON": {
2574 "tab_size": 4
2575 }
2576}
2577```
2578
2579The following settings can be overridden for each specific language:
2580
2581- [`enable_language_server`](#enable-language-server)
2582- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2583- [`format_on_save`](#format-on-save)
2584- [`formatter`](#formatter)
2585- [`hard_tabs`](#hard-tabs)
2586- [`preferred_line_length`](#preferred-line-length)
2587- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2588- [`show_edit_predictions`](#show-edit-predictions)
2589- [`show_whitespaces`](#show-whitespaces)
2590- [`whitespace_map`](#whitespace-map)
2591- [`soft_wrap`](#soft-wrap)
2592- [`tab_size`](#tab-size)
2593- [`use_autoclose`](#use-autoclose)
2594- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2595
2596These values take in the same options as the root-level settings with the same name.
2597
2598## Language Models
2599
2600- Description: Configuration for language model providers
2601- Setting: `language_models`
2602- Default:
2603
2604```json [settings]
2605{
2606 "language_models": {
2607 "anthropic": {
2608 "api_url": "https://api.anthropic.com"
2609 },
2610 "google": {
2611 "api_url": "https://generativelanguage.googleapis.com"
2612 },
2613 "ollama": {
2614 "api_url": "http://localhost:11434"
2615 },
2616 "openai": {
2617 "api_url": "https://api.openai.com/v1"
2618 }
2619 }
2620}
2621```
2622
2623**Options**
2624
2625Configuration for various AI model providers including API URLs and authentication settings.
2626
2627## Line Indicator Format
2628
2629- Description: Format for line indicator in the status bar
2630- Setting: `line_indicator_format`
2631- Default: `"short"`
2632
2633**Options**
2634
26351. Short format:
2636
2637```json [settings]
2638{
2639 "line_indicator_format": "short"
2640}
2641```
2642
26432. Long format:
2644
2645```json [settings]
2646{
2647 "line_indicator_format": "long"
2648}
2649```
2650
2651## Linked Edits
2652
2653- Description: Whether to perform linked edits of associated ranges, if the language server supports it. For example, when editing opening `<html>` tag, the contents of the closing `</html>` tag will be edited as well.
2654- Setting: `linked_edits`
2655- Default: `true`
2656
2657**Options**
2658
2659`boolean` values
2660
2661## LSP Document Colors
2662
2663- Description: Whether to show document color information from the language server
2664- Setting: `lsp_document_colors`
2665- Default: `true`
2666
2667**Options**
2668
2669`boolean` values
2670
2671## Max Tabs
2672
2673- Description: Maximum number of tabs to show in the tab bar
2674- Setting: `max_tabs`
2675- Default: `null`
2676
2677**Options**
2678
2679Positive `integer` values or `null` for unlimited tabs
2680
2681## Middle Click Paste (Linux only)
2682
2683- Description: Enable middle-click paste on Linux
2684- Setting: `middle_click_paste`
2685- Default: `true`
2686
2687**Options**
2688
2689`boolean` values
2690
2691## Multi Cursor Modifier
2692
2693- 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.
2694- Setting: `multi_cursor_modifier`
2695- Default: `alt`
2696
2697**Options**
2698
26991. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2700
2701```json [settings]
2702{
2703 "multi_cursor_modifier": "alt"
2704}
2705```
2706
27072. Maps `Control` on Linux and Windows and to `Command` on macOS:
2708
2709```json [settings]
2710{
2711 "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2712}
2713```
2714
2715## Node
2716
2717- Description: Configuration for Node.js integration
2718- Setting: `node`
2719- Default:
2720
2721```json [settings]
2722{
2723 "node": {
2724 "ignore_system_version": false,
2725 "path": null,
2726 "npm_path": null
2727 }
2728}
2729```
2730
2731**Options**
2732
2733- `ignore_system_version`: Whether to ignore the system Node.js version
2734- `path`: Custom path to Node.js binary
2735- `npm_path`: Custom path to npm binary
2736
2737## Network Proxy
2738
2739- Description: Configure a network proxy for Zed.
2740- Setting: `proxy`
2741- Default: `null`
2742
2743**Options**
2744
2745The proxy setting must contain a URL to the proxy.
2746
2747The following URI schemes are supported:
2748
2749- `http`
2750- `https`
2751- `socks4` - SOCKS4 proxy with local DNS
2752- `socks4a` - SOCKS4 proxy with remote DNS
2753- `socks5` - SOCKS5 proxy with local DNS
2754- `socks5h` - SOCKS5 proxy with remote DNS
2755
2756`http` will be used when no scheme is specified.
2757
2758By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`, `no_proxy` and `NO_PROXY`.
2759
2760For example, to set an `http` proxy, add the following to your settings:
2761
2762```json [settings]
2763{
2764 "proxy": "http://127.0.0.1:10809"
2765}
2766```
2767
2768Or to set a `socks5` proxy:
2769
2770```json [settings]
2771{
2772 "proxy": "socks5h://localhost:10808"
2773}
2774```
2775
2776If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
2777
2778## On Last Window Closed
2779
2780- Description: What to do when the last window is closed
2781- Setting: `on_last_window_closed`
2782- Default: `"platform_default"`
2783
2784**Options**
2785
27861. Use platform default behavior:
2787
2788```json [settings]
2789{
2790 "on_last_window_closed": "platform_default"
2791}
2792```
2793
27942. Always quit the application:
2795
2796```json [settings]
2797{
2798 "on_last_window_closed": "quit_app"
2799}
2800```
2801
2802## Profiles
2803
2804- Description: Configuration profiles that can be applied on top of existing settings
2805- Setting: `profiles`
2806- Default: `{}`
2807
2808**Options**
2809
2810Configuration object for defining settings profiles. Example:
2811
2812```json [settings]
2813{
2814 "profiles": {
2815 "presentation": {
2816 "buffer_font_size": 20,
2817 "ui_font_size": 18,
2818 "theme": "One Light"
2819 }
2820 }
2821}
2822```
2823
2824## Preview tabs
2825
2826- Description:
2827 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. \
2828 There are several ways to convert a preview tab into a regular tab:
2829
2830 - Double-clicking on the file
2831 - Double-clicking on the tab header
2832 - Using the {#action project_panel::OpenPermanent} action
2833 - Editing the file
2834 - Dragging the file to a different pane
2835
2836- Setting: `preview_tabs`
2837- Default:
2838
2839```json [settings]
2840"preview_tabs": {
2841 "enabled": true,
2842 "enable_preview_from_project_panel": true,
2843 "enable_preview_from_file_finder": false,
2844 "enable_preview_from_multibuffer": true,
2845 "enable_preview_multibuffer_from_code_navigation": false,
2846 "enable_preview_file_from_code_navigation": true,
2847 "enable_keep_preview_on_code_navigation": false,
2848}
2849```
2850
2851### Enable preview from project panel
2852
2853- Description: Determines whether to open files in preview mode when opened from the project panel with a single click.
2854- Setting: `enable_preview_from_project_panel`
2855- Default: `true`
2856
2857**Options**
2858
2859`boolean` values
2860
2861### Enable preview from file finder
2862
2863- Description: Determines whether to open files in preview mode when selected from the file finder.
2864- Setting: `enable_preview_from_file_finder`
2865- Default: `false`
2866
2867**Options**
2868
2869`boolean` values
2870
2871### Enable preview from multibuffer
2872
2873- Description: Determines whether to open files in preview mode when opened from a multibuffer.
2874- Setting: `enable_preview_from_multibuffer`
2875- Default: `true`
2876
2877**Options**
2878
2879`boolean` values
2880
2881### Enable preview multibuffer from code navigation
2882
2883- Description: Determines whether to open tabs in preview mode when code navigation is used to open a multibuffer.
2884- Setting: `enable_preview_multibuffer_from_code_navigation`
2885- Default: `false`
2886
2887**Options**
2888
2889`boolean` values
2890
2891### Enable preview file from code navigation
2892
2893- Description: Determines whether to open tabs in preview mode when code navigation is used to open a single file.
2894- Setting: `enable_preview_file_from_code_navigation`
2895- Default: `true`
2896
2897**Options**
2898
2899`boolean` values
2900
2901### Enable keep preview on code navigation
2902
2903- Description: Determines whether to keep tabs in preview mode when code navigation is used to navigate away from them. If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.
2904- Setting: `enable_keep_preview_on_code_navigation`
2905- Default: `false`
2906
2907**Options**
2908
2909`boolean` values
2910
2911## File Finder
2912
2913### File Icons
2914
2915- Description: Whether to show file icons in the file finder.
2916- Setting: `file_icons`
2917- Default: `true`
2918
2919### Modal Max Width
2920
2921- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2922- Setting: `modal_max_width`
2923- Default: `small`
2924
2925### Skip Focus For Active In Search
2926
2927- Description: Determines whether the file finder should skip focus for the active file in search results.
2928- Setting: `skip_focus_for_active_in_search`
2929- Default: `true`
2930
2931## Pane Split Direction Horizontal
2932
2933- Description: The direction that you want to split panes horizontally
2934- Setting: `pane_split_direction_horizontal`
2935- Default: `"up"`
2936
2937**Options**
2938
29391. Split upward:
2940
2941```json [settings]
2942{
2943 "pane_split_direction_horizontal": "up"
2944}
2945```
2946
29472. Split downward:
2948
2949```json [settings]
2950{
2951 "pane_split_direction_horizontal": "down"
2952}
2953```
2954
2955## Pane Split Direction Vertical
2956
2957- Description: The direction that you want to split panes vertically
2958- Setting: `pane_split_direction_vertical`
2959- Default: `"left"`
2960
2961**Options**
2962
29631. Split to the left:
2964
2965```json [settings]
2966{
2967 "pane_split_direction_vertical": "left"
2968}
2969```
2970
29712. Split to the right:
2972
2973```json [settings]
2974{
2975 "pane_split_direction_vertical": "right"
2976}
2977```
2978
2979## Preferred Line Length
2980
2981- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2982- Setting: `preferred_line_length`
2983- Default: `80`
2984
2985**Options**
2986
2987`integer` values
2988
2989## Private Files
2990
2991- Description: Globs to match against file paths to determine if a file is private
2992- Setting: `private_files`
2993- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
2994
2995**Options**
2996
2997List of `string` glob patterns
2998
2999## Projects Online By Default
3000
3001- Description: Whether or not to show the online projects view by default.
3002- Setting: `projects_online_by_default`
3003- Default: `true`
3004
3005**Options**
3006
3007`boolean` values
3008
3009## Read SSH Config
3010
3011- Description: Whether to read SSH configuration files
3012- Setting: `read_ssh_config`
3013- Default: `true`
3014
3015**Options**
3016
3017`boolean` values
3018
3019## Redact Private Values
3020
3021- Description: Hide the values of variables from visual display in private files
3022- Setting: `redact_private_values`
3023- Default: `false`
3024
3025**Options**
3026
3027`boolean` values
3028
3029## Relative Line Numbers
3030
3031- Description: Whether to show relative line numbers in the gutter
3032- Setting: `relative_line_numbers`
3033- Default: `"disabled"`
3034
3035**Options**
3036
30371. Show relative line numbers in the gutter whilst counting wrapped lines as one line:
3038
3039```json [settings]
3040{
3041 "relative_line_numbers": "enabled"
3042}
3043```
3044
30452. Show relative line numbers in the gutter, including wrapped lines in the counting:
3046
3047```json [settings]
3048{
3049 "relative_line_numbers": "wrapped"
3050}
3051```
3052
30532. Do not use relative line numbers:
3054
3055```json [settings]
3056{
3057 "relative_line_numbers": "disabled"
3058}
3059```
3060
3061## Remove Trailing Whitespace On Save
3062
3063- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
3064- Setting: `remove_trailing_whitespace_on_save`
3065- Default: `true`
3066
3067**Options**
3068
3069`boolean` values
3070
3071## Resize All Panels In Dock
3072
3073- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
3074- Setting: `resize_all_panels_in_dock`
3075- Default: `["left"]`
3076
3077**Options**
3078
3079List of strings containing any combination of:
3080
3081- `"left"`: Resize left dock panels together
3082- `"right"`: Resize right dock panels together
3083- `"bottom"`: Resize bottom dock panels together
3084
3085## Restore on File Reopen
3086
3087- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
3088- Setting: `restore_on_file_reopen`
3089- Default: `true`
3090
3091**Options**
3092
3093`boolean` values
3094
3095## Restore on Startup
3096
3097- Description: Controls session restoration on startup.
3098- Setting: `restore_on_startup`
3099- Default: `last_session`
3100
3101**Options**
3102
31031. Restore all workspaces that were open when quitting Zed:
3104
3105```json [settings]
3106{
3107 "restore_on_startup": "last_session"
3108}
3109```
3110
31112. Restore the workspace that was closed last:
3112
3113```json [settings]
3114{
3115 "restore_on_startup": "last_workspace"
3116}
3117```
3118
31193. Always start with an empty editor:
3120
3121```json [settings]
3122{
3123 "restore_on_startup": "empty_tab"
3124}
3125```
3126
31274. Always start with the welcome launchpad:
3128
3129```json [settings]
3130{
3131 "restore_on_startup": "launchpad"
3132}
3133```
3134
3135## Scroll Beyond Last Line
3136
3137- Description: Whether the editor will scroll beyond the last line
3138- Setting: `scroll_beyond_last_line`
3139- Default: `"one_page"`
3140
3141**Options**
3142
31431. Scroll one page beyond the last line by one page:
3144
3145```json [settings]
3146{
3147 "scroll_beyond_last_line": "one_page"
3148}
3149```
3150
31512. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3152
3153```json [settings]
3154{
3155 "scroll_beyond_last_line": "vertical_scroll_margin"
3156}
3157```
3158
31593. The editor will not scroll beyond the last line:
3160
3161```json [settings]
3162{
3163 "scroll_beyond_last_line": "off"
3164}
3165```
3166
3167**Options**
3168
3169`boolean` values
3170
3171## Scroll Sensitivity
3172
3173- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3174- Setting: `scroll_sensitivity`
3175- Default: `1.0`
3176
3177**Options**
3178
3179Positive `float` values
3180
3181### Fast Scroll Sensitivity
3182
3183- Description: Scroll sensitivity multiplier for fast scrolling. This multiplier is applied to both the horizontal and vertical delta values while scrolling. Fast scrolling happens when a user holds the alt or option key while scrolling.
3184- Setting: `fast_scroll_sensitivity`
3185- Default: `4.0`
3186
3187**Options**
3188
3189Positive `float` values
3190
3191### Horizontal Scroll Margin
3192
3193- Description: The number of characters to keep on either side when scrolling with the mouse
3194- Setting: `horizontal_scroll_margin`
3195- Default: `5`
3196
3197**Options**
3198
3199Non-negative `integer` values
3200
3201### Vertical Scroll Margin
3202
3203- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3204- Setting: `vertical_scroll_margin`
3205- Default: `3`
3206
3207**Options**
3208
3209Non-negative `integer` values
3210
3211## Search
3212
3213- Description: Search options to enable by default when opening new project and buffer searches.
3214- Setting: `search`
3215- Default:
3216
3217```json [settings]
3218"search": {
3219 "button": true,
3220 "whole_word": false,
3221 "case_sensitive": false,
3222 "include_ignored": false,
3223 "regex": false,
3224 "center_on_match": false
3225},
3226```
3227
3228### Button
3229
3230- Description: Whether to show the project search button in the status bar.
3231- Setting: `button`
3232- Default: `true`
3233
3234### Whole Word
3235
3236- Description: Whether to only match on whole words.
3237- Setting: `whole_word`
3238- Default: `false`
3239
3240### Case Sensitive
3241
3242- Description: Whether to match case sensitively. This setting affects both
3243 searches and editor actions like "Select Next Occurrence", "Select Previous
3244 Occurrence", and "Select All Occurrences".
3245- Setting: `case_sensitive`
3246- Default: `false`
3247
3248### Include Ignore
3249
3250- Description: Whether to include gitignored files in search results.
3251- Setting: `include_ignored`
3252- Default: `false`
3253
3254### Regex
3255
3256- Description: Whether to interpret the search query as a regular expression.
3257- Setting: `regex`
3258- Default: `false`
3259
3260### Center On Match
3261
3262- Description: Whether to center the cursor on each search match when navigating.
3263- Setting: `center_on_match`
3264- Default: `false`
3265
3266## Search Wrap
3267
3268- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3269- Setting: `search_wrap`
3270- Default: `true`
3271
3272## Center on Match
3273
3274- Description: If `center_on_match` is enabled, the editor will center the cursor on the current match when searching.
3275- Setting: `center_on_match`
3276- Default: `false`
3277
3278## Seed Search Query From Cursor
3279
3280- Description: When to populate a new search's query based on the text under the cursor.
3281- Setting: `seed_search_query_from_cursor`
3282- Default: `always`
3283
3284**Options**
3285
32861. `always` always populate the search query with the word under the cursor
32872. `selection` only populate the search query when there is text selected
32883. `never` never populate the search query
3289
3290## Use Smartcase Search
3291
3292- 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. \
3293 This applies to both in-file searches and project-wide searches.
3294- Setting: `use_smartcase_search`
3295- Default: `false`
3296
3297**Options**
3298
3299`boolean` values
3300
3301Examples:
3302
3303- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3304- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3305
3306## Show Call Status Icon
3307
3308- Description: Whether or not to show the call status icon in the status bar.
3309- Setting: `show_call_status_icon`
3310- Default: `true`
3311
3312**Options**
3313
3314`boolean` values
3315
3316## Completions
3317
3318- Description: Controls how completions are processed for this language.
3319- Setting: `completions`
3320- Default:
3321
3322```json [settings]
3323{
3324 "completions": {
3325 "words": "fallback",
3326 "words_min_length": 3,
3327 "lsp": true,
3328 "lsp_fetch_timeout_ms": 0,
3329 "lsp_insert_mode": "replace_suffix"
3330 }
3331}
3332```
3333
3334### Words
3335
3336- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3337- Setting: `words`
3338- Default: `fallback`
3339
3340**Options**
3341
33421. `enabled` - Always fetch document's words for completions along with LSP completions
33432. `fallback` - Only if LSP response errors or times out, use document's words to show completions
33443. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3345
3346### Min Words Query Length
3347
3348- Description: Minimum number of characters required to automatically trigger word-based completions.
3349 Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3350- Setting: `words_min_length`
3351- Default: `3`
3352
3353**Options**
3354
3355Positive integer values
3356
3357### LSP
3358
3359- Description: Whether to fetch LSP completions or not.
3360- Setting: `lsp`
3361- Default: `true`
3362
3363**Options**
3364
3365`boolean` values
3366
3367### LSP Fetch Timeout (ms)
3368
3369- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3370- Setting: `lsp_fetch_timeout_ms`
3371- Default: `0`
3372
3373**Options**
3374
3375`integer` values representing milliseconds
3376
3377### LSP Insert Mode
3378
3379- Description: Controls what range to replace when accepting LSP completions.
3380- Setting: `lsp_insert_mode`
3381- Default: `replace_suffix`
3382
3383**Options**
3384
33851. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
33862. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
33873. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
33884. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3389
3390## Show Completions On Input
3391
3392- Description: Whether or not to show completions as you type.
3393- Setting: `show_completions_on_input`
3394- Default: `true`
3395
3396**Options**
3397
3398`boolean` values
3399
3400## Show Completion Documentation
3401
3402- Description: Whether to display inline and alongside documentation for items in the completions menu.
3403- Setting: `show_completion_documentation`
3404- Default: `true`
3405
3406**Options**
3407
3408`boolean` values
3409
3410## Show Edit Predictions
3411
3412- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3413- Setting: `show_edit_predictions`
3414- Default: `true`
3415
3416**Options**
3417
3418`boolean` values
3419
3420## Show Whitespaces
3421
3422- Description: Whether or not to render whitespace characters in the editor.
3423- Setting: `show_whitespaces`
3424- Default: `selection`
3425
3426**Options**
3427
34281. `all`
34292. `selection`
34303. `none`
34314. `boundary`
3432
3433## Whitespace Map
3434
3435- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
3436- Setting: `whitespace_map`
3437- Default:
3438
3439```json [settings]
3440{
3441 "whitespace_map": {
3442 "space": "•",
3443 "tab": "→"
3444 }
3445}
3446```
3447
3448## Soft Wrap
3449
3450- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3451- Setting: `soft_wrap`
3452- Default: `none`
3453
3454**Options**
3455
34561. `none` to avoid wrapping generally, unless the line is too long
34572. `prefer_line` (deprecated, same as `none`)
34583. `editor_width` to wrap lines that overflow the editor width
34594. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
34605. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3461
3462## Show Wrap Guides
3463
3464- Description: Whether to show wrap guides (vertical rulers) in the editor. Setting this to true will show a guide at the 'preferred_line_length' value if 'soft_wrap' is set to 'preferred_line_length', and will show any additional guides as specified by the 'wrap_guides' setting.
3465- Setting: `show_wrap_guides`
3466- Default: `true`
3467
3468**Options**
3469
3470`boolean` values
3471
3472## Use On Type Format
3473
3474- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3475- Setting: `use_on_type_format`
3476- Default: `true`
3477
3478**Options**
3479
3480`boolean` values
3481
3482## Use Auto Surround
3483
3484- Description: Whether to automatically surround selected text when typing opening parenthesis, bracket, brace, single or double quote characters. For example, when you select text and type '(', Zed will surround the text with ().
3485- Setting: `use_auto_surround`
3486- Default: `true`
3487
3488**Options**
3489
3490`boolean` values
3491
3492## Use System Path Prompts
3493
3494- Description: Whether to use the system provided dialogs for Open and Save As. When set to false, Zed will use the built-in keyboard-first pickers.
3495- Setting: `use_system_path_prompts`
3496- Default: `true`
3497
3498**Options**
3499
3500`boolean` values
3501
3502## Use System Prompts
3503
3504- Description: Whether to use the system provided dialogs for prompts, such as confirmation prompts. When set to false, Zed will use its built-in prompts. Note that on Linux, this option is ignored and Zed will always use the built-in prompts.
3505- Setting: `use_system_prompts`
3506- Default: `true`
3507
3508**Options**
3509
3510`boolean` values
3511
3512## Wrap Guides (Vertical Rulers)
3513
3514- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3515- Setting: `wrap_guides`
3516- Default: []
3517
3518**Options**
3519
3520List of `integer` column numbers
3521
3522## Tab Size
3523
3524- Description: The number of spaces to use for each tab character.
3525- Setting: `tab_size`
3526- Default: `4`
3527
3528**Options**
3529
3530`integer` values
3531
3532## Tasks
3533
3534- Description: Configuration for tasks that can be run within Zed
3535- Setting: `tasks`
3536- Default:
3537
3538```json [settings]
3539{
3540 "tasks": {
3541 "variables": {},
3542 "enabled": true,
3543 "prefer_lsp": false
3544 }
3545}
3546```
3547
3548**Options**
3549
3550- `variables`: Custom variables for task configuration
3551- `enabled`: Whether tasks are enabled
3552- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3553
3554## Telemetry
3555
3556- Description: Control what info is collected by Zed.
3557- Setting: `telemetry`
3558- Default:
3559
3560```json [settings]
3561"telemetry": {
3562 "diagnostics": true,
3563 "metrics": true
3564},
3565```
3566
3567**Options**
3568
3569### Diagnostics
3570
3571- Description: Setting for sending debug-related data, such as crash reports.
3572- Setting: `diagnostics`
3573- Default: `true`
3574
3575**Options**
3576
3577`boolean` values
3578
3579### Metrics
3580
3581- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3582- Setting: `metrics`
3583- Default: `true`
3584
3585**Options**
3586
3587`boolean` values
3588
3589## Terminal
3590
3591- Description: Configuration for the terminal.
3592- Setting: `terminal`
3593- Default:
3594
3595```json [settings]
3596{
3597 "terminal": {
3598 "alternate_scroll": "off",
3599 "blinking": "terminal_controlled",
3600 "copy_on_select": false,
3601 "keep_selection_on_copy": true,
3602 "dock": "bottom",
3603 "default_width": 640,
3604 "default_height": 320,
3605 "detect_venv": {
3606 "on": {
3607 "directories": [".env", "env", ".venv", "venv"],
3608 "activate_script": "default"
3609 }
3610 },
3611 "env": {},
3612 "font_family": null,
3613 "font_features": null,
3614 "font_size": null,
3615 "line_height": "comfortable",
3616 "minimum_contrast": 45,
3617 "option_as_meta": false,
3618 "button": true,
3619 "shell": "system",
3620 "scroll_multiplier": 3.0,
3621 "toolbar": {
3622 "breadcrumbs": false
3623 },
3624 "working_directory": "current_project_directory",
3625 "scrollbar": {
3626 "show": null
3627 }
3628 }
3629}
3630```
3631
3632### Terminal: Dock
3633
3634- Description: Control the position of the dock
3635- Setting: `dock`
3636- Default: `bottom`
3637
3638**Options**
3639
3640`"bottom"`, `"left"` or `"right"`
3641
3642### Terminal: Alternate Scroll
3643
3644- 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.
3645- Setting: `alternate_scroll`
3646- Default: `off`
3647
3648**Options**
3649
36501. Default alternate scroll mode to off
3651
3652```json [settings]
3653{
3654 "terminal": {
3655 "alternate_scroll": "off"
3656 }
3657}
3658```
3659
36602. Default alternate scroll mode to on
3661
3662```json [settings]
3663{
3664 "terminal": {
3665 "alternate_scroll": "on"
3666 }
3667}
3668```
3669
3670### Terminal: Blinking
3671
3672- Description: Set the cursor blinking behavior in the terminal
3673- Setting: `blinking`
3674- Default: `terminal_controlled`
3675
3676**Options**
3677
36781. Never blink the cursor, ignore the terminal mode
3679
3680```json [settings]
3681{
3682 "terminal": {
3683 "blinking": "off"
3684 }
3685}
3686```
3687
36882. Default the cursor blink to off, but allow the terminal to turn blinking on
3689
3690```json [settings]
3691{
3692 "terminal": {
3693 "blinking": "terminal_controlled"
3694 }
3695}
3696```
3697
36983. Always blink the cursor, ignore the terminal mode
3699
3700```json [settings]
3701{
3702 "terminal": {
3703 "blinking": "on"
3704 }
3705}
3706```
3707
3708### Terminal: Copy On Select
3709
3710- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
3711- Setting: `copy_on_select`
3712- Default: `false`
3713
3714**Options**
3715
3716`boolean` values
3717
3718**Example**
3719
3720```json [settings]
3721{
3722 "terminal": {
3723 "copy_on_select": true
3724 }
3725}
3726```
3727
3728### Terminal: Cursor Shape
3729
3730- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
3731- Setting: `cursor_shape`
3732- Default: `null` (defaults to block)
3733
3734**Options**
3735
37361. A block that surrounds the following character
3737
3738```json [settings]
3739{
3740 "terminal": {
3741 "cursor_shape": "block"
3742 }
3743}
3744```
3745
37462. A vertical bar
3747
3748```json [settings]
3749{
3750 "terminal": {
3751 "cursor_shape": "bar"
3752 }
3753}
3754```
3755
37563. An underline / underscore that runs along the following character
3757
3758```json [settings]
3759{
3760 "terminal": {
3761 "cursor_shape": "underline"
3762 }
3763}
3764```
3765
37664. A box drawn around the following character
3767
3768```json [settings]
3769{
3770 "terminal": {
3771 "cursor_shape": "hollow"
3772 }
3773}
3774```
3775
3776### Terminal: Keep Selection On Copy
3777
3778- Description: Whether or not to keep the selection in the terminal after copying text.
3779- Setting: `keep_selection_on_copy`
3780- Default: `true`
3781
3782**Options**
3783
3784`boolean` values
3785
3786**Example**
3787
3788```json [settings]
3789{
3790 "terminal": {
3791 "keep_selection_on_copy": false
3792 }
3793}
3794```
3795
3796### Terminal: Env
3797
3798- 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
3799- Setting: `env`
3800- Default: `{}`
3801
3802**Example**
3803
3804```json [settings]
3805{
3806 "terminal": {
3807 "env": {
3808 "ZED": "1",
3809 "KEY": "value1:value2"
3810 }
3811 }
3812}
3813```
3814
3815### Terminal: Font Size
3816
3817- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
3818- Setting: `font_size`
3819- Default: `null`
3820
3821**Options**
3822
3823`integer` values
3824
3825```json [settings]
3826{
3827 "terminal": {
3828 "font_size": 15
3829 }
3830}
3831```
3832
3833### Terminal: Font Family
3834
3835- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
3836- Setting: `font_family`
3837- Default: `null`
3838
3839**Options**
3840
3841The name of any font family installed on the user's system
3842
3843```json [settings]
3844{
3845 "terminal": {
3846 "font_family": "Berkeley Mono"
3847 }
3848}
3849```
3850
3851### Terminal: Font Features
3852
3853- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
3854- Setting: `font_features`
3855- Default: `null`
3856- Platform: macOS and Windows.
3857
3858**Options**
3859
3860See Buffer Font Features
3861
3862```json [settings]
3863{
3864 "terminal": {
3865 "font_features": {
3866 "calt": false
3867 // See Buffer Font Features for more features
3868 }
3869 }
3870}
3871```
3872
3873### Terminal: Line Height
3874
3875- Description: Set the terminal's line height.
3876- Setting: `line_height`
3877- Default: `standard`
3878
3879**Options**
3880
38811. Use a line height that's `comfortable` for reading, 1.618.
3882
3883```json [settings]
3884{
3885 "terminal": {
3886 "line_height": "comfortable"
3887 }
3888}
3889```
3890
38912. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
3892
3893```json [settings]
3894{
3895 "terminal": {
3896 "line_height": "standard"
3897 }
3898}
3899```
3900
39013. Use a custom line height.
3902
3903```json [settings]
3904{
3905 "terminal": {
3906 "line_height": {
3907 "custom": 2
3908 }
3909 }
3910}
3911```
3912
3913### Terminal: Minimum Contrast
3914
3915- Description: Controls the minimum contrast between foreground and background colors in the terminal. Uses the APCA (Accessible Perceptual Contrast Algorithm) for color adjustments. Set this to 0 to disable this feature.
3916- Setting: `minimum_contrast`
3917- Default: `45`
3918
3919**Options**
3920
3921`integer` values from 0 to 106. Common recommended values:
3922
3923- `0`: No contrast adjustment
3924- `45`: Minimum for large fluent text (default)
3925- `60`: Minimum for other content text
3926- `75`: Minimum for body text
3927- `90`: Preferred for body text
3928
3929```json [settings]
3930{
3931 "terminal": {
3932 "minimum_contrast": 45
3933 }
3934}
3935```
3936
3937### Terminal: Option As Meta
3938
3939- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
3940- Setting: `option_as_meta`
3941- Default: `false`
3942
3943**Options**
3944
3945`boolean` values
3946
3947```json [settings]
3948{
3949 "terminal": {
3950 "option_as_meta": true
3951 }
3952}
3953```
3954
3955### Terminal: Shell
3956
3957- Description: What shell to use when launching the terminal.
3958- Setting: `shell`
3959- Default: `system`
3960
3961**Options**
3962
39631. Use the system's default terminal configuration (usually the `/etc/passwd` file).
3964
3965```json [settings]
3966{
3967 "terminal": {
3968 "shell": "system"
3969 }
3970}
3971```
3972
39732. A program to launch:
3974
3975```json [settings]
3976{
3977 "terminal": {
3978 "shell": {
3979 "program": "sh"
3980 }
3981 }
3982}
3983```
3984
39853. A program with arguments:
3986
3987```json [settings]
3988{
3989 "terminal": {
3990 "shell": {
3991 "with_arguments": {
3992 "program": "/bin/bash",
3993 "args": ["--login"]
3994 }
3995 }
3996 }
3997}
3998```
3999
4000## Terminal: Detect Virtual Environments {#terminal-detect_venv}
4001
4002- 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.
4003- Setting: `detect_venv`
4004- Default:
4005
4006```json [settings]
4007{
4008 "terminal": {
4009 "detect_venv": {
4010 "on": {
4011 // Default directories to search for virtual environments, relative
4012 // to the current working directory. We recommend overriding this
4013 // in your project's settings, rather than globally.
4014 "directories": [".env", "env", ".venv", "venv"],
4015 // Can also be `csh`, `fish`, and `nushell`
4016 "activate_script": "default"
4017 }
4018 }
4019 }
4020}
4021```
4022
4023Disable with:
4024
4025```json [settings]
4026{
4027 "terminal": {
4028 "detect_venv": "off"
4029 }
4030}
4031```
4032
4033### Terminal: Scroll Multiplier
4034
4035- Description: The multiplier for scrolling speed in the terminal when using mouse wheel or trackpad.
4036- Setting: `scroll_multiplier`
4037- Default: `1.0`
4038
4039**Options**
4040
4041Positive floating point values. Values less than or equal to 0 will be clamped to a minimum of 0.01.
4042
4043**Example**
4044
4045```json
4046{
4047 "terminal": {
4048 "scroll_multiplier": 5.0
4049 }
4050}
4051```
4052
4053## Terminal: Toolbar
4054
4055- Description: Whether or not to show various elements in the terminal toolbar.
4056- Setting: `toolbar`
4057- Default:
4058
4059```json [settings]
4060{
4061 "terminal": {
4062 "toolbar": {
4063 "breadcrumbs": false
4064 }
4065 }
4066}
4067```
4068
4069**Options**
4070
4071At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
4072
4073If the terminal title is empty, the breadcrumbs won't be shown.
4074
4075The shell running in the terminal needs to be configured to emit the title.
4076
4077Example command to set the title: `echo -e "\e]2;New Title\007";`
4078
4079### Terminal: Button
4080
4081- Description: Control to show or hide the terminal button in the status bar
4082- Setting: `button`
4083- Default: `true`
4084
4085**Options**
4086
4087`boolean` values
4088
4089```json [settings]
4090{
4091 "terminal": {
4092 "button": false
4093 }
4094}
4095```
4096
4097### Terminal: Working Directory
4098
4099- Description: What working directory to use when launching the terminal.
4100- Setting: `working_directory`
4101- Default: `"current_project_directory"`
4102
4103**Options**
4104
41051. Use the current file's project directory. Fallback to the first project directory strategy if unsuccessful.
4106
4107```json [settings]
4108{
4109 "terminal": {
4110 "working_directory": "current_project_directory"
4111 }
4112}
4113```
4114
41152. Use the first project in this workspace's directory. Fallback to using this platform's home directory.
4116
4117```json [settings]
4118{
4119 "terminal": {
4120 "working_directory": "first_project_directory"
4121 }
4122}
4123```
4124
41253. Always use this platform's home directory if it can be found.
4126
4127```json [settings]
4128{
4129 "terminal": {
4130 "working_directory": "always_home"
4131 }
4132}
4133```
4134
41354. 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.
4136
4137```json [settings]
4138{
4139 "terminal": {
4140 "working_directory": {
4141 "always": {
4142 "directory": "~/zed/projects/"
4143 }
4144 }
4145 }
4146}
4147```
4148
4149### Terminal: Path Hyperlink Regexes
4150
4151- Description: Regexes used to identify path hyperlinks. The regexes can be specified in two forms - a single regex string, or an array of strings (which will be collected into a single multi-line regex string).
4152- Setting: `path_hyperlink_regexes`
4153- Default:
4154
4155```json [settings]
4156{
4157 "terminal": {
4158 "path_hyperlink_regexes": [
4159 // Python-style diagnostics
4160 "File \"(?<path>[^\"]+)\", line (?<line>[0-9]+)",
4161 // Common path syntax with optional line, column, description, trailing punctuation, or
4162 // surrounding symbols or quotes
4163 [
4164 "(?x)",
4165 "# optionally starts with 0-2 opening prefix symbols",
4166 "[({\\[<]{0,2}",
4167 "# which may be followed by an opening quote",
4168 "(?<quote>[\"'`])?",
4169 "# `path` is the shortest sequence of any non-space character",
4170 "(?<link>(?<path>[^ ]+?",
4171 " # which may end with a line and optionally a column,",
4172 " (?<line_column>:+[0-9]+(:[0-9]+)?|:?\\([0-9]+([,:][0-9]+)?\\))?",
4173 "))",
4174 "# which must be followed by a matching quote",
4175 "(?(<quote>)\\k<quote>)",
4176 "# and optionally a single closing symbol",
4177 "[)}\\]>]?",
4178 "# if line/column matched, may be followed by a description",
4179 "(?(<line_column>):[^ 0-9][^ ]*)?",
4180 "# which may be followed by trailing punctuation",
4181 "[.,:)}\\]>]*",
4182 "# and always includes trailing whitespace or end of line",
4183 "([ ]+|$)"
4184 ]
4185 ]
4186 }
4187}
4188```
4189
4190### Terminal: Path Hyperlink Timeout (ms)
4191
4192- Description: Maximum time to search for a path hyperlink. When set to 0, path hyperlinks are disabled.
4193- Setting: `path_hyperlink_timeout_ms`
4194- Default: `1`
4195
4196## REPL
4197
4198- Description: Repl settings.
4199- Setting: `repl`
4200- Default:
4201
4202```json [settings]
4203"repl": {
4204 // Maximum number of columns to keep in REPL's scrollback buffer.
4205 // Clamped with [20, 512] range.
4206 "max_columns": 128,
4207 // Maximum number of lines to keep in REPL's scrollback buffer.
4208 // Clamped with [4, 256] range.
4209 "max_lines": 32
4210},
4211```
4212
4213## Theme
4214
4215- 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.
4216- Setting: `theme`
4217- Default: `One Dark`
4218
4219### Theme Object
4220
4221- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
4222- Setting: `theme`
4223- Default:
4224
4225```json [settings]
4226"theme": {
4227 "mode": "system",
4228 "dark": "One Dark",
4229 "light": "One Light"
4230},
4231```
4232
4233### Mode
4234
4235- Description: Specify theme mode.
4236- Setting: `mode`
4237- Default: `system`
4238
4239**Options**
4240
42411. Set the theme to dark mode
4242
4243```json [settings]
4244{
4245 "mode": "dark"
4246}
4247```
4248
42492. Set the theme to light mode
4250
4251```json [settings]
4252{
4253 "mode": "light"
4254}
4255```
4256
42573. Set the theme to system mode
4258
4259```json [settings]
4260{
4261 "mode": "system"
4262}
4263```
4264
4265### Dark
4266
4267- Description: The name of the dark Zed theme to use for the UI.
4268- Setting: `dark`
4269- Default: `One Dark`
4270
4271**Options**
4272
4273Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4274
4275### Light
4276
4277- Description: The name of the light Zed theme to use for the UI.
4278- Setting: `light`
4279- Default: `One Light`
4280
4281**Options**
4282
4283Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4284
4285## Title Bar
4286
4287- Description: Whether or not to show various elements in the title bar
4288- Setting: `title_bar`
4289- Default:
4290
4291```json [settings]
4292"title_bar": {
4293 "show_branch_icon": false,
4294 "show_branch_name": true,
4295 "show_project_items": true,
4296 "show_onboarding_banner": true,
4297 "show_user_picture": true,
4298 "show_user_menu": true,
4299 "show_sign_in": true,
4300 "show_menus": false
4301}
4302```
4303
4304**Options**
4305
4306- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
4307- `show_branch_name`: Whether to show the branch name button in the titlebar
4308- `show_project_items`: Whether to show the project host and name in the titlebar
4309- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4310- `show_user_picture`: Whether to show user picture in the titlebar
4311- `show_user_menu`: Whether to show the user menu button in the titlebar (the one that displays your avatar by default and contains options like Settings, Keymap, Themes, etc.)
4312- `show_sign_in`: Whether to show the sign in button in the titlebar
4313- `show_menus`: Whether to show the menus in the titlebar
4314
4315## Vim
4316
4317- Description: Whether or not to enable vim mode.
4318- Setting: `vim_mode`
4319- Default: `false`
4320
4321## When Closing With No Tabs
4322
4323- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4324- Setting: `when_closing_with_no_tabs`
4325- Default: `"platform_default"`
4326
4327**Options**
4328
43291. Use platform default behavior:
4330
4331```json [settings]
4332{
4333 "when_closing_with_no_tabs": "platform_default"
4334}
4335```
4336
43372. Always close the window:
4338
4339```json [settings]
4340{
4341 "when_closing_with_no_tabs": "close_window"
4342}
4343```
4344
43453. Never close the window:
4346
4347```json [settings]
4348{
4349 "when_closing_with_no_tabs": "keep_window_open"
4350}
4351```
4352
4353## Project Panel
4354
4355- Description: Customize project panel
4356- Setting: `project_panel`
4357- Default:
4358
4359```json [settings]
4360{
4361 "project_panel": {
4362 "button": true,
4363 "default_width": 240,
4364 "dock": "left",
4365 "entry_spacing": "comfortable",
4366 "file_icons": true,
4367 "folder_icons": true,
4368 "git_status": true,
4369 "indent_size": 20,
4370 "auto_reveal_entries": true,
4371 "auto_fold_dirs": true,
4372 "drag_and_drop": true,
4373 "scrollbar": {
4374 "show": null
4375 },
4376 "sticky_scroll": true,
4377 "show_diagnostics": "all",
4378 "indent_guides": {
4379 "show": "always"
4380 },
4381 "sort_mode": "directories_first",
4382 "hide_root": false,
4383 "hide_hidden": false,
4384 "starts_open": true,
4385 "auto_open": {
4386 "on_create": true,
4387 "on_paste": true,
4388 "on_drop": true
4389 }
4390 }
4391}
4392```
4393
4394### Dock
4395
4396- Description: Control the position of the dock
4397- Setting: `dock`
4398- Default: `left`
4399
4400**Options**
4401
44021. Default dock position to left
4403
4404```json [settings]
4405{
4406 "dock": "left"
4407}
4408```
4409
44102. Default dock position to right
4411
4412```json [settings]
4413{
4414 "dock": "right"
4415}
4416```
4417
4418### Entry Spacing
4419
4420- Description: Spacing between worktree entries
4421- Setting: `entry_spacing`
4422- Default: `comfortable`
4423
4424**Options**
4425
44261. Comfortable entry spacing
4427
4428```json [settings]
4429{
4430 "entry_spacing": "comfortable"
4431}
4432```
4433
44342. Standard entry spacing
4435
4436```json [settings]
4437{
4438 "entry_spacing": "standard"
4439}
4440```
4441
4442### Git Status
4443
4444- Description: Indicates newly created and updated files
4445- Setting: `git_status`
4446- Default: `true`
4447
4448**Options**
4449
44501. Default enable git status
4451
4452```json [settings]
4453{
4454 "git_status": true
4455}
4456```
4457
44582. Default disable git status
4459
4460```json [settings]
4461{
4462 "git_status": false
4463}
4464```
4465
4466### Default Width
4467
4468- Description: Customize default width taken by project panel
4469- Setting: `default_width`
4470- Default: `240`
4471
4472**Options**
4473
4474`float` values
4475
4476### Auto Reveal Entries
4477
4478- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4479- Setting: `auto_reveal_entries`
4480- Default: `true`
4481
4482**Options**
4483
44841. Enable auto reveal entries
4485
4486```json [settings]
4487{
4488 "auto_reveal_entries": true
4489}
4490```
4491
44922. Disable auto reveal entries
4493
4494```json [settings]
4495{
4496 "auto_reveal_entries": false
4497}
4498```
4499
4500### Auto Fold Dirs
4501
4502- Description: Whether to fold directories automatically when directory has only one directory inside.
4503- Setting: `auto_fold_dirs`
4504- Default: `true`
4505
4506**Options**
4507
45081. Enable auto fold dirs
4509
4510```json [settings]
4511{
4512 "auto_fold_dirs": true
4513}
4514```
4515
45162. Disable auto fold dirs
4517
4518```json [settings]
4519{
4520 "auto_fold_dirs": false
4521}
4522```
4523
4524### Indent Size
4525
4526- Description: Amount of indentation (in pixels) for nested items.
4527- Setting: `indent_size`
4528- Default: `20`
4529
4530### Indent Guides: Show
4531
4532- Description: Whether to show indent guides in the project panel.
4533- Setting: `indent_guides`
4534- Default:
4535
4536```json [settings]
4537"indent_guides": {
4538 "show": "always"
4539}
4540```
4541
4542**Options**
4543
45441. Show indent guides in the project panel
4545
4546```json [settings]
4547{
4548 "indent_guides": {
4549 "show": "always"
4550 }
4551}
4552```
4553
45542. Hide indent guides in the project panel
4555
4556```json [settings]
4557{
4558 "indent_guides": {
4559 "show": "never"
4560 }
4561}
4562```
4563
4564### Scrollbar: Show
4565
4566- 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.
4567- Setting: `scrollbar`
4568- Default:
4569
4570```json [settings]
4571"scrollbar": {
4572 "show": null
4573}
4574```
4575
4576**Options**
4577
45781. Show scrollbar in the project panel
4579
4580```json [settings]
4581{
4582 "scrollbar": {
4583 "show": "always"
4584 }
4585}
4586```
4587
45882. Hide scrollbar in the project panel
4589
4590```json [settings]
4591{
4592 "scrollbar": {
4593 "show": "never"
4594 }
4595}
4596```
4597
4598### Sort Mode
4599
4600- Description: Sort order for entries in the project panel
4601- Setting: `sort_mode`
4602- Default: `directories_first`
4603
4604**Options**
4605
46061. Show directories first, then files
4607
4608```json [settings]
4609{
4610 "sort_mode": "directories_first"
4611}
4612```
4613
46142. Mix directories and files together
4615
4616```json [settings]
4617{
4618 "sort_mode": "mixed"
4619}
4620```
4621
46223. Show files first, then directories
4623
4624```json [settings]
4625{
4626 "sort_mode": "files_first"
4627}
4628```
4629
4630### Auto Open
4631
4632- Description: Control whether files are opened automatically after different creation flows in the project panel.
4633- Setting: `auto_open`
4634- Default:
4635
4636```json [settings]
4637"auto_open": {
4638 "on_create": true,
4639 "on_paste": true,
4640 "on_drop": true
4641}
4642```
4643
4644**Options**
4645
4646- `on_create`: Whether to automatically open newly created files in the editor.
4647- `on_paste`: Whether to automatically open files after pasting or duplicating them.
4648- `on_drop`: Whether to automatically open files dropped from external sources.
4649
4650## Agent
4651
4652Visit [the Configuration page](../ai/configuration.md) under the AI section to learn more about all the agent-related settings.
4653
4654## Collaboration Panel
4655
4656- Description: Customizations for the collaboration panel.
4657- Setting: `collaboration_panel`
4658- Default:
4659
4660```json [settings]
4661{
4662 "collaboration_panel": {
4663 "button": true,
4664 "dock": "left",
4665 "default_width": 240
4666 }
4667}
4668```
4669
4670**Options**
4671
4672- `button`: Whether to show the collaboration panel button in the status bar
4673- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
4674- `default_width`: Default width of the collaboration panel
4675
4676## Debugger
4677
4678- Description: Configuration for debugger panel and settings
4679- Setting: `debugger`
4680- Default:
4681
4682```json [settings]
4683{
4684 "debugger": {
4685 "stepping_granularity": "line",
4686 "save_breakpoints": true,
4687 "dock": "bottom",
4688 "button": true
4689 }
4690}
4691```
4692
4693See the [debugger page](../debugger.md) for more information about debugging support within Zed.
4694
4695## Git Panel
4696
4697- Description: Setting to customize the behavior of the git panel.
4698- Setting: `git_panel`
4699- Default:
4700
4701```json [settings]
4702{
4703 "git_panel": {
4704 "button": true,
4705 "dock": "left",
4706 "default_width": 360,
4707 "status_style": "icon",
4708 "fallback_branch_name": "main",
4709 "sort_by_path": false,
4710 "collapse_untracked_diff": false,
4711 "scrollbar": {
4712 "show": null
4713 }
4714 }
4715}
4716```
4717
4718**Options**
4719
4720- `button`: Whether to show the git panel button in the status bar
4721- `dock`: Where to dock the git panel. Can be `left` or `right`
4722- `default_width`: Default width of the git panel
4723- `status_style`: How to display git status. Can be `label_color` or `icon`
4724- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
4725- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
4726- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
4727- `scrollbar`: When to show the scrollbar in the git panel
4728
4729## Git Hosting Providers
4730
4731- Description: Register self-hosted GitHub, GitLab, or Bitbucket instances so commit hashes, issue references, and permalinks resolve to the right host.
4732- Setting: `git_hosting_providers`
4733- Default: `[]`
4734
4735**Options**
4736
4737Each entry accepts:
4738
4739- `provider`: One of `github`, `gitlab`, or `bitbucket`
4740- `name`: Display name for the instance
4741- `base_url`: Base URL, e.g. `https://git.example.corp`
4742
4743You can define these in user or project settings; project settings are merged on top of user settings.
4744
4745```json [settings]
4746{
4747 "git_hosting_providers": [
4748 {
4749 "provider": "github",
4750 "name": "BigCorp GitHub",
4751 "base_url": "https://git.example.corp"
4752 }
4753 ]
4754}
4755```
4756
4757## Outline Panel
4758
4759- Description: Customize outline Panel
4760- Setting: `outline_panel`
4761- Default:
4762
4763```json [settings]
4764"outline_panel": {
4765 "button": true,
4766 "default_width": 300,
4767 "dock": "left",
4768 "file_icons": true,
4769 "folder_icons": true,
4770 "git_status": true,
4771 "indent_size": 20,
4772 "auto_reveal_entries": true,
4773 "auto_fold_dirs": true,
4774 "indent_guides": {
4775 "show": "always"
4776 },
4777 "scrollbar": {
4778 "show": null
4779 }
4780}
4781```
4782
4783## Calls
4784
4785- Description: Customize behavior when participating in a call
4786- Setting: `calls`
4787- Default:
4788
4789```json [settings]
4790"calls": {
4791 // Join calls with the microphone live by default
4792 "mute_on_join": false,
4793 // Share your project when you are the first to join a channel
4794 "share_on_join": false
4795},
4796```
4797
4798## Colorize Brackets
4799
4800- Description: Whether to use tree-sitter bracket queries to detect and colorize the brackets in the editor (also known as "rainbow brackets").
4801- Setting: `colorize_brackets`
4802- Default: `false`
4803
4804**Options**
4805
4806`boolean` values
4807
4808The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
4809
4810## Unnecessary Code Fade
4811
4812- Description: How much to fade out unused code.
4813- Setting: `unnecessary_code_fade`
4814- Default: `0.3`
4815
4816**Options**
4817
4818Float values between `0.0` and `0.9`, where:
4819
4820- `0.0` means no fading (unused code looks the same as used code)
4821- `0.9` means maximum fading (unused code is very faint but still visible)
4822
4823**Example**
4824
4825```json [settings]
4826{
4827 "unnecessary_code_fade": 0.5
4828}
4829```
4830
4831## UI Font Family
4832
4833- Description: The name of the font to use for text in the UI.
4834- Setting: `ui_font_family`
4835- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
4836
4837**Options**
4838
4839The name of any font family installed on the system, `".ZedSans"` to use the Zed-provided default, or `".SystemUIFont"` to use the system's default UI font (on macOS and Windows).
4840
4841## UI Font Features
4842
4843- Description: The OpenType features to enable for text in the UI.
4844- Setting: `ui_font_features`
4845- Default:
4846
4847```json [settings]
4848"ui_font_features": {
4849 "calt": false
4850}
4851```
4852
4853- Platform: macOS and Windows.
4854
4855**Options**
4856
4857Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
4858
4859For example, to disable font ligatures, add the following to your settings:
4860
4861```json [settings]
4862{
4863 "ui_font_features": {
4864 "calt": false
4865 }
4866}
4867```
4868
4869You can also set other OpenType features, like setting `cv01` to `7`:
4870
4871```json [settings]
4872{
4873 "ui_font_features": {
4874 "cv01": 7
4875 }
4876}
4877```
4878
4879## UI Font Fallbacks
4880
4881- Description: The font fallbacks to use for text in the UI.
4882- Setting: `ui_font_fallbacks`
4883- Default: `null`
4884- Platform: macOS and Windows.
4885
4886**Options**
4887
4888For example, to use `Nerd Font` as a fallback, add the following to your settings:
4889
4890```json [settings]
4891{
4892 "ui_font_fallbacks": ["Nerd Font"]
4893}
4894```
4895
4896## UI Font Size
4897
4898- Description: The default font size for text in the UI.
4899- Setting: `ui_font_size`
4900- Default: `16`
4901
4902**Options**
4903
4904`integer` values from `6` to `100` pixels (inclusive)
4905
4906## UI Font Weight
4907
4908- Description: The default font weight for text in the UI.
4909- Setting: `ui_font_weight`
4910- Default: `400`
4911
4912**Options**
4913
4914`integer` values between `100` and `900`
4915
4916## Settings Profiles
4917
4918- Description: Configure any number of settings profiles that are temporarily applied on top of your existing user settings when selected from `settings profile selector: toggle`.
4919- Setting: `profiles`
4920- Default: `{}`
4921
4922In your `settings.json` file, add the `profiles` object.
4923Each key within this object is the name of a settings profile, and each value is an object that can include any of Zed's settings.
4924
4925Example:
4926
4927```json [settings]
4928"profiles": {
4929 "Presenting (Dark)": {
4930 "agent_buffer_font_size": 18.0,
4931 "buffer_font_size": 18.0,
4932 "theme": "One Dark",
4933 "ui_font_size": 18.0
4934 },
4935 "Presenting (Light)": {
4936 "agent_buffer_font_size": 18.0,
4937 "buffer_font_size": 18.0,
4938 "theme": "One Light",
4939 "ui_font_size": 18.0
4940 },
4941 "Writing": {
4942 "agent_buffer_font_size": 15.0,
4943 "buffer_font_size": 15.0,
4944 "theme": "Catppuccin Frappé - No Italics",
4945 "ui_font_size": 15.0,
4946 "tab_bar": { "show": false },
4947 "toolbar": { "breadcrumbs": false }
4948 }
4949}
4950```
4951
4952To preview and enable a settings profile, open the command palette via {#kb command_palette::Toggle} and search for `settings profile selector: toggle`.
4953
4954## An example configuration:
4955
4956```json [settings]
4957// ~/.config/zed/settings.json
4958{
4959 "theme": "cave-light",
4960 "tab_size": 2,
4961 "preferred_line_length": 80,
4962 "soft_wrap": "none",
4963
4964 "buffer_font_size": 18,
4965 "buffer_font_family": ".ZedMono",
4966
4967 "autosave": "on_focus_change",
4968 "format_on_save": "off",
4969 "vim_mode": false,
4970 "projects_online_by_default": true,
4971 "terminal": {
4972 "font_family": "FiraCode Nerd Font Mono",
4973 "blinking": "off"
4974 },
4975 "languages": {
4976 "C": {
4977 "format_on_save": "on",
4978 "formatter": "language_server",
4979 "preferred_line_length": 64,
4980 "soft_wrap": "preferred_line_length"
4981 }
4982 }
4983}
4984```