1# Configuring Zed
2
3Zed is designed to be configured: we want to fit your workflow and preferences exactly. We provide default settings that are designed to be a comfortable starting point for as many people as possible, but we hope you will enjoy tweaking it to make it feel incredible.
4
5In addition to the settings described here, you may also want to change your [theme](./themes.md), configure your [key bindings](./key-bindings.md), set up [tasks](./tasks.md) or install [extensions](https://github.com/zed-industries/extensions).
6
7## Settings files
8
9<!--
10TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
11Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
12
13TBD: Add settings documentation about how settings are merged as overlays. E.g. project>local>default. Note how settings that are maps are merged, but settings that are arrays are replaced and must include the defaults.
14-->
15
16Your settings file can be opened with {#kb zed::OpenSettings}. By default it is located at `~/.config/zed/settings.json`, though if you have XDG_CONFIG_HOME in your environment on Linux it will be at `$XDG_CONFIG_HOME/zed/settings.json` instead.
17
18This configuration is merged with any local configuration inside your projects. You can open the project settings by running {#action zed::OpenProjectSettings} from the command palette. This will create a `.zed` directory containing`.zed/settings.json`.
19
20Although most projects will only need one settings file at the root, you can add more local settings files for subdirectories as needed. Not all settings can be set in local files, just those that impact the behavior of the editor and language tooling. For example you can set `tab_size`, `formatter` etc. but not `theme`, `vim_mode` and similar.
21
22The syntax for configuration files is a super-set of JSON that allows `//` comments.
23
24## Default settings
25
26You can find the default settings for your current Zed by running {#action zed::OpenDefaultSettings} from the command palette.
27
28Extensions that provide language servers may also provide default settings for those language servers.
29
30# Settings
31
32## Active Pane Modifiers
33
34Styling settings applied to the active pane.
35
36### Magnification
37
38- Description: Scale by which to zoom the active pane. When set to `1.0`, the active pane has the same size as others, but when set to a larger value, the active pane takes up more space.
39- Setting: `magnification`
40- Default: `1.0`
41
42### Border size
43
44- 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.
45- Setting: `border_size`
46- Default: `0.0`
47
48### Inactive Opacity
49
50- 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.
51- Setting: `inactive_opacity`
52- Default: `1.0`
53
54**Options**
55
56`float` values
57
58## Auto Install extensions
59
60- Description: Define extensions to be autoinstalled or never be installed.
61- Setting: `auto_install_extension`
62- Default: `{"html": true}`
63
64**Options**
65
66You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions#installation-location):
67
68On MacOS:
69
70```sh
71ls ~/Library/Application\ Support/Zed/extensions/installed/
72```
73
74On Linux:
75
76```sh
77ls ~/.local/share/zed/extensions/installed
78```
79
80Define extensions which should be installed (`true`) or never installed (`false`).
81
82```json
83{
84 "auto_install_extensions": {
85 "html": true,
86 "dockerfile": true,
87 "docker-compose": false
88 }
89}
90```
91
92## Autosave
93
94- Description: When to automatically save edited buffers.
95- Setting: `autosave`
96- Default: `off`
97
98**Options**
99
1001. To disable autosave, set it to `off`:
101
102```json
103{
104 "autosave": "off"
105}
106```
107
1082. To autosave when focus changes, use `on_focus_change`:
109
110```json
111{
112 "autosave": "on_focus_change"
113}
114```
115
1163. To autosave when the active window changes, use `on_window_change`:
117
118```json
119{
120 "autosave": "on_window_change"
121}
122```
123
1244. To autosave after an inactivity period, use `after_delay`:
125
126```json
127{
128 "autosave": {
129 "after_delay": {
130 "milliseconds": 1000
131 }
132 }
133}
134```
135
136## Auto Update
137
138- Description: Whether or not to automatically check for updates.
139- Setting: `auto_update`
140- Default: `true`
141
142**Options**
143
144`boolean` values
145
146## Base Keymap
147
148- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
149- Setting: `base_keymap`
150- Default: `VSCode`
151
152**Options**
153
1541. VSCode
155
156```json
157{
158 "base_keymap": "VSCode"
159}
160```
161
1622. Atom
163
164```json
165{
166 "base_keymap": "Atom"
167}
168```
169
1703. JetBrains
171
172```json
173{
174 "base_keymap": "JetBrains"
175}
176```
177
1784. None
179
180```json
181{
182 "base_keymap": "None"
183}
184```
185
1865. SublimeText
187
188```json
189{
190 "base_keymap": "SublimeText"
191}
192```
193
1946. TextMate
195
196```json
197{
198 "base_keymap": "TextMate"
199}
200```
201
202## Buffer Font Family
203
204- Description: The name of a font to use for rendering text in the editor.
205- Setting: `buffer_font_family`
206- Default: `Zed Plex Mono`
207
208**Options**
209
210The name of any font family installed on the user's system
211
212## Buffer Font Features
213
214- Description: The OpenType features to enable for text in the editor.
215- Setting: `buffer_font_features`
216- Default: `null`
217- Platform: macOS and Windows.
218
219**Options**
220
221Zed 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.
222
223For example, to disable font ligatures, add the following to your settings:
224
225```json
226{
227 "buffer_font_features": {
228 "calt": false
229 }
230}
231```
232
233You can also set other OpenType features, like setting `cv01` to `7`:
234
235```json
236{
237 "buffer_font_features": {
238 "cv01": 7
239 }
240}
241```
242
243## Buffer Font Fallbacks
244
245- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
246- Setting: `buffer_font_fallbacks`
247- Default: `null`
248- Platform: macOS and Windows.
249
250**Options**
251
252For example, to use `Nerd Font` as a fallback, add the following to your settings:
253
254```json
255{
256 "buffer_font_fallbacks": ["Nerd Font"]
257}
258```
259
260## Buffer Font Size
261
262- Description: The default font size for text in the editor.
263- Setting: `buffer_font_size`
264- Default: `15`
265
266**Options**
267
268`integer` values from `6` to `100` pixels (inclusive)
269
270## Buffer Font Weight
271
272- Description: The default font weight for text in the editor.
273- Setting: `buffer_font_weight`
274- Default: `400`
275
276**Options**
277
278`integer` values between `100` and `900`
279
280## Buffer Line Height
281
282- Description: The default line height for text in the editor.
283- Setting: `buffer_line_height`
284- Default: `"comfortable"`
285
286**Options**
287
288`"standard"`, `"comfortable"` or `{"custom": float}` (`1` is very compact, `2` very loose)
289
290## Confirm Quit
291
292- Description: Whether or not to prompt the user to confirm before closing the application.
293- Setting: `confirm_quit`
294- Default: `false`
295
296**Options**
297
298`boolean` values
299
300## Centered Layout
301
302- Description: Configuration for the centered layout mode.
303- Setting: `centered_layout`
304- Default:
305
306```json
307"centered_layout": {
308 "left_padding": 0.2,
309 "right_padding": 0.2,
310}
311```
312
313**Options**
314
315The `left_padding` and `right_padding` options define the relative width of the
316left 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`.
317
318## Direnv Integration
319
320- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
321 `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.
322 It also allows for those environment variables to be used in tasks.
323- Setting: `load_direnv`
324- Default:
325
326```json
327"load_direnv": "direct"
328```
329
330**Options**
331There are two options to choose from:
332
3331. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
3342. `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.
335
336## Inline Completions
337
338- Description: Settings for inline completions.
339- Setting: `inline_completions`
340- Default:
341
342```json
343"inline_completions": {
344 "disabled_globs": [
345 ".env"
346 ]
347}
348```
349
350**Options**
351
352### Disabled Globs
353
354- Description: A list of globs representing files that inline completions should be disabled for.
355- Setting: `disabled_globs`
356- Default: `[".env"]`
357
358**Options**
359
360List of `string` values
361
362## Inline Completions Disabled in
363
364- Description: A list of language scopes in which inline completions should be disabled.
365- Setting: `inline_completions_disabled_in`
366- Default: `[]`
367
368**Options**
369
370List of `string` values
371
3721. Don't show inline completions in comments:
373
374```json
375"disabled_in": ["comment"]
376```
377
3782. Don't show inline completions in strings and comments:
379
380```json
381"disabled_in": ["comment", "string"]
382```
383
3843. Only in Go, don't show inline completions in strings and comments:
385
386```json
387{
388 "languages": {
389 "Go": {
390 "inline_completions_disabled_in": ["comment", "string"]
391 }
392 }
393}
394```
395
396## Current Line Highlight
397
398- Description: How to highlight the current line in the editor.
399- Setting: `current_line_highlight`
400- Default: `all`
401
402**Options**
403
4041. Don't highlight the current line:
405
406```json
407"current_line_highlight": "none"
408```
409
4102. Highlight the gutter area:
411
412```json
413"current_line_highlight": "gutter"
414```
415
4163. Highlight the editor area:
417
418```json
419"current_line_highlight": "line"
420```
421
4224. Highlight the full line:
423
424```json
425"current_line_highlight": "all"
426```
427
428## Cursor Blink
429
430- Description: Whether or not the cursor blinks.
431- Setting: `cursor_blink`
432- Default: `true`
433
434**Options**
435
436`boolean` values
437
438## Cursor Shape
439
440- Description: Cursor shape for the default editor.
441- Setting: `cursor_shape`
442- Default: `bar`
443
444**Options**
445
4461. A vertical bar:
447
448```json
449"cursor_shape": "bar"
450```
451
4522. A block that surrounds the following character:
453
454```json
455"cursor_shape": "block"
456```
457
4583. An underline / underscore that runs along the following character:
459
460```json
461"cursor_shape": "underline"
462```
463
4644. An box drawn around the following character:
465
466```json
467"cursor_shape": "hollow"
468```
469
470**Options**
471
4721. Position the dock attached to the bottom of the workspace: `bottom`
4732. Position the dock to the right of the workspace like a side panel: `right`
4743. Position the dock full screen over the entire workspace: `expanded`
475
476## Editor Scrollbar
477
478- Description: Whether or not to show the editor scrollbar and various elements in it.
479- Setting: `scrollbar`
480- Default:
481
482```json
483"scrollbar": {
484 "show": "auto",
485 "cursors": true,
486 "git_diff": true,
487 "search_results": true,
488 "selected_symbol": true,
489 "diagnostics": true
490},
491```
492
493### Show Mode
494
495- Description: When to show the editor scrollbar.
496- Setting: `show`
497- Default: `auto`
498
499**Options**
500
5011. Show the scrollbar if there's important information or follow the system's configured behavior:
502
503```json
504"scrollbar": {
505 "show": "auto"
506}
507```
508
5092. Match the system's configured behavior:
510
511```json
512"scrollbar": {
513 "show": "system"
514}
515```
516
5173. Always show the scrollbar:
518
519```json
520"scrollbar": {
521 "show": "always"
522}
523```
524
5254. Never show the scrollbar:
526
527```json
528"scrollbar": {
529 "show": "never"
530}
531```
532
533### Cursor Indicators
534
535- Description: Whether to show cursor positions in the scrollbar.
536- Setting: `cursors`
537- Default: `true`
538
539**Options**
540
541`boolean` values
542
543### Git Diff Indicators
544
545- Description: Whether to show git diff indicators in the scrollbar.
546- Setting: `git_diff`
547- Default: `true`
548
549**Options**
550
551`boolean` values
552
553### Search Results Indicators
554
555- Description: Whether to show buffer search results in the scrollbar.
556- Setting: `search_results`
557- Default: `true`
558
559**Options**
560
561`boolean` values
562
563### Selected Symbols Indicators
564
565- Description: Whether to show selected symbol occurrences in the scrollbar.
566- Setting: `selected_symbol`
567- Default: `true`
568
569**Options**
570
571`boolean` values
572
573### Diagnostics
574
575- Description: Whether to show diagnostic indicators in the scrollbar.
576- Setting: `diagnostics`
577- Default: `true`
578
579**Options**
580
581`boolean` values
582
583## Editor Tab Bar
584
585- Description: Settings related to the editor's tab bar.
586- Settings: `tab_bar`
587- Default:
588
589```json
590"tab_bar": {
591 "show": true,
592 "show_nav_history_buttons": true
593}
594```
595
596### Show
597
598- Description: Whether or not to show the tab bar in the editor.
599- Setting: `show`
600- Default: `true`
601
602**Options**
603
604`boolean` values
605
606### Navigation History Buttons
607
608- Description: Whether or not to show the navigation history buttons.
609- Setting: `show_nav_history_buttons`
610- Default: `true`
611
612**Options**
613
614`boolean` values
615
616## Editor Tabs
617
618- Description: Configuration for the editor tabs.
619- Setting: `tabs`
620- Default:
621
622```json
623"tabs": {
624 "close_position": "right",
625 "file_icons": false,
626 "git_status": false,
627 "activate_on_close": "history"
628},
629```
630
631### Close Position
632
633- Description: Where to display close button within a tab.
634- Setting: `close_position`
635- Default: `right`
636
637**Options**
638
6391. Display the close button on the right:
640
641```json
642{
643 "close_position": "right"
644}
645```
646
6472. Display the close button on the left:
648
649```json
650{
651 "close_position": "left"
652}
653```
654
655### File Icons
656
657- Description: Whether to show the file icon for a tab.
658- Setting: `file_icons`
659- Default: `false`
660
661### Git Status
662
663- Description: Whether or not to show Git file status in tab.
664- Setting: `git_status`
665- Default: `false`
666
667### Activate on close
668
669- Description: What to do after closing the current tab.
670- Setting: `activate_on_close`
671- Default: `history`
672
673**Options**
674
6751. Activate the tab that was open previously:
676
677```json
678{
679 "activate_on_close": "history"
680}
681```
682
6832. Activate the neighbour tab (prefers the right one, if present):
684
685```json
686{
687 "activate_on_close": "neighbour"
688}
689```
690
691## Editor Toolbar
692
693- Description: Whether or not to show various elements in the editor toolbar.
694- Setting: `toolbar`
695- Default:
696
697```json
698"toolbar": {
699 "breadcrumbs": true,
700 "quick_actions": true
701},
702```
703
704**Options**
705
706Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
707
708## Enable Language Server
709
710- Description: Whether or not to use language servers to provide code intelligence.
711- Setting: `enable_language_server`
712- Default: `true`
713
714**Options**
715
716`boolean` values
717
718## Ensure Final Newline On Save
719
720- Description: Whether or not to ensure there's a single newline at the end of a buffer when saving it.
721- Setting: `ensure_final_newline_on_save`
722- Default: `true`
723
724**Options**
725
726`boolean` values
727
728## LSP
729
730- Description: Configuration for language servers.
731- Setting: `lsp`
732- Default: `null`
733
734**Options**
735
736The following settings can be overridden for specific language servers:
737
738- `initialization_options`
739- `settings`
740
741To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
742
743Some 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.
744
745For example to pass the `check` option to `rust-analyzer`, use the following configuration:
746
747```json
748"lsp": {
749 "rust-analyzer": {
750 "initialization_options": {
751 "check": {
752 "command": "clippy" // rust-analyzer.check.command (default: "check")
753 }
754 }
755 }
756}
757```
758
759While other options may be changed at a runtime and should be placed under `settings`:
760
761```json
762"lsp": {
763 "yaml-language-server": {
764 "settings": {
765 "yaml": {
766 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
767 }
768 }
769 }
770}
771```
772
773## Format On Save
774
775- Description: Whether or not to perform a buffer format before saving.
776- Setting: `format_on_save`
777- Default: `on`
778
779**Options**
780
7811. `on`, enables format on save obeying `formatter` setting:
782
783```json
784{
785 "format_on_save": "on"
786}
787```
788
7892. `off`, disables format on save:
790
791```json
792{
793 "format_on_save": "off"
794}
795```
796
797## Formatter
798
799- Description: How to perform a buffer format.
800- Setting: `formatter`
801- Default: `auto`
802
803**Options**
804
8051. To use the current language server, use `"language_server"`:
806
807```json
808{
809 "formatter": "language_server"
810}
811```
812
8132. 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):
814
815```json
816{
817 "formatter": {
818 "external": {
819 "command": "sed",
820 "arguments": ["-e", "s/ *$//"]
821 }
822 }
823}
824```
825
8263. 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.
827
828```json
829 "formatter": {
830 "external": {
831 "command": "prettier",
832 "arguments": ["--stdin-filepath", "{buffer_path}"]
833 }
834 }
835```
836
8374. Or to use code actions provided by the connected language servers, use `"code_actions"`:
838
839```json
840{
841 "formatter": {
842 "code_actions": {
843 // Use ESLint's --fix:
844 "source.fixAll.eslint": true,
845 // Organize imports on save:
846 "source.organizeImports": true
847 }
848 }
849}
850```
851
8525. Or to use multiple formatters consecutively, use an array of formatters:
853
854```json
855{
856 "formatter": [
857 {"language_server": {"name": "rust-analyzer"}},
858 {"external": {
859 "command": "sed",
860 "arguments": ["-e", "s/ *$//"]
861 }
862 ]
863}
864```
865
866Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
867If any of the formatters fails, the subsequent ones will still be executed.
868
869## Code Actions On Format
870
871- Description: The code actions to perform with the primary language server when formatting the buffer.
872- Setting: `code_actions_on_format`
873- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
874
875**Examples**
876
877<!--
878TBD: Add Python Ruff source.organizeImports example
879-->
880
8811. Organize imports on format in TypeScript and TSX buffers:
882
883```json
884{
885 "languages": {
886 "TypeScript": {
887 "code_actions_on_format": {
888 "source.organizeImports": true
889 }
890 },
891 "TSX": {
892 "code_actions_on_format": {
893 "source.organizeImports": true
894 }
895 }
896 }
897}
898```
899
9002. Run ESLint `fixAll` code action when formatting:
901
902```json
903{
904 "languages": {
905 "JavaScript": {
906 "code_actions_on_format": {
907 "source.fixAll.eslint": true
908 }
909 }
910 }
911}
912```
913
9143. Run only a single ESLint rule when using `fixAll`:
915
916```json
917{
918 "languages": {
919 "JavaScript": {
920 "code_actions_on_format": {
921 "source.fixAll.eslint": true
922 }
923 }
924 },
925 "lsp": {
926 "eslint": {
927 "settings": {
928 "codeActionOnSave": {
929 "rules": ["import/order"]
930 }
931 }
932 }
933 }
934}
935```
936
937## Auto close
938
939- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
940- Setting: `use_autoclose`
941- Default: `true`
942
943**Options**
944
945`boolean` values
946
947## Always Treat Brackets As Autoclosed
948
949- Description: Controls how the editor handles the autoclosed characters.
950- Setting: `always_treat_brackets_as_autoclosed`
951- Default: `false`
952
953**Options**
954
955`boolean` values
956
957**Example**
958
959If the setting is set to `true`:
960
9611. Enter in the editor: `)))`
9622. Move the cursor to the start: `^)))`
9633. Enter again: `)))`
964
965The result is still `)))` and not `))))))`, which is what it would be by default.
966
967## File Scan Exclusions
968
969- Setting: `file_scan_exclusions`
970- Description: Configure how Add filename or directory globs that will be excluded by Zed entirely. They will be skipped during file scans, file searches and hidden from project file tree.
971- Default:
972
973```json
974"file_scan_exclusions": [
975 "**/.git",
976 "**/.svn",
977 "**/.hg",
978 "**/CVS",
979 "**/.DS_Store",
980 "**/Thumbs.db",
981 "**/.classpath",
982 "**/.settings"
983],
984```
985
986Note, 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.
987
988## File Types
989
990- Setting: `file_types`
991- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
992- Default: `{}`
993
994**Examples**
995
996To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
997
998```json
999{
1000 "file_types": {
1001 "C++": ["c"],
1002 "TOML": ["MyLockFile"],
1003 "Dockerfile": ["Dockerfile*"]
1004 }
1005}
1006```
1007
1008## Git
1009
1010- Description: Configuration for git-related features.
1011- Setting: `git`
1012- Default:
1013
1014```json
1015{
1016 "git": {
1017 "git_gutter": "tracked_files",
1018 "inline_blame": {
1019 "enabled": true
1020 }
1021 }
1022}
1023```
1024
1025### Git Gutter
1026
1027- Description: Whether or not to show the git gutter.
1028- Setting: `git_gutter`
1029- Default: `tracked_files`
1030
1031**Options**
1032
10331. Show git gutter in tracked files
1034
1035```json
1036{
1037 "git": {
1038 "git_gutter": "tracked_files"
1039 }
1040}
1041```
1042
10432. Hide git gutter
1044
1045```json
1046{
1047 "git": {
1048 "git_gutter": "hide"
1049 }
1050}
1051```
1052
1053### Inline Git Blame
1054
1055- Description: Whether or not to show git blame information inline, on the currently focused line.
1056- Setting: `inline_blame`
1057- Default:
1058
1059```json
1060{
1061 "git": {
1062 "inline_blame": {
1063 "enabled": true
1064 }
1065 }
1066}
1067```
1068
1069**Options**
1070
10711. Disable inline git blame:
1072
1073```json
1074{
1075 "git": {
1076 "inline_blame": {
1077 "enabled": false
1078 }
1079 }
1080}
1081```
1082
10832. Only show inline git blame after a delay (that starts after cursor stops moving):
1084
1085```json
1086{
1087 "git": {
1088 "inline_blame": {
1089 "enabled": true,
1090 "delay_ms": 500
1091 }
1092 }
1093}
1094```
1095
10963. Show a commit summary next to the commit date and author:
1097
1098```json
1099{
1100 "git": {
1101 "inline_blame": {
1102 "enabled": true,
1103 "show_commit_summary": true
1104 }
1105 }
1106}
1107```
1108
11094. Use this as the minimum column at which to display inline blame information:
1110
1111```json
1112{
1113 "git": {
1114 "inline_blame": {
1115 "enabled": true,
1116 "min_column": 80
1117 }
1118 }
1119}
1120```
1121
1122## Indent Guides
1123
1124- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1125- Setting: `indent_guides`
1126- Default:
1127
1128```json
1129{
1130 "indent_guides": {
1131 "enabled": true,
1132 "line_width": 1,
1133 "active_line_width": 1,
1134 "coloring": "fixed",
1135 "background_coloring": "disabled"
1136 }
1137}
1138```
1139
1140**Options**
1141
11421. Disable indent guides
1143
1144```json
1145{
1146 "indent_guides": {
1147 "enabled": false
1148 }
1149}
1150```
1151
11522. Enable indent guides for a specific language.
1153
1154```json
1155{
1156 "languages": {
1157 "Python": {
1158 "indent_guides": {
1159 "enabled": true
1160 }
1161 }
1162 }
1163}
1164```
1165
11663. Enable indent aware coloring ("rainbow indentation").
1167 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.
1168
1169```json
1170{
1171 "indent_guides": {
1172 "enabled": true,
1173 "coloring": "indent_aware"
1174 }
1175}
1176```
1177
11784. Enable indent aware background coloring ("rainbow indentation").
1179 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.
1180
1181```json
1182{
1183 "indent_guides": {
1184 "enabled": true,
1185 "coloring": "indent_aware",
1186 "background_coloring": "indent_aware"
1187 }
1188}
1189```
1190
1191## Hard Tabs
1192
1193- Description: Whether to indent lines using tab characters or multiple spaces.
1194- Setting: `hard_tabs`
1195- Default: `false`
1196
1197**Options**
1198
1199`boolean` values
1200
1201## Hover Popover Enabled
1202
1203- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1204- Setting: `hover_popover_enabled`
1205- Default: `true`
1206
1207**Options**
1208
1209`boolean` values
1210
1211## Inlay hints
1212
1213- Description: Configuration for displaying extra text with hints in the editor.
1214- Setting: `inlay_hints`
1215- Default:
1216
1217```json
1218"inlay_hints": {
1219 "enabled": false,
1220 "show_type_hints": true,
1221 "show_parameter_hints": true,
1222 "show_other_hints": true,
1223 "show_background": false,
1224 "edit_debounce_ms": 700,
1225 "scroll_debounce_ms": 50
1226}
1227```
1228
1229**Options**
1230
1231Inlay hints querying consists of two parts: editor (client) and LSP server.
1232With 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.
1233At 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.
1234
1235The following languages have inlay hints preconfigured by Zed:
1236
1237- [Go](https://docs.zed.dev/languages/go)
1238- [Rust](https://docs.zed.dev/languages/rust)
1239- [Svelte](https://docs.zed.dev/languages/svelte)
1240- [Typescript](https://docs.zed.dev/languages/typescript)
1241
1242Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1243
1244Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1245Settings-related hint updates are not debounced.
1246
1247## Journal
1248
1249- Description: Configuration for the journal.
1250- Setting: `journal`
1251- Default:
1252
1253```json
1254"journal": {
1255 "path": "~",
1256 "hour_format": "hour12"
1257}
1258```
1259
1260### Path
1261
1262- Description: The path of the directory where journal entries are stored.
1263- Setting: `path`
1264- Default: `~`
1265
1266**Options**
1267
1268`string` values
1269
1270### Hour Format
1271
1272- Description: The format to use for displaying hours in the journal.
1273- Setting: `hour_format`
1274- Default: `hour12`
1275
1276**Options**
1277
12781. 12-hour format:
1279
1280```json
1281{
1282 "hour_format": "hour12"
1283}
1284```
1285
12862. 24-hour format:
1287
1288```json
1289{
1290 "hour_format": "hour24"
1291}
1292```
1293
1294## Languages
1295
1296- Description: Configuration for specific languages.
1297- Setting: `languages`
1298- Default: `null`
1299
1300**Options**
1301
1302To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1303
1304```json
1305"languages": {
1306 "C": {
1307 "format_on_save": "off",
1308 "preferred_line_length": 64,
1309 "soft_wrap": "preferred_line_length"
1310 },
1311 "JSON": {
1312 "tab_size": 4
1313 }
1314}
1315```
1316
1317The following settings can be overridden for each specific language:
1318
1319- `enable_language_server`
1320- `ensure_final_newline_on_save`
1321- `format_on_save`
1322- `formatter`
1323- `hard_tabs`
1324- `preferred_line_length`
1325- `remove_trailing_whitespace_on_save`
1326- `show_inline_completions`
1327- `show_whitespaces`
1328- `soft_wrap`
1329- `tab_size`
1330- `use_autoclose`
1331- `always_treat_brackets_as_autoclosed`
1332
1333These values take in the same options as the root-level settings with the same name.
1334
1335## Network Proxy
1336
1337- Description: Configure a network proxy for Zed.
1338- Setting: `proxy`
1339- Default: `null`
1340
1341**Options**
1342
1343The proxy setting must contain a URL to the proxy.
1344
1345The following URI schemes are supported:
1346
1347- `http`
1348- `https`
1349- `socks4` - SOCKS4 proxy with local DNS
1350- `socks4a` - SOCKS4 proxy with remote DNS
1351- `socks5` - SOCKS5 proxy with local DNS
1352- `socks5h` - SOCKS5 proxy with remote DNS
1353
1354`http` will be used when no scheme is specified.
1355
1356By 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`.
1357
1358For example, to set an `http` proxy, add the following to your settings:
1359
1360```json
1361{
1362 "proxy": "http://127.0.0.1:10809"
1363}
1364```
1365
1366Or to set a `socks5` proxy:
1367
1368```json
1369{
1370 "proxy": "socks5h://localhost:10808"
1371}
1372```
1373
1374## Preview tabs
1375
1376- Description:
1377 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. \
1378 There are several ways to convert a preview tab into a regular tab:
1379
1380 - Double-clicking on the file
1381 - Double-clicking on the tab header
1382 - Using the `project_panel::OpenPermanent` action
1383 - Editing the file
1384 - Dragging the file to a different pane
1385
1386- Setting: `preview_tabs`
1387- Default:
1388
1389```json
1390"preview_tabs": {
1391 "enabled": true,
1392 "enable_preview_from_file_finder": false,
1393 "enable_preview_from_code_navigation": false,
1394}
1395```
1396
1397### Enable preview from file finder
1398
1399- Description: Determines whether to open files in preview mode when selected from the file finder.
1400- Setting: `enable_preview_from_file_finder`
1401- Default: `false`
1402
1403**Options**
1404
1405`boolean` values
1406
1407### Enable preview from code navigation
1408
1409- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
1410- Setting: `enable_preview_from_code_navigation`
1411- Default: `false`
1412
1413**Options**
1414
1415`boolean` values
1416
1417## Preferred Line Length
1418
1419- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
1420- Setting: `preferred_line_length`
1421- Default: `80`
1422
1423**Options**
1424
1425`integer` values
1426
1427## Projects Online By Default
1428
1429- Description: Whether or not to show the online projects view by default.
1430- Setting: `projects_online_by_default`
1431- Default: `true`
1432
1433**Options**
1434
1435`boolean` values
1436
1437## Remove Trailing Whitespace On Save
1438
1439- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
1440- Setting: `remove_trailing_whitespace_on_save`
1441- Default: `true`
1442
1443**Options**
1444
1445`boolean` values
1446
1447## Search
1448
1449- Description: Search options to enable by default when opening new project and buffer searches.
1450- Setting: `search`
1451- Default:
1452
1453```json
1454"search": {
1455 "whole_word": false,
1456 "case_sensitive": false,
1457 "include_ignored": false,
1458 "regex": false
1459},
1460```
1461
1462## Show Call Status Icon
1463
1464- Description: Whether or not to show the call status icon in the status bar.
1465- Setting: `show_call_status_icon`
1466- Default: `true`
1467
1468**Options**
1469
1470`boolean` values
1471
1472## Show Completions On Input
1473
1474- Description: Whether or not to show completions as you type.
1475- Setting: `show_completions_on_input`
1476- Default: `true`
1477
1478**Options**
1479
1480`boolean` values
1481
1482## Show Completion Documentation
1483
1484- Description: Whether to display inline and alongside documentation for items in the completions menu.
1485- Setting: `show_completion_documentation`
1486- Default: `true`
1487
1488**Options**
1489
1490`boolean` values
1491
1492## Completion Documentation Debounce Delay
1493
1494- Description: The debounce delay before re-querying the language server for completion documentation when not included in original completion list.
1495- Setting: `completion_documentation_secondary_query_debounce`
1496- Default: `300` ms
1497
1498**Options**
1499
1500`integer` values
1501
1502## Show Inline Completions
1503
1504- Description: Whether to show inline completions as you type or manually by triggering `editor::ShowInlineCompletion`.
1505- Setting: `show_inline_completions`
1506- Default: `true`
1507
1508**Options**
1509
1510`boolean` values
1511
1512## Show Whitespaces
1513
1514- Description: Whether or not to show render whitespace characters in the editor.
1515- Setting: `show_whitespaces`
1516- Default: `selection`
1517
1518**Options**
1519
15201. `all`
15212. `selection`
15223. `none`
15234. `boundary`
1524
1525## Soft Wrap
1526
1527- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
1528- Setting: `soft_wrap`
1529- Default: `none`
1530
1531**Options**
1532
15331. `none` to avoid wrapping generally, unless the line is too long
15342. `prefer_line` (deprecated, same as `none`)
15353. `editor_width` to wrap lines that overflow the editor width
15364. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
1537
1538## Wrap Guides (Vertical Rulers)
1539
1540- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
1541- Setting: `wrap_guides`
1542- Default: []
1543
1544**Options**
1545
1546List of `integer` column numbers
1547
1548## Tab Size
1549
1550- Description: The number of spaces to use for each tab character.
1551- Setting: `tab_size`
1552- Default: `4`
1553
1554**Options**
1555
1556`integer` values
1557
1558## Telemetry
1559
1560- Description: Control what info is collected by Zed.
1561- Setting: `telemetry`
1562- Default:
1563
1564```json
1565"telemetry": {
1566 "diagnostics": true,
1567 "metrics": true
1568},
1569```
1570
1571**Options**
1572
1573### Diagnostics
1574
1575- Description: Setting for sending debug-related data, such as crash reports.
1576- Setting: `diagnostics`
1577- Default: `true`
1578
1579**Options**
1580
1581`boolean` values
1582
1583### Metrics
1584
1585- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
1586- Setting: `metrics`
1587- Default: `true`
1588
1589**Options**
1590
1591`boolean` values
1592
1593## Terminal
1594
1595- Description: Configuration for the terminal.
1596- Setting: `terminal`
1597- Default:
1598
1599```json
1600{
1601 "terminal": {
1602 "alternate_scroll": "off",
1603 "blinking": "terminal_controlled",
1604 "copy_on_select": false,
1605 "dock": "bottom",
1606 "detect_venv": {
1607 "on": {
1608 "directories": [".env", "env", ".venv", "venv"],
1609 "activate_script": "default"
1610 }
1611 },
1612 "env": {},
1613 "font_family": null,
1614 "font_features": null,
1615 "font_size": null,
1616 "line_height": "comfortable",
1617 "option_as_meta": false,
1618 "button": false,
1619 "shell": {},
1620 "toolbar": {
1621 "title": true
1622 },
1623 "working_directory": "current_project_directory"
1624 }
1625}
1626```
1627
1628### Terminal: Dock
1629
1630- Description: Control the position of the dock
1631- Setting: `dock`
1632- Default: `bottom`
1633
1634**Options**
1635
1636`"bottom"`, `"left"` or `"right"`
1637
1638### Terminal: Alternate Scroll
1639
1640- 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.
1641- Setting: `alternate_scroll`
1642- Default: `off`
1643
1644**Options**
1645
16461. Default alternate scroll mode to on
1647
1648```json
1649{
1650 "terminal": {
1651 "alternate_scroll": "on"
1652 }
1653}
1654```
1655
16562. Default alternate scroll mode to off
1657
1658```json
1659{
1660 "terminal": {
1661 "alternate_scroll": "off"
1662 }
1663}
1664```
1665
1666### Terminal: Blinking
1667
1668- Description: Set the cursor blinking behavior in the terminal
1669- Setting: `blinking`
1670- Default: `terminal_controlled`
1671
1672**Options**
1673
16741. Never blink the cursor, ignore the terminal mode
1675
1676```json
1677{
1678 "terminal": {
1679 "blinking": "off"
1680 }
1681}
1682```
1683
16842. Default the cursor blink to off, but allow the terminal to turn blinking on
1685
1686```json
1687{
1688 "terminal": {
1689 "blinking": "terminal_controlled"
1690 }
1691}
1692```
1693
16943. Always blink the cursor, ignore the terminal mode
1695
1696```json
1697{
1698 "terminal": {
1699 "blinking": "on"
1700 }
1701}
1702```
1703
1704### Terminal: Copy On Select
1705
1706- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
1707- Setting: `copy_on_select`
1708- Default: `false`
1709
1710**Options**
1711
1712`boolean` values
1713
1714**Example**
1715
1716```json
1717{
1718 "terminal": {
1719 "copy_on_select": true
1720 }
1721}
1722```
1723
1724### Terminal: Env
1725
1726- 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
1727- Setting: `env`
1728- Default: `{}`
1729
1730**Example**
1731
1732```json
1733{
1734 "terminal": {
1735 "env": {
1736 "ZED": "1",
1737 "KEY": "value1:value2"
1738 }
1739 }
1740}
1741```
1742
1743### Terminal: Font Size
1744
1745- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
1746- Setting: `font_size`
1747- Default: `null`
1748
1749**Options**
1750
1751`integer` values
1752
1753```json
1754{
1755 "terminal": {
1756 "font_size": 15
1757 }
1758}
1759```
1760
1761### Terminal: Font Family
1762
1763- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
1764- Setting: `font_family`
1765- Default: `null`
1766
1767**Options**
1768
1769The name of any font family installed on the user's system
1770
1771```json
1772{
1773 "terminal": {
1774 "font_family": "Berkeley Mono"
1775 }
1776}
1777```
1778
1779### Terminal: Font Features
1780
1781- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
1782- Setting: `font_features`
1783- Default: `null`
1784- Platform: macOS and Windows.
1785
1786**Options**
1787
1788See Buffer Font Features
1789
1790```json
1791{
1792 "terminal": {
1793 "font_features": {
1794 "calt": false
1795 // See Buffer Font Features for more features
1796 }
1797 }
1798}
1799```
1800
1801### Terminal: Line Height
1802
1803- Description: Set the terminal's line height.
1804- Setting: `line_height`
1805- Default: `comfortable`
1806
1807**Options**
1808
18091. Use a line height that's `comfortable` for reading, 1.618. (default)
1810
1811```json
1812{
1813 "terminal": {
1814 "line_height": "comfortable"
1815 }
1816}
1817```
1818
18192. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
1820
1821```json
1822{
1823 "terminal": {
1824 "line_height": "standard"
1825 }
1826}
1827```
1828
18293. Use a custom line height.
1830
1831```json
1832{
1833 "terminal": {
1834 "line_height": {
1835 "custom": 2
1836 }
1837 }
1838}
1839```
1840
1841### Terminal: Option As Meta
1842
1843- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
1844- Setting: `option_as_meta`
1845- Default: `false`
1846
1847**Options**
1848
1849`boolean` values
1850
1851```json
1852{
1853 "terminal": {
1854 "option_as_meta": true
1855 }
1856}
1857```
1858
1859### Terminal: Shell
1860
1861- Description: What shell to use when launching the terminal.
1862- Setting: `shell`
1863- Default: `system`
1864
1865**Options**
1866
18671. Use the system's default terminal configuration (usually the `/etc/passwd` file).
1868
1869```json
1870{
1871 "terminal": {
1872 "shell": "system"
1873 }
1874}
1875```
1876
18772. A program to launch:
1878
1879```json
1880{
1881 "terminal": {
1882 "shell": {
1883 "program": "sh"
1884 }
1885 }
1886}
1887```
1888
18893. A program with arguments:
1890
1891```json
1892{
1893 "terminal": {
1894 "shell": {
1895 "with_arguments": {
1896 "program": "/bin/bash",
1897 "args": ["--login"]
1898 }
1899 }
1900 }
1901}
1902```
1903
1904## Terminal: Detect Virtual Environments {#terminal-detect_venv}
1905
1906- 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.
1907- Setting: `detect_venv`
1908- Default:
1909
1910```json
1911{
1912 "terminal": {
1913 "detect_venv": {
1914 "on": {
1915 // Default directories to search for virtual environments, relative
1916 // to the current working directory. We recommend overriding this
1917 // in your project's settings, rather than globally.
1918 "directories": [".venv", "venv"],
1919 // Can also be `csh`, `fish`, and `nushell`
1920 "activate_script": "default"
1921 }
1922 }
1923 }
1924}
1925```
1926
1927Disable with:
1928
1929```json
1930{
1931 "terminal": {
1932 "detect_venv": "off"
1933 }
1934}
1935```
1936
1937## Terminal: Toolbar
1938
1939- Description: Whether or not to show various elements in the terminal toolbar. It only affects terminals placed in the editor pane.
1940- Setting: `toolbar`
1941- Default:
1942
1943```json
1944{
1945 "terminal": {
1946 "toolbar": {
1947 "title": true
1948 }
1949 }
1950}
1951```
1952
1953**Options**
1954
1955At the moment, only the `title` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`. If the title is hidden, the terminal toolbar is not displayed.
1956
1957### Terminal: Button
1958
1959- Description: Control to show or hide the terminal button in the status bar
1960- Setting: `button`
1961- Default: `true`
1962
1963**Options**
1964
1965`boolean` values
1966
1967```json
1968{
1969 "terminal": {
1970 "button": false
1971 }
1972}
1973```
1974
1975### Terminal: Working Directory
1976
1977- Description: What working directory to use when launching the terminal.
1978- Setting: `working_directory`
1979- Default: `"current_project_directory"`
1980
1981**Options**
1982
19831. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
1984
1985```json
1986{
1987 "terminal": {
1988 "working_directory": "current_project_directory"
1989 }
1990}
1991```
1992
19932. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
1994
1995```json
1996{
1997 "terminal": {
1998 "working_directory": "first_project_directory"
1999 }
2000}
2001```
2002
20033. Always use this platform's home directory (if we can find it)
2004
2005```json
2006{
2007 "terminal": {
2008 "working_directory": "always_home"
2009 }
2010}
2011```
2012
20134. 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.
2014
2015```json
2016{
2017 "terminal": {
2018 "working_directory": {
2019 "always": {
2020 "directory": "~/zed/projects/"
2021 }
2022 }
2023 }
2024}
2025```
2026
2027## Theme
2028
2029- 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.
2030- Setting: `theme`
2031- Default: `One Dark`
2032
2033### Theme Object
2034
2035- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2036- Setting: `theme`
2037- Default:
2038
2039```json
2040"theme": {
2041 "mode": "system",
2042 "dark": "One Dark",
2043 "light": "One Light"
2044},
2045```
2046
2047### Mode
2048
2049- Description: Specify theme mode.
2050- Setting: `mode`
2051- Default: `system`
2052
2053**Options**
2054
20551. Set the theme to dark mode
2056
2057```json
2058{
2059 "mode": "dark"
2060}
2061```
2062
20632. Set the theme to light mode
2064
2065```json
2066{
2067 "mode": "light"
2068}
2069```
2070
20713. Set the theme to system mode
2072
2073```json
2074{
2075 "mode": "system"
2076}
2077```
2078
2079### Dark
2080
2081- Description: The name of the dark Zed theme to use for the UI.
2082- Setting: `dark`
2083- Default: `One Dark`
2084
2085**Options**
2086
2087Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2088
2089### Light
2090
2091- Description: The name of the light Zed theme to use for the UI.
2092- Setting: `light`
2093- Default: `One Light`
2094
2095**Options**
2096
2097Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2098
2099## Vim
2100
2101- Description: Whether or not to enable vim mode (work in progress).
2102- Setting: `vim_mode`
2103- Default: `false`
2104
2105## Project Panel
2106
2107- Description: Customize project panel
2108- Setting: `project_panel`
2109- Default:
2110
2111```json
2112{
2113 "project_panel": {
2114 "button": true,
2115 "default_width": 240,
2116 "dock": "left",
2117 "file_icons": true,
2118 "folder_icons": true,
2119 "git_status": true,
2120 "indent_size": 20,
2121 "indent_guides": true,
2122 "auto_reveal_entries": true,
2123 "auto_fold_dirs": true,
2124 "scrollbar": {
2125 "show": null
2126 },
2127 "indent_guides": {
2128 "show": "always"
2129 }
2130 }
2131}
2132```
2133
2134### Dock
2135
2136- Description: Control the position of the dock
2137- Setting: `dock`
2138- Default: `left`
2139
2140**Options**
2141
21421. Default dock position to left
2143
2144```json
2145{
2146 "dock": "left"
2147}
2148```
2149
21502. Default dock position to right
2151
2152```json
2153{
2154 "dock": "right"
2155}
2156```
2157
2158### Git Status
2159
2160- Description: Indicates newly created and updated files
2161- Setting: `git_status`
2162- Default: `true`
2163
2164**Options**
2165
21661. Default enable git status
2167
2168```json
2169{
2170 "git_status": true
2171}
2172```
2173
21742. Default disable git status
2175
2176```json
2177{
2178 "git_status": false
2179}
2180```
2181
2182### Default Width
2183
2184- Description: Customize default width taken by project panel
2185- Setting: `default_width`
2186- Default: N/A width in pixels (eg: 420)
2187
2188**Options**
2189
2190`boolean` values
2191
2192### Auto Reveal Entries
2193
2194- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2195- Setting: `auto_reveal_entries`
2196- Default: `true`
2197
2198**Options**
2199
22001. Enable auto reveal entries
2201
2202```json
2203{
2204 "auto_reveal_entries": true
2205}
2206```
2207
22082. Disable auto reveal entries
2209
2210```json
2211{
2212 "auto_reveal_entries": false
2213}
2214```
2215
2216### Auto Fold Dirs
2217
2218- Description: Whether to fold directories automatically when directory has only one directory inside.
2219- Setting: `auto_fold_dirs`
2220- Default: `true`
2221
2222**Options**
2223
22241. Enable auto fold dirs
2225
2226```json
2227{
2228 "auto_fold_dirs": true
2229}
2230```
2231
22322. Disable auto fold dirs
2233
2234```json
2235{
2236 "auto_fold_dirs": false
2237}
2238```
2239
2240### Indent Size
2241
2242- Description: Amount of indentation (in pixels) for nested items.
2243- Setting: `indent_size`
2244- Default: `20`
2245
2246### Indent Guides: Show
2247
2248- Description: Whether to show indent guides in the project panel. Possible values: "always", "never".
2249- Setting: `indent_guides`
2250
2251```json
2252"indent_guides": {
2253 "show": "always"
2254}
2255```
2256
2257**Options**
2258
22591. Show indent guides in the project panel
2260
2261```json
2262{
2263 "indent_guides": {
2264 "show": "always"
2265 }
2266}
2267```
2268
22692. Hide indent guides in the project panel
2270
2271```json
2272{
2273 "indent_guides": {
2274 "show": "never"
2275 }
2276}
2277```
2278
2279### Scrollbar: Show
2280
2281- 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.
2282- Setting: `scrollbar`
2283- Default:
2284
2285```json
2286"scrollbar": {
2287 "show": null
2288}
2289```
2290
2291**Options**
2292
22931. Show scrollbar in the project panel
2294
2295```json
2296{
2297 "scrollbar": {
2298 "show": "always"
2299 }
2300}
2301```
2302
23032. Hide scrollbar in the project panel
2304
2305```json
2306{
2307 "scrollbar": {
2308 "show": "never"
2309 }
2310}
2311```
2312
2313## Assistant Panel
2314
2315- Description: Customize assistant panel
2316- Setting: `assistant`
2317- Default:
2318
2319```json
2320"assistant": {
2321 "enabled": true,
2322 "button": true,
2323 "dock": "right",
2324 "default_width": 640,
2325 "default_height": 320,
2326 "provider": "openai",
2327 "version": "1",
2328},
2329```
2330
2331## Outline Panel
2332
2333- Description: Customize outline Panel
2334- Setting: `outline_panel`
2335- Default:
2336
2337```json
2338"outline_panel": {
2339 "button": true,
2340 "default_width": 240,
2341 "dock": "left",
2342 "file_icons": true,
2343 "folder_icons": true,
2344 "git_status": true,
2345 "indent_size": 20,
2346 "auto_reveal_entries": true,
2347 "auto_fold_dirs": true,
2348 "indent_guides": {
2349 "show": "always"
2350 },
2351 "scrollbar": {
2352 "show": null
2353 }
2354}
2355```
2356
2357## Calls
2358
2359- Description: Customize behavior when participating in a call
2360- Setting: `calls`
2361- Default:
2362
2363```json
2364"calls": {
2365 // Join calls with the microphone live by default
2366 "mute_on_join": false,
2367 // Share your project when you are the first to join a channel
2368 "share_on_join": false
2369},
2370```
2371
2372## Unnecessary Code Fade
2373
2374- Description: How much to fade out unused code.
2375- Setting: `unnecessary_code_fade`
2376- Default: `0.3`
2377
2378**Options**
2379
2380Float values between `0.0` and `0.9`, where:
2381
2382- `0.0` means no fading (unused code looks the same as used code)
2383- `0.9` means maximum fading (unused code is very faint but still visible)
2384
2385**Example**
2386
2387```json
2388{
2389 "unnecessary_code_fade": 0.5
2390}
2391```
2392
2393## UI Font Family
2394
2395- Description: The name of the font to use for text in the UI.
2396- Setting: `ui_font_family`
2397- Default: `Zed Plex Sans`
2398
2399**Options**
2400
2401The name of any font family installed on the system.
2402
2403## UI Font Features
2404
2405- Description: The OpenType features to enable for text in the UI.
2406- Setting: `ui_font_features`
2407- Default: `null`
2408- Platform: macOS and Windows.
2409
2410**Options**
2411
2412Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
2413
2414For example, to disable font ligatures, add the following to your settings:
2415
2416```json
2417{
2418 "ui_font_features": {
2419 "calt": false
2420 }
2421}
2422```
2423
2424You can also set other OpenType features, like setting `cv01` to `7`:
2425
2426```json
2427{
2428 "ui_font_features": {
2429 "cv01": 7
2430 }
2431}
2432```
2433
2434## UI Font Fallbacks
2435
2436- Description: The font fallbacks to use for text in the UI.
2437- Setting: `ui_font_fallbacks`
2438- Default: `null`
2439- Platform: macOS and Windows.
2440
2441**Options**
2442
2443For example, to use `Nerd Font` as a fallback, add the following to your settings:
2444
2445```json
2446{
2447 "ui_font_fallbacks": ["Nerd Font"]
2448}
2449```
2450
2451## UI Font Size
2452
2453- Description: The default font size for text in the UI.
2454- Setting: `ui_font_size`
2455- Default: `16`
2456
2457**Options**
2458
2459`integer` values from `6` to `100` pixels (inclusive)
2460
2461## UI Font Weight
2462
2463- Description: The default font weight for text in the UI.
2464- Setting: `ui_font_weight`
2465- Default: `400`
2466
2467**Options**
2468
2469`integer` values between `100` and `900`
2470
2471## An example configuration:
2472
2473```json
2474// ~/.config/zed/settings.json
2475{
2476 "theme": "cave-light",
2477 "tab_size": 2,
2478 "preferred_line_length": 80,
2479 "soft_wrap": "none",
2480
2481 "buffer_font_size": 18,
2482 "buffer_font_family": "Zed Plex Mono",
2483
2484 "autosave": "on_focus_change",
2485 "format_on_save": "off",
2486 "vim_mode": false,
2487 "projects_online_by_default": true,
2488 "terminal": {
2489 "font_family": "FiraCode Nerd Font Mono",
2490 "blinking": "off"
2491 },
2492 "languages": {
2493 "C": {
2494 "format_on_save": "language_server",
2495 "preferred_line_length": 64,
2496 "soft_wrap": "preferred_line_length"
2497 }
2498 }
2499}
2500```