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