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