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
34- Description: Styling settings applied to the active pane.
35- Setting: `active_pane_modifiers`
36- Default:
37
38```json
39{
40 "active_pane_modifiers": {
41 "magnification": 1.0,
42 "border_size": 0.0,
43 "inactive_opacity": 1.0
44 }
45}
46```
47
48### Magnification
49
50- 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.
51- Setting: `magnification`
52- Default: `1.0`
53
54**Options**
55
56`float` values
57
58### Border size
59
60- 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.
61- Setting: `border_size`
62- Default: `0.0`
63
64**Options**
65
66Non-negative `float` values
67
68### Inactive Opacity
69
70- 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.
71- Setting: `inactive_opacity`
72- Default: `1.0`
73
74**Options**
75
76`float` values
77
78## Bottom Dock Layout
79
80- Description: Control the layout of the bottom dock, relative to the left and right docks
81- Setting: `bottom_dock_layout`
82- Default: `"contained"`
83
84**Options**
85
861. Contain the bottom dock, giving the full height of the window to the left and right docks
87
88```json
89{
90 "bottom_dock_layout": "contained"
91}
92```
93
942. Give the bottom dock the full width of the window, truncating the left and right docks
95
96```json
97{
98 "bottom_dock_layout": "full"
99}
100```
101
1023. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window
103
104```json
105{
106 "bottom_dock_layout": "left_aligned"
107}
108```
109
1103. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
111
112```json
113{
114 "bottom_dock_layout": "right_aligned"
115}
116```
117
118## Auto Install extensions
119
120- Description: Define extensions to be autoinstalled or never be installed.
121- Setting: `auto_install_extension`
122- Default: `{ "html": true }`
123
124**Options**
125
126You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions#installation-location):
127
128On MacOS:
129
130```sh
131ls ~/Library/Application\ Support/Zed/extensions/installed/
132```
133
134On Linux:
135
136```sh
137ls ~/.local/share/zed/extensions/installed
138```
139
140Define extensions which should be installed (`true`) or never installed (`false`).
141
142```json
143{
144 "auto_install_extensions": {
145 "html": true,
146 "dockerfile": true,
147 "docker-compose": false
148 }
149}
150```
151
152## Autosave
153
154- Description: When to automatically save edited buffers.
155- Setting: `autosave`
156- Default: `off`
157
158**Options**
159
1601. To disable autosave, set it to `off`:
161
162```json
163{
164 "autosave": "off"
165}
166```
167
1682. To autosave when focus changes, use `on_focus_change`:
169
170```json
171{
172 "autosave": "on_focus_change"
173}
174```
175
1763. To autosave when the active window changes, use `on_window_change`:
177
178```json
179{
180 "autosave": "on_window_change"
181}
182```
183
1844. To autosave after an inactivity period, use `after_delay`:
185
186```json
187{
188 "autosave": {
189 "after_delay": {
190 "milliseconds": 1000
191 }
192 }
193}
194```
195
196## Restore on Startup
197
198- Description: Controls session restoration on startup.
199- Setting: `restore_on_startup`
200- Default: `last_session`
201
202**Options**
203
2041. Restore all workspaces that were open when quitting Zed:
205
206```json
207{
208 "restore_on_startup": "last_session"
209}
210```
211
2122. Restore the workspace that was closed last:
213
214```json
215{
216 "restore_on_startup": "last_workspace"
217}
218```
219
2203. Always start with an empty editor:
221
222```json
223{
224 "restore_on_startup": "none"
225}
226```
227
228## Autoscroll on Clicks
229
230- Description: Whether to scroll when clicking near the edge of the visible text area.
231- Setting: `autoscroll_on_clicks`
232- Default: `false`
233
234**Options**
235
236`boolean` values
237
238## Auto Update
239
240- Description: Whether or not to automatically check for updates.
241- Setting: `auto_update`
242- Default: `true`
243
244**Options**
245
246`boolean` values
247
248## Base Keymap
249
250- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
251- Setting: `base_keymap`
252- Default: `VSCode`
253
254**Options**
255
2561. VSCode
257
258```json
259{
260 "base_keymap": "VSCode"
261}
262```
263
2642. Atom
265
266```json
267{
268 "base_keymap": "Atom"
269}
270```
271
2723. JetBrains
273
274```json
275{
276 "base_keymap": "JetBrains"
277}
278```
279
2804. None
281
282```json
283{
284 "base_keymap": "None"
285}
286```
287
2885. SublimeText
289
290```json
291{
292 "base_keymap": "SublimeText"
293}
294```
295
2966. TextMate
297
298```json
299{
300 "base_keymap": "TextMate"
301}
302```
303
304## Buffer Font Family
305
306- Description: The name of a font to use for rendering text in the editor.
307- Setting: `buffer_font_family`
308- Default: `Zed Plex Mono`
309
310**Options**
311
312The name of any font family installed on the user's system
313
314## Buffer Font Features
315
316- Description: The OpenType features to enable for text in the editor.
317- Setting: `buffer_font_features`
318- Default: `null`
319- Platform: macOS and Windows.
320
321**Options**
322
323Zed 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.
324
325For example, to disable font ligatures, add the following to your settings:
326
327```json
328{
329 "buffer_font_features": {
330 "calt": false
331 }
332}
333```
334
335You can also set other OpenType features, like setting `cv01` to `7`:
336
337```json
338{
339 "buffer_font_features": {
340 "cv01": 7
341 }
342}
343```
344
345## Buffer Font Fallbacks
346
347- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
348- Setting: `buffer_font_fallbacks`
349- Default: `null`
350- Platform: macOS and Windows.
351
352**Options**
353
354For example, to use `Nerd Font` as a fallback, add the following to your settings:
355
356```json
357{
358 "buffer_font_fallbacks": ["Nerd Font"]
359}
360```
361
362## Buffer Font Size
363
364- Description: The default font size for text in the editor.
365- Setting: `buffer_font_size`
366- Default: `15`
367
368**Options**
369
370`integer` values from `6` to `100` pixels (inclusive)
371
372## Buffer Font Weight
373
374- Description: The default font weight for text in the editor.
375- Setting: `buffer_font_weight`
376- Default: `400`
377
378**Options**
379
380`integer` values between `100` and `900`
381
382## Buffer Line Height
383
384- Description: The default line height for text in the editor.
385- Setting: `buffer_line_height`
386- Default: `"comfortable"`
387
388**Options**
389
390`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
391
392## Confirm Quit
393
394- Description: Whether or not to prompt the user to confirm before closing the application.
395- Setting: `confirm_quit`
396- Default: `false`
397
398**Options**
399
400`boolean` values
401
402## Centered Layout
403
404- Description: Configuration for the centered layout mode.
405- Setting: `centered_layout`
406- Default:
407
408```json
409"centered_layout": {
410 "left_padding": 0.2,
411 "right_padding": 0.2,
412}
413```
414
415**Options**
416
417The `left_padding` and `right_padding` options define the relative width of the
418left 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`.
419
420## Direnv Integration
421
422- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
423 `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.
424 It also allows for those environment variables to be used in tasks.
425- Setting: `load_direnv`
426- Default: `"direct"`
427
428**Options**
429
430There are two options to choose from:
431
4321. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
4332. `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.
434
435## Edit Predictions
436
437- Description: Settings for edit predictions.
438- Setting: `edit_predictions`
439- Default:
440
441```json
442 "edit_predictions": {
443 "disabled_globs": [
444 "**/.env*",
445 "**/*.pem",
446 "**/*.key",
447 "**/*.cert",
448 "**/*.crt",
449 "**/.dev.vars",
450 "**/secrets.yml"
451 ]
452 }
453```
454
455**Options**
456
457### Disabled Globs
458
459- Description: A list of globs for which edit predictions should be disabled for. This list adds to a pre-existing, sensible default set of globs. Any additional ones you add are combined with them.
460- Setting: `disabled_globs`
461- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
462
463**Options**
464
465List of `string` values.
466
467## Edit Predictions Disabled in
468
469- Description: A list of language scopes in which edit predictions should be disabled.
470- Setting: `edit_predictions_disabled_in`
471- Default: `[]`
472
473**Options**
474
475List of `string` values
476
4771. Don't show edit predictions in comments:
478
479```json
480"disabled_in": ["comment"]
481```
482
4832. Don't show edit predictions in strings and comments:
484
485```json
486"disabled_in": ["comment", "string"]
487```
488
4893. Only in Go, don't show edit predictions in strings and comments:
490
491```json
492{
493 "languages": {
494 "Go": {
495 "edit_predictions_disabled_in": ["comment", "string"]
496 }
497 }
498}
499```
500
501## Current Line Highlight
502
503- Description: How to highlight the current line in the editor.
504- Setting: `current_line_highlight`
505- Default: `all`
506
507**Options**
508
5091. Don't highlight the current line:
510
511```json
512"current_line_highlight": "none"
513```
514
5152. Highlight the gutter area:
516
517```json
518"current_line_highlight": "gutter"
519```
520
5213. Highlight the editor area:
522
523```json
524"current_line_highlight": "line"
525```
526
5274. Highlight the full line:
528
529```json
530"current_line_highlight": "all"
531```
532
533## Selection Highlight
534
535- Description: Whether to highlight all occurrences of the selected text in an editor.
536- Setting: `selection_highlight`
537- Default: `true`
538
539## LSP Highlight Debounce
540
541- Description: The debounce delay before querying highlights from the language server based on the current cursor location.
542- Setting: `lsp_highlight_debounce`
543- Default: `75`
544
545## Cursor Blink
546
547- Description: Whether or not the cursor blinks.
548- Setting: `cursor_blink`
549- Default: `true`
550
551**Options**
552
553`boolean` values
554
555## Cursor Shape
556
557- Description: Cursor shape for the default editor.
558- Setting: `cursor_shape`
559- Default: `bar`
560
561**Options**
562
5631. A vertical bar:
564
565```json
566"cursor_shape": "bar"
567```
568
5692. A block that surrounds the following character:
570
571```json
572"cursor_shape": "block"
573```
574
5753. An underline / underscore that runs along the following character:
576
577```json
578"cursor_shape": "underline"
579```
580
5814. An box drawn around the following character:
582
583```json
584"cursor_shape": "hollow"
585```
586
587## Hide Mouse
588
589- Description: Determines when the mouse cursor should be hidden in an editor or input box.
590- Setting: `hide_mouse`
591- Default: `on_typing_and_movement`
592
593**Options**
594
5951. Never hide the mouse cursor:
596
597```json
598"hide_mouse": "never"
599```
600
6012. Hide only when typing:
602
603```json
604"hide_mouse": "on_typing"
605```
606
6073. Hide on both typing and cursor movement:
608
609```json
610"hide_mouse": "on_typing_and_movement"
611```
612
613## Snippet Sort Order
614
615- Description: Determines how snippets are sorted relative to other completion items.
616- Setting: `snippet_sort_order`
617- Default: `inline`
618
619**Options**
620
6211. Place snippets at the top of the completion list:
622
623```json
624"snippet_sort_order": "top"
625```
626
6272. Place snippets normally without any preference:
628
629```json
630"snippet_sort_order": "inline"
631```
632
6333. Place snippets at the bottom of the completion list:
634
635```json
636"snippet_sort_order": "bottom"
637```
638
639## Editor Scrollbar
640
641- Description: Whether or not to show the editor scrollbar and various elements in it.
642- Setting: `scrollbar`
643- Default:
644
645```json
646"scrollbar": {
647 "show": "auto",
648 "cursors": true,
649 "git_diff": true,
650 "search_results": true,
651 "selected_text": true,
652 "selected_symbol": true,
653 "diagnostics": "all",
654 "axes": {
655 "horizontal": true,
656 "vertical": true,
657 },
658},
659```
660
661### Show Mode
662
663- Description: When to show the editor scrollbar.
664- Setting: `show`
665- Default: `auto`
666
667**Options**
668
6691. Show the scrollbar if there's important information or follow the system's configured behavior:
670
671```json
672"scrollbar": {
673 "show": "auto"
674}
675```
676
6772. Match the system's configured behavior:
678
679```json
680"scrollbar": {
681 "show": "system"
682}
683```
684
6853. Always show the scrollbar:
686
687```json
688"scrollbar": {
689 "show": "always"
690}
691```
692
6934. Never show the scrollbar:
694
695```json
696"scrollbar": {
697 "show": "never"
698}
699```
700
701### Cursor Indicators
702
703- Description: Whether to show cursor positions in the scrollbar.
704- Setting: `cursors`
705- Default: `true`
706
707**Options**
708
709`boolean` values
710
711### Git Diff Indicators
712
713- Description: Whether to show git diff indicators in the scrollbar.
714- Setting: `git_diff`
715- Default: `true`
716
717**Options**
718
719`boolean` values
720
721### Search Results Indicators
722
723- Description: Whether to show buffer search results in the scrollbar.
724- Setting: `search_results`
725- Default: `true`
726
727**Options**
728
729`boolean` values
730
731### Selected Text Indicators
732
733- Description: Whether to show selected text occurrences in the scrollbar.
734- Setting: `selected_text`
735- Default: `true`
736
737**Options**
738
739`boolean` values
740
741### Selected Symbols Indicators
742
743- Description: Whether to show selected symbol occurrences in the scrollbar.
744- Setting: `selected_symbol`
745- Default: `true`
746
747**Options**
748
749`boolean` values
750
751### Diagnostics
752
753- Description: Which diagnostic indicators to show in the scrollbar.
754- Setting: `diagnostics`
755- Default: `all`
756
757**Options**
758
7591. Show all diagnostics:
760
761```json
762{
763 "diagnostics": "all"
764}
765```
766
7672. Do not show any diagnostics:
768
769```json
770{
771 "diagnostics": "none"
772}
773```
774
7753. Show only errors:
776
777```json
778{
779 "diagnostics": "error"
780}
781```
782
7834. Show only errors and warnings:
784
785```json
786{
787 "diagnostics": "warning"
788}
789```
790
7915. Show only errors, warnings, and information:
792
793```json
794{
795 "diagnostics": "information"
796}
797```
798
799### Axes
800
801- Description: Forcefully enable or disable the scrollbar for each axis
802- Setting: `axes`
803- Default:
804
805```json
806"scrollbar": {
807 "axes": {
808 "horizontal": true,
809 "vertical": true,
810 },
811}
812```
813
814#### Horizontal
815
816- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
817- Setting: `horizontal`
818- Default: `true`
819
820**Options**
821
822`boolean` values
823
824#### Vertical
825
826- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
827- Setting: `vertical`
828- Default: `true`
829
830**Options**
831
832`boolean` values
833
834## Editor Tab Bar
835
836- Description: Settings related to the editor's tab bar.
837- Settings: `tab_bar`
838- Default:
839
840```json
841"tab_bar": {
842 "show": true,
843 "show_nav_history_buttons": true,
844 "show_tab_bar_buttons": true
845}
846```
847
848### Show
849
850- Description: Whether or not to show the tab bar in the editor.
851- Setting: `show`
852- Default: `true`
853
854**Options**
855
856`boolean` values
857
858### Navigation History Buttons
859
860- Description: Whether or not to show the navigation history buttons.
861- Setting: `show_nav_history_buttons`
862- Default: `true`
863
864**Options**
865
866`boolean` values
867
868### Tab Bar Buttons
869
870- Description: Whether or not to show the tab bar buttons.
871- Setting: `show_tab_bar_buttons`
872- Default: `true`
873
874**Options**
875
876`boolean` values
877
878## Editor Tabs
879
880- Description: Configuration for the editor tabs.
881- Setting: `tabs`
882- Default:
883
884```json
885"tabs": {
886 "close_position": "right",
887 "file_icons": false,
888 "git_status": false,
889 "activate_on_close": "history",
890 "show_close_button": "hover",
891 "show_diagnostics": "off"
892},
893```
894
895### Close Position
896
897- Description: Where to display close button within a tab.
898- Setting: `close_position`
899- Default: `right`
900
901**Options**
902
9031. Display the close button on the right:
904
905```json
906{
907 "close_position": "right"
908}
909```
910
9112. Display the close button on the left:
912
913```json
914{
915 "close_position": "left"
916}
917```
918
919### File Icons
920
921- Description: Whether to show the file icon for a tab.
922- Setting: `file_icons`
923- Default: `false`
924
925### Git Status
926
927- Description: Whether or not to show Git file status in tab.
928- Setting: `git_status`
929- Default: `false`
930
931### Activate on close
932
933- Description: What to do after closing the current tab.
934- Setting: `activate_on_close`
935- Default: `history`
936
937**Options**
938
9391. Activate the tab that was open previously:
940
941```json
942{
943 "activate_on_close": "history"
944}
945```
946
9472. Activate the right neighbour tab if present:
948
949```json
950{
951 "activate_on_close": "neighbour"
952}
953```
954
9553. Activate the left neighbour tab if present:
956
957```json
958{
959 "activate_on_close": "left_neighbour"
960}
961```
962
963### Show close button
964
965- Description: Controls the appearance behavior of the tab's close button.
966- Setting: `show_close_button`
967- Default: `hover`
968
969**Options**
970
9711. Show it just upon hovering the tab:
972
973```json
974{
975 "show_close_button": "hover"
976}
977```
978
9792. Show it persistently:
980
981```json
982{
983 "show_close_button": "always"
984}
985```
986
9873. Never show it, even if hovering it:
988
989```json
990{
991 "show_close_button": "hidden"
992}
993```
994
995### Show Diagnostics
996
997- Description: Whether to show diagnostics indicators in tabs. This setting only works when file icons are active and controls which files with diagnostic issues to mark.
998- Setting: `show_diagnostics`
999- Default: `off`
1000
1001**Options**
1002
10031. Do not mark any files:
1004
1005```json
1006{
1007 "show_diagnostics": "off"
1008}
1009```
1010
10112. Only mark files with errors:
1012
1013```json
1014{
1015 "show_diagnostics": "errors"
1016}
1017```
1018
10193. Mark files with errors and warnings:
1020
1021```json
1022{
1023 "show_diagnostics": "all"
1024}
1025```
1026
1027## Editor Toolbar
1028
1029- Description: Whether or not to show various elements in the editor toolbar.
1030- Setting: `toolbar`
1031- Default:
1032
1033```json
1034"toolbar": {
1035 "breadcrumbs": true,
1036 "quick_actions": true,
1037 "selections_menu": true,
1038 "agent_review": true
1039},
1040```
1041
1042**Options**
1043
1044Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1045
1046## Enable Language Server
1047
1048- Description: Whether or not to use language servers to provide code intelligence.
1049- Setting: `enable_language_server`
1050- Default: `true`
1051
1052**Options**
1053
1054`boolean` values
1055
1056## Ensure Final Newline On Save
1057
1058- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1059- Setting: `ensure_final_newline_on_save`
1060- Default: `true`
1061
1062**Options**
1063
1064`boolean` values
1065
1066## LSP
1067
1068- Description: Configuration for language servers.
1069- Setting: `lsp`
1070- Default: `null`
1071
1072**Options**
1073
1074The following settings can be overridden for specific language servers:
1075
1076- `initialization_options`
1077- `settings`
1078
1079To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1080
1081Some 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.
1082
1083For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1084
1085```json
1086"lsp": {
1087 "rust-analyzer": {
1088 "initialization_options": {
1089 "check": {
1090 "command": "clippy" // rust-analyzer.check.command (default: "check")
1091 }
1092 }
1093 }
1094}
1095```
1096
1097While other options may be changed at a runtime and should be placed under `settings`:
1098
1099```json
1100"lsp": {
1101 "yaml-language-server": {
1102 "settings": {
1103 "yaml": {
1104 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1105 }
1106 }
1107 }
1108}
1109```
1110
1111## LSP Highlight Debounce
1112
1113- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1114- Setting: `lsp_highlight_debounce`
1115- Default: `75`
1116
1117**Options**
1118
1119`integer` values representing milliseconds
1120
1121## Format On Save
1122
1123- Description: Whether or not to perform a buffer format before saving.
1124- Setting: `format_on_save`
1125- Default: `on`
1126
1127**Options**
1128
11291. `on`, enables format on save obeying `formatter` setting:
1130
1131```json
1132{
1133 "format_on_save": "on"
1134}
1135```
1136
11372. `off`, disables format on save:
1138
1139```json
1140{
1141 "format_on_save": "off"
1142}
1143```
1144
1145## Formatter
1146
1147- Description: How to perform a buffer format.
1148- Setting: `formatter`
1149- Default: `auto`
1150
1151**Options**
1152
11531. To use the current language server, use `"language_server"`:
1154
1155```json
1156{
1157 "formatter": "language_server"
1158}
1159```
1160
11612. 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):
1162
1163```json
1164{
1165 "formatter": {
1166 "external": {
1167 "command": "sed",
1168 "arguments": ["-e", "s/ *$//"]
1169 }
1170 }
1171}
1172```
1173
11743. 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.
1175
1176WARNING: `{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.
1177
1178```json
1179 "formatter": {
1180 "external": {
1181 "command": "prettier",
1182 "arguments": ["--stdin-filepath", "{buffer_path}"]
1183 }
1184 }
1185```
1186
11874. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1188
1189```json
1190{
1191 "formatter": {
1192 "code_actions": {
1193 // Use ESLint's --fix:
1194 "source.fixAll.eslint": true,
1195 // Organize imports on save:
1196 "source.organizeImports": true
1197 }
1198 }
1199}
1200```
1201
12025. Or to use multiple formatters consecutively, use an array of formatters:
1203
1204```json
1205{
1206 "formatter": [
1207 { "language_server": { "name": "rust-analyzer" } },
1208 {
1209 "external": {
1210 "command": "sed",
1211 "arguments": ["-e", "s/ *$//"]
1212 }
1213 }
1214 ]
1215}
1216```
1217
1218Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1219If any of the formatters fails, the subsequent ones will still be executed.
1220
1221## Code Actions On Format
1222
1223- Description: The code actions to perform with the primary language server when formatting the buffer.
1224- Setting: `code_actions_on_format`
1225- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
1226
1227**Examples**
1228
1229<!--
1230TBD: Add Python Ruff source.organizeImports example
1231-->
1232
12331. Organize imports on format in TypeScript and TSX buffers:
1234
1235```json
1236{
1237 "languages": {
1238 "TypeScript": {
1239 "code_actions_on_format": {
1240 "source.organizeImports": true
1241 }
1242 },
1243 "TSX": {
1244 "code_actions_on_format": {
1245 "source.organizeImports": true
1246 }
1247 }
1248 }
1249}
1250```
1251
12522. Run ESLint `fixAll` code action when formatting:
1253
1254```json
1255{
1256 "languages": {
1257 "JavaScript": {
1258 "code_actions_on_format": {
1259 "source.fixAll.eslint": true
1260 }
1261 }
1262 }
1263}
1264```
1265
12663. Run only a single ESLint rule when using `fixAll`:
1267
1268```json
1269{
1270 "languages": {
1271 "JavaScript": {
1272 "code_actions_on_format": {
1273 "source.fixAll.eslint": true
1274 }
1275 }
1276 },
1277 "lsp": {
1278 "eslint": {
1279 "settings": {
1280 "codeActionOnSave": {
1281 "rules": ["import/order"]
1282 }
1283 }
1284 }
1285 }
1286}
1287```
1288
1289## Auto close
1290
1291- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1292- Setting: `use_autoclose`
1293- Default: `true`
1294
1295**Options**
1296
1297`boolean` values
1298
1299## Always Treat Brackets As Autoclosed
1300
1301- Description: Controls how the editor handles the autoclosed characters.
1302- Setting: `always_treat_brackets_as_autoclosed`
1303- Default: `false`
1304
1305**Options**
1306
1307`boolean` values
1308
1309**Example**
1310
1311If the setting is set to `true`:
1312
13131. Enter in the editor: `)))`
13142. Move the cursor to the start: `^)))`
13153. Enter again: `)))`
1316
1317The result is still `)))` and not `))))))`, which is what it would be by default.
1318
1319## File Scan Exclusions
1320
1321- Setting: `file_scan_exclusions`
1322- Description: Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Overrides `file_scan_inclusions`.
1323- Default:
1324
1325```json
1326"file_scan_exclusions": [
1327 "**/.git",
1328 "**/.svn",
1329 "**/.hg",
1330 "**/.jj",
1331 "**/CVS",
1332 "**/.DS_Store",
1333 "**/Thumbs.db",
1334 "**/.classpath",
1335 "**/.settings"
1336],
1337```
1338
1339Note, 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.
1340
1341## File Scan Inclusions
1342
1343- Setting: `file_scan_inclusions`
1344- Description: Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. `file_scan_exclusions` takes precedence over these inclusions.
1345- Default:
1346
1347```json
1348"file_scan_inclusions": [".env*"],
1349```
1350
1351## File Types
1352
1353- Setting: `file_types`
1354- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1355- Default:
1356
1357```json
1358"file_types": {
1359 "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1360 "Shell Script": [".env.*"]
1361}
1362```
1363
1364**Examples**
1365
1366To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1367
1368```json
1369{
1370 "file_types": {
1371 "C++": ["c"],
1372 "TOML": ["MyLockFile"],
1373 "Dockerfile": ["Dockerfile*"]
1374 }
1375}
1376```
1377
1378## Diagnostics
1379
1380- Description: Configuration for diagnostics-related features.
1381- Setting: `diagnostics`
1382- Default:
1383
1384```json
1385{
1386 "diagnostics": {
1387 "include_warnings": true,
1388 "inline": {
1389 "enabled": false
1390 },
1391 "update_with_cursor": false,
1392 "primary_only": false,
1393 "use_rendered": false
1394 }
1395}
1396```
1397
1398### Inline Diagnostics
1399
1400- Description: Whether or not to show diagnostics information inline.
1401- Setting: `inline`
1402- Default:
1403
1404```json
1405{
1406 "diagnostics": {
1407 "inline": {
1408 "enabled": false,
1409 "update_debounce_ms": 150,
1410 "padding": 4,
1411 "min_column": 0,
1412 "max_severity": null
1413 }
1414 }
1415}
1416```
1417
1418**Options**
1419
14201. Enable inline diagnostics.
1421
1422```json
1423{
1424 "diagnostics": {
1425 "inline": {
1426 "enabled": true
1427 }
1428 }
1429}
1430```
1431
14322. Delay diagnostic updates until some time after the last diagnostic update.
1433
1434```json
1435{
1436 "diagnostics": {
1437 "inline": {
1438 "enabled": true,
1439 "update_debounce_ms": 150
1440 }
1441 }
1442}
1443```
1444
14453. Set padding between the end of the source line and the start of the diagnostic.
1446
1447```json
1448{
1449 "diagnostics": {
1450 "inline": {
1451 "enabled": true,
1452 "padding": 4
1453 }
1454 }
1455}
1456```
1457
14584. Horizontally align inline diagnostics at the given column.
1459
1460```json
1461{
1462 "diagnostics": {
1463 "inline": {
1464 "enabled": true,
1465 "min_column": 80
1466 }
1467 }
1468}
1469```
1470
14715. Show only warning and error diagnostics.
1472
1473```json
1474{
1475 "diagnostics": {
1476 "inline": {
1477 "enabled": true,
1478 "max_severity": "warning"
1479 }
1480 }
1481}
1482```
1483
1484## Git
1485
1486- Description: Configuration for git-related features.
1487- Setting: `git`
1488- Default:
1489
1490```json
1491{
1492 "git": {
1493 "git_gutter": "tracked_files",
1494 "inline_blame": {
1495 "enabled": true
1496 },
1497 "hunk_style": "staged_hollow"
1498 }
1499}
1500```
1501
1502### Git Gutter
1503
1504- Description: Whether or not to show the git gutter.
1505- Setting: `git_gutter`
1506- Default: `tracked_files`
1507
1508**Options**
1509
15101. Show git gutter in tracked files
1511
1512```json
1513{
1514 "git": {
1515 "git_gutter": "tracked_files"
1516 }
1517}
1518```
1519
15202. Hide git gutter
1521
1522```json
1523{
1524 "git": {
1525 "git_gutter": "hide"
1526 }
1527}
1528```
1529
1530### Gutter Debounce
1531
1532- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1533- Setting: `gutter_debounce`
1534- Default: `null`
1535
1536**Options**
1537
1538`integer` values representing milliseconds
1539
1540Example:
1541
1542```json
1543{
1544 "git": {
1545 "gutter_debounce": 100
1546 }
1547}
1548```
1549
1550### Inline Git Blame
1551
1552- Description: Whether or not to show git blame information inline, on the currently focused line.
1553- Setting: `inline_blame`
1554- Default:
1555
1556```json
1557{
1558 "git": {
1559 "inline_blame": {
1560 "enabled": true
1561 }
1562 }
1563}
1564```
1565
1566### Hunk Style
1567
1568- Description: What styling we should use for the diff hunks.
1569- Setting: `hunk_style`
1570- Default:
1571
1572```json
1573{
1574 "git": {
1575 "hunk_style": "staged_hollow"
1576 }
1577}
1578```
1579
1580**Options**
1581
15821. Show the staged hunks faded out and with a border:
1583
1584```json
1585{
1586 "git": {
1587 "hunk_style": "staged_hollow"
1588 }
1589}
1590```
1591
15922. Show unstaged hunks faded out and with a border:
1593
1594```json
1595{
1596 "git": {
1597 "hunk_style": "unstaged_hollow"
1598 }
1599}
1600```
1601
1602**Options**
1603
16041. Disable inline git blame:
1605
1606```json
1607{
1608 "git": {
1609 "inline_blame": {
1610 "enabled": false
1611 }
1612 }
1613}
1614```
1615
16162. Only show inline git blame after a delay (that starts after cursor stops moving):
1617
1618```json
1619{
1620 "git": {
1621 "inline_blame": {
1622 "enabled": true,
1623 "delay_ms": 500
1624 }
1625 }
1626}
1627```
1628
16293. Show a commit summary next to the commit date and author:
1630
1631```json
1632{
1633 "git": {
1634 "inline_blame": {
1635 "enabled": true,
1636 "show_commit_summary": true
1637 }
1638 }
1639}
1640```
1641
16424. Use this as the minimum column at which to display inline blame information:
1643
1644```json
1645{
1646 "git": {
1647 "inline_blame": {
1648 "enabled": true,
1649 "min_column": 80
1650 }
1651 }
1652}
1653```
1654
1655## Indent Guides
1656
1657- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1658- Setting: `indent_guides`
1659- Default:
1660
1661```json
1662{
1663 "indent_guides": {
1664 "enabled": true,
1665 "line_width": 1,
1666 "active_line_width": 1,
1667 "coloring": "fixed",
1668 "background_coloring": "disabled"
1669 }
1670}
1671```
1672
1673**Options**
1674
16751. Disable indent guides
1676
1677```json
1678{
1679 "indent_guides": {
1680 "enabled": false
1681 }
1682}
1683```
1684
16852. Enable indent guides for a specific language.
1686
1687```json
1688{
1689 "languages": {
1690 "Python": {
1691 "indent_guides": {
1692 "enabled": true
1693 }
1694 }
1695 }
1696}
1697```
1698
16993. Enable indent aware coloring ("rainbow indentation").
1700 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.
1701
1702```json
1703{
1704 "indent_guides": {
1705 "enabled": true,
1706 "coloring": "indent_aware"
1707 }
1708}
1709```
1710
17114. Enable indent aware background coloring ("rainbow indentation").
1712 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.
1713
1714```json
1715{
1716 "indent_guides": {
1717 "enabled": true,
1718 "coloring": "indent_aware",
1719 "background_coloring": "indent_aware"
1720 }
1721}
1722```
1723
1724## Hard Tabs
1725
1726- Description: Whether to indent lines using tab characters or multiple spaces.
1727- Setting: `hard_tabs`
1728- Default: `false`
1729
1730**Options**
1731
1732`boolean` values
1733
1734## Hover Popover Enabled
1735
1736- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1737- Setting: `hover_popover_enabled`
1738- Default: `true`
1739
1740**Options**
1741
1742`boolean` values
1743
1744## Hover Popover Delay
1745
1746- Description: Time to wait in milliseconds before showing the informational hover box.
1747- Setting: `hover_popover_delay`
1748- Default: `300`
1749
1750**Options**
1751
1752`integer` values representing milliseconds
1753
1754## Icon Theme
1755
1756- Description: The icon theme setting can be specified in two forms - either as the name of an icon theme or as an object containing the `mode`, `dark`, and `light` icon themes for files/folders inside Zed.
1757- Setting: `icon_theme`
1758- Default: `Zed (Default)`
1759
1760### Icon Theme Object
1761
1762- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1763- Setting: `icon_theme`
1764- Default:
1765
1766```json
1767"icon_theme": {
1768 "mode": "system",
1769 "dark": "Zed (Default)",
1770 "light": "Zed (Default)"
1771},
1772```
1773
1774### Mode
1775
1776- Description: Specify the icon theme mode.
1777- Setting: `mode`
1778- Default: `system`
1779
1780**Options**
1781
17821. Set the icon theme to dark mode
1783
1784```json
1785{
1786 "mode": "dark"
1787}
1788```
1789
17902. Set the icon theme to light mode
1791
1792```json
1793{
1794 "mode": "light"
1795}
1796```
1797
17983. Set the icon theme to system mode
1799
1800```json
1801{
1802 "mode": "system"
1803}
1804```
1805
1806### Dark
1807
1808- Description: The name of the dark icon theme.
1809- Setting: `dark`
1810- Default: `Zed (Default)`
1811
1812**Options**
1813
1814Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1815
1816### Light
1817
1818- Description: The name of the light icon theme.
1819- Setting: `light`
1820- Default: `Zed (Default)`
1821
1822**Options**
1823
1824Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1825
1826## Inlay hints
1827
1828- Description: Configuration for displaying extra text with hints in the editor.
1829- Setting: `inlay_hints`
1830- Default:
1831
1832```json
1833"inlay_hints": {
1834 "enabled": false,
1835 "show_type_hints": true,
1836 "show_parameter_hints": true,
1837 "show_other_hints": true,
1838 "show_background": false,
1839 "edit_debounce_ms": 700,
1840 "scroll_debounce_ms": 50,
1841 "toggle_on_modifiers_press": null
1842}
1843```
1844
1845**Options**
1846
1847Inlay hints querying consists of two parts: editor (client) and LSP server.
1848With 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.
1849At 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.
1850
1851The following languages have inlay hints preconfigured by Zed:
1852
1853- [Go](https://docs.zed.dev/languages/go)
1854- [Rust](https://docs.zed.dev/languages/rust)
1855- [Svelte](https://docs.zed.dev/languages/svelte)
1856- [Typescript](https://docs.zed.dev/languages/typescript)
1857
1858Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1859
1860Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1861Settings-related hint updates are not debounced.
1862
1863All possible config values for `toggle_on_modifiers_press` are:
1864
1865```json
1866"inlay_hints": {
1867 "toggle_on_modifiers_press": {
1868 "control": true,
1869 "shift": true,
1870 "alt": true,
1871 "platform": true,
1872 "function": true
1873 }
1874}
1875```
1876
1877Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
1878
1879## Journal
1880
1881- Description: Configuration for the journal.
1882- Setting: `journal`
1883- Default:
1884
1885```json
1886"journal": {
1887 "path": "~",
1888 "hour_format": "hour12"
1889}
1890```
1891
1892### Path
1893
1894- Description: The path of the directory where journal entries are stored.
1895- Setting: `path`
1896- Default: `~`
1897
1898**Options**
1899
1900`string` values
1901
1902### Hour Format
1903
1904- Description: The format to use for displaying hours in the journal.
1905- Setting: `hour_format`
1906- Default: `hour12`
1907
1908**Options**
1909
19101. 12-hour format:
1911
1912```json
1913{
1914 "hour_format": "hour12"
1915}
1916```
1917
19182. 24-hour format:
1919
1920```json
1921{
1922 "hour_format": "hour24"
1923}
1924```
1925
1926## Languages
1927
1928- Description: Configuration for specific languages.
1929- Setting: `languages`
1930- Default: `null`
1931
1932**Options**
1933
1934To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1935
1936```json
1937"languages": {
1938 "C": {
1939 "format_on_save": "off",
1940 "preferred_line_length": 64,
1941 "soft_wrap": "preferred_line_length"
1942 },
1943 "JSON": {
1944 "tab_size": 4
1945 }
1946}
1947```
1948
1949The following settings can be overridden for each specific language:
1950
1951- [`enable_language_server`](#enable-language-server)
1952- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
1953- [`format_on_save`](#format-on-save)
1954- [`formatter`](#formatter)
1955- [`hard_tabs`](#hard-tabs)
1956- [`preferred_line_length`](#preferred-line-length)
1957- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
1958- [`show_edit_predictions`](#show-edit-predictions)
1959- [`show_whitespaces`](#show-whitespaces)
1960- [`soft_wrap`](#soft-wrap)
1961- [`tab_size`](#tab-size)
1962- [`use_autoclose`](#use-autoclose)
1963- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
1964
1965These values take in the same options as the root-level settings with the same name.
1966
1967## Network Proxy
1968
1969- Description: Configure a network proxy for Zed.
1970- Setting: `proxy`
1971- Default: `null`
1972
1973**Options**
1974
1975The proxy setting must contain a URL to the proxy.
1976
1977The following URI schemes are supported:
1978
1979- `http`
1980- `https`
1981- `socks4` - SOCKS4 proxy with local DNS
1982- `socks4a` - SOCKS4 proxy with remote DNS
1983- `socks5` - SOCKS5 proxy with local DNS
1984- `socks5h` - SOCKS5 proxy with remote DNS
1985
1986`http` will be used when no scheme is specified.
1987
1988By 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`.
1989
1990For example, to set an `http` proxy, add the following to your settings:
1991
1992```json
1993{
1994 "proxy": "http://127.0.0.1:10809"
1995}
1996```
1997
1998Or to set a `socks5` proxy:
1999
2000```json
2001{
2002 "proxy": "socks5h://localhost:10808"
2003}
2004```
2005
2006## Preview tabs
2007
2008- Description:
2009 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. \
2010 There are several ways to convert a preview tab into a regular tab:
2011
2012 - Double-clicking on the file
2013 - Double-clicking on the tab header
2014 - Using the `project_panel::OpenPermanent` action
2015 - Editing the file
2016 - Dragging the file to a different pane
2017
2018- Setting: `preview_tabs`
2019- Default:
2020
2021```json
2022"preview_tabs": {
2023 "enabled": true,
2024 "enable_preview_from_file_finder": false,
2025 "enable_preview_from_code_navigation": false,
2026}
2027```
2028
2029### Enable preview from file finder
2030
2031- Description: Determines whether to open files in preview mode when selected from the file finder.
2032- Setting: `enable_preview_from_file_finder`
2033- Default: `false`
2034
2035**Options**
2036
2037`boolean` values
2038
2039### Enable preview from code navigation
2040
2041- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2042- Setting: `enable_preview_from_code_navigation`
2043- Default: `false`
2044
2045**Options**
2046
2047`boolean` values
2048
2049## File Finder
2050
2051### File Icons
2052
2053- Description: Whether to show file icons in the file finder.
2054- Setting: `file_icons`
2055- Default: `true`
2056
2057### Modal Max Width
2058
2059- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2060- Setting: `modal_max_width`
2061- Default: `small`
2062
2063### Skip Focus For Active In Search
2064
2065- Description: Determines whether the file finder should skip focus for the active file in search results.
2066- Setting: `skip_focus_for_active_in_search`
2067- Default: `true`
2068
2069## Preferred Line Length
2070
2071- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2072- Setting: `preferred_line_length`
2073- Default: `80`
2074
2075**Options**
2076
2077`integer` values
2078
2079## Projects Online By Default
2080
2081- Description: Whether or not to show the online projects view by default.
2082- Setting: `projects_online_by_default`
2083- Default: `true`
2084
2085**Options**
2086
2087`boolean` values
2088
2089## Remove Trailing Whitespace On Save
2090
2091- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2092- Setting: `remove_trailing_whitespace_on_save`
2093- Default: `true`
2094
2095**Options**
2096
2097`boolean` values
2098
2099## Search
2100
2101- Description: Search options to enable by default when opening new project and buffer searches.
2102- Setting: `search`
2103- Default:
2104
2105```json
2106"search": {
2107 "whole_word": false,
2108 "case_sensitive": false,
2109 "include_ignored": false,
2110 "regex": false
2111},
2112```
2113
2114## Seed Search Query From Cursor
2115
2116- Description: When to populate a new search's query based on the text under the cursor.
2117- Setting: `seed_search_query_from_cursor`
2118- Default: `always`
2119
2120**Options**
2121
21221. `always` always populate the search query with the word under the cursor
21232. `selection` only populate the search query when there is text selected
21243. `never` never populate the search query
2125
2126## Use Smartcase Search
2127
2128- Description: When enabled, automatically adjusts search case sensitivity based on your query. If your search query contains any uppercase letters, the search becomes case-sensitive; if it contains only lowercase letters, the search becomes case-insensitive. \
2129 This applies to both in-file searches and project-wide searches.
2130- Setting: `use_smartcase_search`
2131- Default: `false`
2132
2133**Options**
2134
2135`boolean` values
2136
2137Examples:
2138
2139- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2140- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2141
2142## Show Call Status Icon
2143
2144- Description: Whether or not to show the call status icon in the status bar.
2145- Setting: `show_call_status_icon`
2146- Default: `true`
2147
2148**Options**
2149
2150`boolean` values
2151
2152## Completions
2153
2154- Description: Controls how completions are processed for this language.
2155- Setting: `completions`
2156- Default:
2157
2158```json
2159{
2160 "completions": {
2161 "words": "fallback",
2162 "lsp": true,
2163 "lsp_fetch_timeout_ms": 0,
2164 "lsp_insert_mode": "replace_suffix"
2165 }
2166}
2167```
2168
2169### Words
2170
2171- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2172- Setting: `words`
2173- Default: `fallback`
2174
2175**Options**
2176
21771. `enabled` - Always fetch document's words for completions along with LSP completions
21782. `fallback` - Only if LSP response errors or times out, use document's words to show completions
21793. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2180
2181### LSP
2182
2183- Description: Whether to fetch LSP completions or not.
2184- Setting: `lsp`
2185- Default: `true`
2186
2187**Options**
2188
2189`boolean` values
2190
2191### LSP Fetch Timeout (ms)
2192
2193- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2194- Setting: `lsp_fetch_timeout_ms`
2195- Default: `0`
2196
2197**Options**
2198
2199`integer` values representing milliseconds
2200
2201### LSP Insert Mode
2202
2203- Description: Controls what range to replace when accepting LSP completions.
2204- Setting: `lsp_insert_mode`
2205- Default: `replace_suffix`
2206
2207**Options**
2208
22091. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
22102. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
22113. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
22124. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2213
2214## Show Completions On Input
2215
2216- Description: Whether or not to show completions as you type.
2217- Setting: `show_completions_on_input`
2218- Default: `true`
2219
2220**Options**
2221
2222`boolean` values
2223
2224## Show Completion Documentation
2225
2226- Description: Whether to display inline and alongside documentation for items in the completions menu.
2227- Setting: `show_completion_documentation`
2228- Default: `true`
2229
2230**Options**
2231
2232`boolean` values
2233
2234## Show Edit Predictions
2235
2236- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2237- Setting: `show_edit_predictions`
2238- Default: `true`
2239
2240**Options**
2241
2242`boolean` values
2243
2244## Show Whitespaces
2245
2246- Description: Whether or not to render whitespace characters in the editor.
2247- Setting: `show_whitespaces`
2248- Default: `selection`
2249
2250**Options**
2251
22521. `all`
22532. `selection`
22543. `none`
22554. `boundary`
2256
2257## Soft Wrap
2258
2259- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2260- Setting: `soft_wrap`
2261- Default: `none`
2262
2263**Options**
2264
22651. `none` to avoid wrapping generally, unless the line is too long
22662. `prefer_line` (deprecated, same as `none`)
22673. `editor_width` to wrap lines that overflow the editor width
22684. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
22695. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2270
2271## Wrap Guides (Vertical Rulers)
2272
2273- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2274- Setting: `wrap_guides`
2275- Default: []
2276
2277**Options**
2278
2279List of `integer` column numbers
2280
2281## Tab Size
2282
2283- Description: The number of spaces to use for each tab character.
2284- Setting: `tab_size`
2285- Default: `4`
2286
2287**Options**
2288
2289`integer` values
2290
2291## Telemetry
2292
2293- Description: Control what info is collected by Zed.
2294- Setting: `telemetry`
2295- Default:
2296
2297```json
2298"telemetry": {
2299 "diagnostics": true,
2300 "metrics": true
2301},
2302```
2303
2304**Options**
2305
2306### Diagnostics
2307
2308- Description: Setting for sending debug-related data, such as crash reports.
2309- Setting: `diagnostics`
2310- Default: `true`
2311
2312**Options**
2313
2314`boolean` values
2315
2316### Metrics
2317
2318- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2319- Setting: `metrics`
2320- Default: `true`
2321
2322**Options**
2323
2324`boolean` values
2325
2326## Terminal
2327
2328- Description: Configuration for the terminal.
2329- Setting: `terminal`
2330- Default:
2331
2332```json
2333{
2334 "terminal": {
2335 "alternate_scroll": "off",
2336 "blinking": "terminal_controlled",
2337 "copy_on_select": false,
2338 "dock": "bottom",
2339 "default_width": 640,
2340 "default_height": 320,
2341 "detect_venv": {
2342 "on": {
2343 "directories": [".env", "env", ".venv", "venv"],
2344 "activate_script": "default"
2345 }
2346 },
2347 "env": {},
2348 "font_family": null,
2349 "font_features": null,
2350 "font_size": null,
2351 "line_height": "comfortable",
2352 "option_as_meta": false,
2353 "button": true,
2354 "shell": "system",
2355 "toolbar": {
2356 "breadcrumbs": true
2357 },
2358 "working_directory": "current_project_directory",
2359 "scrollbar": {
2360 "show": null
2361 }
2362 }
2363}
2364```
2365
2366### Terminal: Dock
2367
2368- Description: Control the position of the dock
2369- Setting: `dock`
2370- Default: `bottom`
2371
2372**Options**
2373
2374`"bottom"`, `"left"` or `"right"`
2375
2376### Terminal: Alternate Scroll
2377
2378- 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.
2379- Setting: `alternate_scroll`
2380- Default: `off`
2381
2382**Options**
2383
23841. Default alternate scroll mode to off
2385
2386```json
2387{
2388 "terminal": {
2389 "alternate_scroll": "off"
2390 }
2391}
2392```
2393
23942. Default alternate scroll mode to on
2395
2396```json
2397{
2398 "terminal": {
2399 "alternate_scroll": "on"
2400 }
2401}
2402```
2403
2404### Terminal: Blinking
2405
2406- Description: Set the cursor blinking behavior in the terminal
2407- Setting: `blinking`
2408- Default: `terminal_controlled`
2409
2410**Options**
2411
24121. Never blink the cursor, ignore the terminal mode
2413
2414```json
2415{
2416 "terminal": {
2417 "blinking": "off"
2418 }
2419}
2420```
2421
24222. Default the cursor blink to off, but allow the terminal to turn blinking on
2423
2424```json
2425{
2426 "terminal": {
2427 "blinking": "terminal_controlled"
2428 }
2429}
2430```
2431
24323. Always blink the cursor, ignore the terminal mode
2433
2434```json
2435{
2436 "terminal": {
2437 "blinking": "on"
2438 }
2439}
2440```
2441
2442### Terminal: Copy On Select
2443
2444- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2445- Setting: `copy_on_select`
2446- Default: `false`
2447
2448**Options**
2449
2450`boolean` values
2451
2452**Example**
2453
2454```json
2455{
2456 "terminal": {
2457 "copy_on_select": true
2458 }
2459}
2460```
2461
2462### Terminal: Env
2463
2464- 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
2465- Setting: `env`
2466- Default: `{}`
2467
2468**Example**
2469
2470```json
2471{
2472 "terminal": {
2473 "env": {
2474 "ZED": "1",
2475 "KEY": "value1:value2"
2476 }
2477 }
2478}
2479```
2480
2481### Terminal: Font Size
2482
2483- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2484- Setting: `font_size`
2485- Default: `null`
2486
2487**Options**
2488
2489`integer` values
2490
2491```json
2492{
2493 "terminal": {
2494 "font_size": 15
2495 }
2496}
2497```
2498
2499### Terminal: Font Family
2500
2501- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
2502- Setting: `font_family`
2503- Default: `null`
2504
2505**Options**
2506
2507The name of any font family installed on the user's system
2508
2509```json
2510{
2511 "terminal": {
2512 "font_family": "Berkeley Mono"
2513 }
2514}
2515```
2516
2517### Terminal: Font Features
2518
2519- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
2520- Setting: `font_features`
2521- Default: `null`
2522- Platform: macOS and Windows.
2523
2524**Options**
2525
2526See Buffer Font Features
2527
2528```json
2529{
2530 "terminal": {
2531 "font_features": {
2532 "calt": false
2533 // See Buffer Font Features for more features
2534 }
2535 }
2536}
2537```
2538
2539### Terminal: Line Height
2540
2541- Description: Set the terminal's line height.
2542- Setting: `line_height`
2543- Default: `comfortable`
2544
2545**Options**
2546
25471. Use a line height that's `comfortable` for reading, 1.618. (default)
2548
2549```json
2550{
2551 "terminal": {
2552 "line_height": "comfortable"
2553 }
2554}
2555```
2556
25572. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
2558
2559```json
2560{
2561 "terminal": {
2562 "line_height": "standard"
2563 }
2564}
2565```
2566
25673. Use a custom line height.
2568
2569```json
2570{
2571 "terminal": {
2572 "line_height": {
2573 "custom": 2
2574 }
2575 }
2576}
2577```
2578
2579### Terminal: Option As Meta
2580
2581- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
2582- Setting: `option_as_meta`
2583- Default: `false`
2584
2585**Options**
2586
2587`boolean` values
2588
2589```json
2590{
2591 "terminal": {
2592 "option_as_meta": true
2593 }
2594}
2595```
2596
2597### Terminal: Shell
2598
2599- Description: What shell to use when launching the terminal.
2600- Setting: `shell`
2601- Default: `system`
2602
2603**Options**
2604
26051. Use the system's default terminal configuration (usually the `/etc/passwd` file).
2606
2607```json
2608{
2609 "terminal": {
2610 "shell": "system"
2611 }
2612}
2613```
2614
26152. A program to launch:
2616
2617```json
2618{
2619 "terminal": {
2620 "shell": {
2621 "program": "sh"
2622 }
2623 }
2624}
2625```
2626
26273. A program with arguments:
2628
2629```json
2630{
2631 "terminal": {
2632 "shell": {
2633 "with_arguments": {
2634 "program": "/bin/bash",
2635 "args": ["--login"]
2636 }
2637 }
2638 }
2639}
2640```
2641
2642## Terminal: Detect Virtual Environments {#terminal-detect_venv}
2643
2644- 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.
2645- Setting: `detect_venv`
2646- Default:
2647
2648```json
2649{
2650 "terminal": {
2651 "detect_venv": {
2652 "on": {
2653 // Default directories to search for virtual environments, relative
2654 // to the current working directory. We recommend overriding this
2655 // in your project's settings, rather than globally.
2656 "directories": [".env", "env", ".venv", "venv"],
2657 // Can also be `csh`, `fish`, and `nushell`
2658 "activate_script": "default"
2659 }
2660 }
2661 }
2662}
2663```
2664
2665Disable with:
2666
2667```json
2668{
2669 "terminal": {
2670 "detect_venv": "off"
2671 }
2672}
2673```
2674
2675## Terminal: Toolbar
2676
2677- Description: Whether or not to show various elements in the terminal toolbar.
2678- Setting: `toolbar`
2679- Default:
2680
2681```json
2682{
2683 "terminal": {
2684 "toolbar": {
2685 "breadcrumbs": true
2686 }
2687 }
2688}
2689```
2690
2691**Options**
2692
2693At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
2694
2695If the terminal title is empty, the breadcrumbs won't be shown.
2696
2697The shell running in the terminal needs to be configured to emit the title.
2698
2699Example command to set the title: `echo -e "\e]2;New Title\007";`
2700
2701### Terminal: Button
2702
2703- Description: Control to show or hide the terminal button in the status bar
2704- Setting: `button`
2705- Default: `true`
2706
2707**Options**
2708
2709`boolean` values
2710
2711```json
2712{
2713 "terminal": {
2714 "button": false
2715 }
2716}
2717```
2718
2719### Terminal: Working Directory
2720
2721- Description: What working directory to use when launching the terminal.
2722- Setting: `working_directory`
2723- Default: `"current_project_directory"`
2724
2725**Options**
2726
27271. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
2728
2729```json
2730{
2731 "terminal": {
2732 "working_directory": "current_project_directory"
2733 }
2734}
2735```
2736
27372. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
2738
2739```json
2740{
2741 "terminal": {
2742 "working_directory": "first_project_directory"
2743 }
2744}
2745```
2746
27473. Always use this platform's home directory (if we can find it)
2748
2749```json
2750{
2751 "terminal": {
2752 "working_directory": "always_home"
2753 }
2754}
2755```
2756
27574. 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.
2758
2759```json
2760{
2761 "terminal": {
2762 "working_directory": {
2763 "always": {
2764 "directory": "~/zed/projects/"
2765 }
2766 }
2767 }
2768}
2769```
2770
2771## Theme
2772
2773- 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.
2774- Setting: `theme`
2775- Default: `One Dark`
2776
2777### Theme Object
2778
2779- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2780- Setting: `theme`
2781- Default:
2782
2783```json
2784"theme": {
2785 "mode": "system",
2786 "dark": "One Dark",
2787 "light": "One Light"
2788},
2789```
2790
2791### Mode
2792
2793- Description: Specify theme mode.
2794- Setting: `mode`
2795- Default: `system`
2796
2797**Options**
2798
27991. Set the theme to dark mode
2800
2801```json
2802{
2803 "mode": "dark"
2804}
2805```
2806
28072. Set the theme to light mode
2808
2809```json
2810{
2811 "mode": "light"
2812}
2813```
2814
28153. Set the theme to system mode
2816
2817```json
2818{
2819 "mode": "system"
2820}
2821```
2822
2823### Dark
2824
2825- Description: The name of the dark Zed theme to use for the UI.
2826- Setting: `dark`
2827- Default: `One Dark`
2828
2829**Options**
2830
2831Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2832
2833### Light
2834
2835- Description: The name of the light Zed theme to use for the UI.
2836- Setting: `light`
2837- Default: `One Light`
2838
2839**Options**
2840
2841Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2842
2843## Vim
2844
2845- Description: Whether or not to enable vim mode (work in progress).
2846- Setting: `vim_mode`
2847- Default: `false`
2848
2849## Project Panel
2850
2851- Description: Customize project panel
2852- Setting: `project_panel`
2853- Default:
2854
2855```json
2856{
2857 "project_panel": {
2858 "button": true,
2859 "default_width": 240,
2860 "dock": "left",
2861 "entry_spacing": "comfortable",
2862 "file_icons": true,
2863 "folder_icons": true,
2864 "git_status": true,
2865 "indent_size": 20,
2866 "auto_reveal_entries": true,
2867 "auto_fold_dirs": true,
2868 "scrollbar": {
2869 "show": null
2870 },
2871 "show_diagnostics": "all",
2872 "indent_guides": {
2873 "show": "always"
2874 }
2875 }
2876}
2877```
2878
2879### Dock
2880
2881- Description: Control the position of the dock
2882- Setting: `dock`
2883- Default: `left`
2884
2885**Options**
2886
28871. Default dock position to left
2888
2889```json
2890{
2891 "dock": "left"
2892}
2893```
2894
28952. Default dock position to right
2896
2897```json
2898{
2899 "dock": "right"
2900}
2901```
2902
2903### Entry Spacing
2904
2905- Description: Spacing between worktree entries
2906- Setting: `entry_spacing`
2907- Default: `comfortable`
2908
2909**Options**
2910
29111. Comfortable entry spacing
2912
2913```json
2914{
2915 "entry_spacing": "comfortable"
2916}
2917```
2918
29192. Standard entry spacing
2920
2921```json
2922{
2923 "entry_spacing": "standard"
2924}
2925```
2926
2927### Git Status
2928
2929- Description: Indicates newly created and updated files
2930- Setting: `git_status`
2931- Default: `true`
2932
2933**Options**
2934
29351. Default enable git status
2936
2937```json
2938{
2939 "git_status": true
2940}
2941```
2942
29432. Default disable git status
2944
2945```json
2946{
2947 "git_status": false
2948}
2949```
2950
2951### Default Width
2952
2953- Description: Customize default width taken by project panel
2954- Setting: `default_width`
2955- Default: `240`
2956
2957**Options**
2958
2959`float` values
2960
2961### Auto Reveal Entries
2962
2963- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2964- Setting: `auto_reveal_entries`
2965- Default: `true`
2966
2967**Options**
2968
29691. Enable auto reveal entries
2970
2971```json
2972{
2973 "auto_reveal_entries": true
2974}
2975```
2976
29772. Disable auto reveal entries
2978
2979```json
2980{
2981 "auto_reveal_entries": false
2982}
2983```
2984
2985### Auto Fold Dirs
2986
2987- Description: Whether to fold directories automatically when directory has only one directory inside.
2988- Setting: `auto_fold_dirs`
2989- Default: `true`
2990
2991**Options**
2992
29931. Enable auto fold dirs
2994
2995```json
2996{
2997 "auto_fold_dirs": true
2998}
2999```
3000
30012. Disable auto fold dirs
3002
3003```json
3004{
3005 "auto_fold_dirs": false
3006}
3007```
3008
3009### Indent Size
3010
3011- Description: Amount of indentation (in pixels) for nested items.
3012- Setting: `indent_size`
3013- Default: `20`
3014
3015### Indent Guides: Show
3016
3017- Description: Whether to show indent guides in the project panel.
3018- Setting: `indent_guides`
3019- Default:
3020
3021```json
3022"indent_guides": {
3023 "show": "always"
3024}
3025```
3026
3027**Options**
3028
30291. Show indent guides in the project panel
3030
3031```json
3032{
3033 "indent_guides": {
3034 "show": "always"
3035 }
3036}
3037```
3038
30392. Hide indent guides in the project panel
3040
3041```json
3042{
3043 "indent_guides": {
3044 "show": "never"
3045 }
3046}
3047```
3048
3049### Scrollbar: Show
3050
3051- 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.
3052- Setting: `scrollbar`
3053- Default:
3054
3055```json
3056"scrollbar": {
3057 "show": null
3058}
3059```
3060
3061**Options**
3062
30631. Show scrollbar in the project panel
3064
3065```json
3066{
3067 "scrollbar": {
3068 "show": "always"
3069 }
3070}
3071```
3072
30732. Hide scrollbar in the project panel
3074
3075```json
3076{
3077 "scrollbar": {
3078 "show": "never"
3079 }
3080}
3081```
3082
3083## Agent
3084
3085- Description: Customize agent behavior
3086- Setting: `agent`
3087- Default:
3088
3089```json
3090"agent": {
3091 "version": "2",
3092 "enabled": true,
3093 "button": true,
3094 "dock": "right",
3095 "default_width": 640,
3096 "default_height": 320,
3097 "default_model": {
3098 "provider": "zed.dev",
3099 "model": "claude-3-7-sonnet-latest"
3100 },
3101 "editor_model": {
3102 "provider": "zed.dev",
3103 "model": "claude-3-7-sonnet-latest"
3104 },
3105 "single_file_review": true,
3106}
3107```
3108
3109## Outline Panel
3110
3111- Description: Customize outline Panel
3112- Setting: `outline_panel`
3113- Default:
3114
3115```json
3116"outline_panel": {
3117 "button": true,
3118 "default_width": 300,
3119 "dock": "left",
3120 "file_icons": true,
3121 "folder_icons": true,
3122 "git_status": true,
3123 "indent_size": 20,
3124 "auto_reveal_entries": true,
3125 "auto_fold_dirs": true,
3126 "indent_guides": {
3127 "show": "always"
3128 },
3129 "scrollbar": {
3130 "show": null
3131 }
3132}
3133```
3134
3135## Calls
3136
3137- Description: Customize behavior when participating in a call
3138- Setting: `calls`
3139- Default:
3140
3141```json
3142"calls": {
3143 // Join calls with the microphone live by default
3144 "mute_on_join": false,
3145 // Share your project when you are the first to join a channel
3146 "share_on_join": false
3147},
3148```
3149
3150## Unnecessary Code Fade
3151
3152- Description: How much to fade out unused code.
3153- Setting: `unnecessary_code_fade`
3154- Default: `0.3`
3155
3156**Options**
3157
3158Float values between `0.0` and `0.9`, where:
3159
3160- `0.0` means no fading (unused code looks the same as used code)
3161- `0.9` means maximum fading (unused code is very faint but still visible)
3162
3163**Example**
3164
3165```json
3166{
3167 "unnecessary_code_fade": 0.5
3168}
3169```
3170
3171## UI Font Family
3172
3173- Description: The name of the font to use for text in the UI.
3174- Setting: `ui_font_family`
3175- Default: `Zed Plex Sans`
3176
3177**Options**
3178
3179The name of any font family installed on the system.
3180
3181## UI Font Features
3182
3183- Description: The OpenType features to enable for text in the UI.
3184- Setting: `ui_font_features`
3185- Default:
3186
3187```json
3188"ui_font_features": {
3189 "calt": false
3190}
3191```
3192
3193- Platform: macOS and Windows.
3194
3195**Options**
3196
3197Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3198
3199For example, to disable font ligatures, add the following to your settings:
3200
3201```json
3202{
3203 "ui_font_features": {
3204 "calt": false
3205 }
3206}
3207```
3208
3209You can also set other OpenType features, like setting `cv01` to `7`:
3210
3211```json
3212{
3213 "ui_font_features": {
3214 "cv01": 7
3215 }
3216}
3217```
3218
3219## UI Font Fallbacks
3220
3221- Description: The font fallbacks to use for text in the UI.
3222- Setting: `ui_font_fallbacks`
3223- Default: `null`
3224- Platform: macOS and Windows.
3225
3226**Options**
3227
3228For example, to use `Nerd Font` as a fallback, add the following to your settings:
3229
3230```json
3231{
3232 "ui_font_fallbacks": ["Nerd Font"]
3233}
3234```
3235
3236## UI Font Size
3237
3238- Description: The default font size for text in the UI.
3239- Setting: `ui_font_size`
3240- Default: `16`
3241
3242**Options**
3243
3244`integer` values from `6` to `100` pixels (inclusive)
3245
3246## UI Font Weight
3247
3248- Description: The default font weight for text in the UI.
3249- Setting: `ui_font_weight`
3250- Default: `400`
3251
3252**Options**
3253
3254`integer` values between `100` and `900`
3255
3256## An example configuration:
3257
3258```json
3259// ~/.config/zed/settings.json
3260{
3261 "theme": "cave-light",
3262 "tab_size": 2,
3263 "preferred_line_length": 80,
3264 "soft_wrap": "none",
3265
3266 "buffer_font_size": 18,
3267 "buffer_font_family": "Zed Plex Mono",
3268
3269 "autosave": "on_focus_change",
3270 "format_on_save": "off",
3271 "vim_mode": false,
3272 "projects_online_by_default": true,
3273 "terminal": {
3274 "font_family": "FiraCode Nerd Font Mono",
3275 "blinking": "off"
3276 },
3277 "languages": {
3278 "C": {
3279 "format_on_save": "language_server",
3280 "preferred_line_length": 64,
3281 "soft_wrap": "preferred_line_length"
3282 }
3283 }
3284}
3285```