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