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## Icon Theme
1745
1746- 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.
1747- Setting: `icon_theme`
1748- Default: `Zed (Default)`
1749
1750### Icon Theme Object
1751
1752- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1753- Setting: `icon_theme`
1754- Default:
1755
1756```json
1757"icon_theme": {
1758 "mode": "system",
1759 "dark": "Zed (Default)",
1760 "light": "Zed (Default)"
1761},
1762```
1763
1764### Mode
1765
1766- Description: Specify the icon theme mode.
1767- Setting: `mode`
1768- Default: `system`
1769
1770**Options**
1771
17721. Set the icon theme to dark mode
1773
1774```json
1775{
1776 "mode": "dark"
1777}
1778```
1779
17802. Set the icon theme to light mode
1781
1782```json
1783{
1784 "mode": "light"
1785}
1786```
1787
17883. Set the icon theme to system mode
1789
1790```json
1791{
1792 "mode": "system"
1793}
1794```
1795
1796### Dark
1797
1798- Description: The name of the dark icon theme.
1799- Setting: `dark`
1800- Default: `Zed (Default)`
1801
1802**Options**
1803
1804Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1805
1806### Light
1807
1808- Description: The name of the light icon theme.
1809- Setting: `light`
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## Inlay hints
1817
1818- Description: Configuration for displaying extra text with hints in the editor.
1819- Setting: `inlay_hints`
1820- Default:
1821
1822```json
1823"inlay_hints": {
1824 "enabled": false,
1825 "show_type_hints": true,
1826 "show_parameter_hints": true,
1827 "show_other_hints": true,
1828 "show_background": false,
1829 "edit_debounce_ms": 700,
1830 "scroll_debounce_ms": 50,
1831 "toggle_on_modifiers_press": null
1832}
1833```
1834
1835**Options**
1836
1837Inlay hints querying consists of two parts: editor (client) and LSP server.
1838With 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.
1839At 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.
1840
1841The following languages have inlay hints preconfigured by Zed:
1842
1843- [Go](https://docs.zed.dev/languages/go)
1844- [Rust](https://docs.zed.dev/languages/rust)
1845- [Svelte](https://docs.zed.dev/languages/svelte)
1846- [Typescript](https://docs.zed.dev/languages/typescript)
1847
1848Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1849
1850Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1851Settings-related hint updates are not debounced.
1852
1853All possible config values for `toggle_on_modifiers_press` are:
1854
1855```json
1856"inlay_hints": {
1857 "toggle_on_modifiers_press": {
1858 "control": true,
1859 "shift": true,
1860 "alt": true,
1861 "platform": true,
1862 "function": true
1863 }
1864}
1865```
1866
1867Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
1868
1869## Journal
1870
1871- Description: Configuration for the journal.
1872- Setting: `journal`
1873- Default:
1874
1875```json
1876"journal": {
1877 "path": "~",
1878 "hour_format": "hour12"
1879}
1880```
1881
1882### Path
1883
1884- Description: The path of the directory where journal entries are stored.
1885- Setting: `path`
1886- Default: `~`
1887
1888**Options**
1889
1890`string` values
1891
1892### Hour Format
1893
1894- Description: The format to use for displaying hours in the journal.
1895- Setting: `hour_format`
1896- Default: `hour12`
1897
1898**Options**
1899
19001. 12-hour format:
1901
1902```json
1903{
1904 "hour_format": "hour12"
1905}
1906```
1907
19082. 24-hour format:
1909
1910```json
1911{
1912 "hour_format": "hour24"
1913}
1914```
1915
1916## Languages
1917
1918- Description: Configuration for specific languages.
1919- Setting: `languages`
1920- Default: `null`
1921
1922**Options**
1923
1924To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1925
1926```json
1927"languages": {
1928 "C": {
1929 "format_on_save": "off",
1930 "preferred_line_length": 64,
1931 "soft_wrap": "preferred_line_length"
1932 },
1933 "JSON": {
1934 "tab_size": 4
1935 }
1936}
1937```
1938
1939The following settings can be overridden for each specific language:
1940
1941- [`enable_language_server`](#enable-language-server)
1942- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
1943- [`format_on_save`](#format-on-save)
1944- [`formatter`](#formatter)
1945- [`hard_tabs`](#hard-tabs)
1946- [`preferred_line_length`](#preferred-line-length)
1947- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
1948- [`show_edit_predictions`](#show-edit-predictions)
1949- [`show_whitespaces`](#show-whitespaces)
1950- [`soft_wrap`](#soft-wrap)
1951- [`tab_size`](#tab-size)
1952- [`use_autoclose`](#use-autoclose)
1953- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
1954
1955These values take in the same options as the root-level settings with the same name.
1956
1957## Network Proxy
1958
1959- Description: Configure a network proxy for Zed.
1960- Setting: `proxy`
1961- Default: `null`
1962
1963**Options**
1964
1965The proxy setting must contain a URL to the proxy.
1966
1967The following URI schemes are supported:
1968
1969- `http`
1970- `https`
1971- `socks4` - SOCKS4 proxy with local DNS
1972- `socks4a` - SOCKS4 proxy with remote DNS
1973- `socks5` - SOCKS5 proxy with local DNS
1974- `socks5h` - SOCKS5 proxy with remote DNS
1975
1976`http` will be used when no scheme is specified.
1977
1978By 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`.
1979
1980For example, to set an `http` proxy, add the following to your settings:
1981
1982```json
1983{
1984 "proxy": "http://127.0.0.1:10809"
1985}
1986```
1987
1988Or to set a `socks5` proxy:
1989
1990```json
1991{
1992 "proxy": "socks5h://localhost:10808"
1993}
1994```
1995
1996## Preview tabs
1997
1998- Description:
1999 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. \
2000 There are several ways to convert a preview tab into a regular tab:
2001
2002 - Double-clicking on the file
2003 - Double-clicking on the tab header
2004 - Using the `project_panel::OpenPermanent` action
2005 - Editing the file
2006 - Dragging the file to a different pane
2007
2008- Setting: `preview_tabs`
2009- Default:
2010
2011```json
2012"preview_tabs": {
2013 "enabled": true,
2014 "enable_preview_from_file_finder": false,
2015 "enable_preview_from_code_navigation": false,
2016}
2017```
2018
2019### Enable preview from file finder
2020
2021- Description: Determines whether to open files in preview mode when selected from the file finder.
2022- Setting: `enable_preview_from_file_finder`
2023- Default: `false`
2024
2025**Options**
2026
2027`boolean` values
2028
2029### Enable preview from code navigation
2030
2031- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2032- Setting: `enable_preview_from_code_navigation`
2033- Default: `false`
2034
2035**Options**
2036
2037`boolean` values
2038
2039## File Finder
2040
2041### File Icons
2042
2043- Description: Whether to show file icons in the file finder.
2044- Setting: `file_icons`
2045- Default: `true`
2046
2047### Modal Max Width
2048
2049- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2050- Setting: `modal_max_width`
2051- Default: `small`
2052
2053### Skip Focus For Active In Search
2054
2055- Description: Determines whether the file finder should skip focus for the active file in search results.
2056- Setting: `skip_focus_for_active_in_search`
2057- Default: `true`
2058
2059## Preferred Line Length
2060
2061- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2062- Setting: `preferred_line_length`
2063- Default: `80`
2064
2065**Options**
2066
2067`integer` values
2068
2069## Projects Online By Default
2070
2071- Description: Whether or not to show the online projects view by default.
2072- Setting: `projects_online_by_default`
2073- Default: `true`
2074
2075**Options**
2076
2077`boolean` values
2078
2079## Remove Trailing Whitespace On Save
2080
2081- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2082- Setting: `remove_trailing_whitespace_on_save`
2083- Default: `true`
2084
2085**Options**
2086
2087`boolean` values
2088
2089## Search
2090
2091- Description: Search options to enable by default when opening new project and buffer searches.
2092- Setting: `search`
2093- Default:
2094
2095```json
2096"search": {
2097 "whole_word": false,
2098 "case_sensitive": false,
2099 "include_ignored": false,
2100 "regex": false
2101},
2102```
2103
2104## Seed Search Query From Cursor
2105
2106- Description: When to populate a new search's query based on the text under the cursor.
2107- Setting: `seed_search_query_from_cursor`
2108- Default: `always`
2109
2110**Options**
2111
21121. `always` always populate the search query with the word under the cursor
21132. `selection` only populate the search query when there is text selected
21143. `never` never populate the search query
2115
2116## Use Smartcase Search
2117
2118- 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. \
2119 This applies to both in-file searches and project-wide searches.
2120- Setting: `use_smartcase_search`
2121- Default: `false`
2122
2123**Options**
2124
2125`boolean` values
2126
2127Examples:
2128
2129- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2130- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2131
2132## Show Call Status Icon
2133
2134- Description: Whether or not to show the call status icon in the status bar.
2135- Setting: `show_call_status_icon`
2136- Default: `true`
2137
2138**Options**
2139
2140`boolean` values
2141
2142## Completions
2143
2144- Description: Controls how completions are processed for this language.
2145- Setting: `completions`
2146- Default:
2147
2148```json
2149{
2150 "completions": {
2151 "words": "fallback",
2152 "lsp": true,
2153 "lsp_fetch_timeout_ms": 0,
2154 "lsp_insert_mode": "replace_suffix"
2155 }
2156}
2157```
2158
2159### Words
2160
2161- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2162- Setting: `words`
2163- Default: `fallback`
2164
2165**Options**
2166
21671. `enabled` - Always fetch document's words for completions along with LSP completions
21682. `fallback` - Only if LSP response errors or times out, use document's words to show completions
21693. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2170
2171### LSP
2172
2173- Description: Whether to fetch LSP completions or not.
2174- Setting: `lsp`
2175- Default: `true`
2176
2177**Options**
2178
2179`boolean` values
2180
2181### LSP Fetch Timeout (ms)
2182
2183- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2184- Setting: `lsp_fetch_timeout_ms`
2185- Default: `0`
2186
2187**Options**
2188
2189`integer` values representing milliseconds
2190
2191### LSP Insert Mode
2192
2193- Description: Controls what range to replace when accepting LSP completions.
2194- Setting: `lsp_insert_mode`
2195- Default: `replace_suffix`
2196
2197**Options**
2198
21991. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
22002. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
22013. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
22024. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2203
2204## Show Completions On Input
2205
2206- Description: Whether or not to show completions as you type.
2207- Setting: `show_completions_on_input`
2208- Default: `true`
2209
2210**Options**
2211
2212`boolean` values
2213
2214## Show Completion Documentation
2215
2216- Description: Whether to display inline and alongside documentation for items in the completions menu.
2217- Setting: `show_completion_documentation`
2218- Default: `true`
2219
2220**Options**
2221
2222`boolean` values
2223
2224## Show Edit Predictions
2225
2226- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2227- Setting: `show_edit_predictions`
2228- Default: `true`
2229
2230**Options**
2231
2232`boolean` values
2233
2234## Show Whitespaces
2235
2236- Description: Whether or not to render whitespace characters in the editor.
2237- Setting: `show_whitespaces`
2238- Default: `selection`
2239
2240**Options**
2241
22421. `all`
22432. `selection`
22443. `none`
22454. `boundary`
2246
2247## Soft Wrap
2248
2249- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2250- Setting: `soft_wrap`
2251- Default: `none`
2252
2253**Options**
2254
22551. `none` to avoid wrapping generally, unless the line is too long
22562. `prefer_line` (deprecated, same as `none`)
22573. `editor_width` to wrap lines that overflow the editor width
22584. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
22595. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2260
2261## Wrap Guides (Vertical Rulers)
2262
2263- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2264- Setting: `wrap_guides`
2265- Default: []
2266
2267**Options**
2268
2269List of `integer` column numbers
2270
2271## Tab Size
2272
2273- Description: The number of spaces to use for each tab character.
2274- Setting: `tab_size`
2275- Default: `4`
2276
2277**Options**
2278
2279`integer` values
2280
2281## Telemetry
2282
2283- Description: Control what info is collected by Zed.
2284- Setting: `telemetry`
2285- Default:
2286
2287```json
2288"telemetry": {
2289 "diagnostics": true,
2290 "metrics": true
2291},
2292```
2293
2294**Options**
2295
2296### Diagnostics
2297
2298- Description: Setting for sending debug-related data, such as crash reports.
2299- Setting: `diagnostics`
2300- Default: `true`
2301
2302**Options**
2303
2304`boolean` values
2305
2306### Metrics
2307
2308- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2309- Setting: `metrics`
2310- Default: `true`
2311
2312**Options**
2313
2314`boolean` values
2315
2316## Terminal
2317
2318- Description: Configuration for the terminal.
2319- Setting: `terminal`
2320- Default:
2321
2322```json
2323{
2324 "terminal": {
2325 "alternate_scroll": "off",
2326 "blinking": "terminal_controlled",
2327 "copy_on_select": false,
2328 "dock": "bottom",
2329 "default_width": 640,
2330 "default_height": 320,
2331 "detect_venv": {
2332 "on": {
2333 "directories": [".env", "env", ".venv", "venv"],
2334 "activate_script": "default"
2335 }
2336 },
2337 "env": {},
2338 "font_family": null,
2339 "font_features": null,
2340 "font_size": null,
2341 "line_height": "comfortable",
2342 "option_as_meta": false,
2343 "button": true,
2344 "shell": "system",
2345 "toolbar": {
2346 "breadcrumbs": true
2347 },
2348 "working_directory": "current_project_directory",
2349 "scrollbar": {
2350 "show": null
2351 }
2352 }
2353}
2354```
2355
2356### Terminal: Dock
2357
2358- Description: Control the position of the dock
2359- Setting: `dock`
2360- Default: `bottom`
2361
2362**Options**
2363
2364`"bottom"`, `"left"` or `"right"`
2365
2366### Terminal: Alternate Scroll
2367
2368- 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.
2369- Setting: `alternate_scroll`
2370- Default: `off`
2371
2372**Options**
2373
23741. Default alternate scroll mode to off
2375
2376```json
2377{
2378 "terminal": {
2379 "alternate_scroll": "off"
2380 }
2381}
2382```
2383
23842. Default alternate scroll mode to on
2385
2386```json
2387{
2388 "terminal": {
2389 "alternate_scroll": "on"
2390 }
2391}
2392```
2393
2394### Terminal: Blinking
2395
2396- Description: Set the cursor blinking behavior in the terminal
2397- Setting: `blinking`
2398- Default: `terminal_controlled`
2399
2400**Options**
2401
24021. Never blink the cursor, ignore the terminal mode
2403
2404```json
2405{
2406 "terminal": {
2407 "blinking": "off"
2408 }
2409}
2410```
2411
24122. Default the cursor blink to off, but allow the terminal to turn blinking on
2413
2414```json
2415{
2416 "terminal": {
2417 "blinking": "terminal_controlled"
2418 }
2419}
2420```
2421
24223. Always blink the cursor, ignore the terminal mode
2423
2424```json
2425{
2426 "terminal": {
2427 "blinking": "on"
2428 }
2429}
2430```
2431
2432### Terminal: Copy On Select
2433
2434- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2435- Setting: `copy_on_select`
2436- Default: `false`
2437
2438**Options**
2439
2440`boolean` values
2441
2442**Example**
2443
2444```json
2445{
2446 "terminal": {
2447 "copy_on_select": true
2448 }
2449}
2450```
2451
2452### Terminal: Env
2453
2454- 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
2455- Setting: `env`
2456- Default: `{}`
2457
2458**Example**
2459
2460```json
2461{
2462 "terminal": {
2463 "env": {
2464 "ZED": "1",
2465 "KEY": "value1:value2"
2466 }
2467 }
2468}
2469```
2470
2471### Terminal: Font Size
2472
2473- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2474- Setting: `font_size`
2475- Default: `null`
2476
2477**Options**
2478
2479`integer` values
2480
2481```json
2482{
2483 "terminal": {
2484 "font_size": 15
2485 }
2486}
2487```
2488
2489### Terminal: Font Family
2490
2491- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
2492- Setting: `font_family`
2493- Default: `null`
2494
2495**Options**
2496
2497The name of any font family installed on the user's system
2498
2499```json
2500{
2501 "terminal": {
2502 "font_family": "Berkeley Mono"
2503 }
2504}
2505```
2506
2507### Terminal: Font Features
2508
2509- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
2510- Setting: `font_features`
2511- Default: `null`
2512- Platform: macOS and Windows.
2513
2514**Options**
2515
2516See Buffer Font Features
2517
2518```json
2519{
2520 "terminal": {
2521 "font_features": {
2522 "calt": false
2523 // See Buffer Font Features for more features
2524 }
2525 }
2526}
2527```
2528
2529### Terminal: Line Height
2530
2531- Description: Set the terminal's line height.
2532- Setting: `line_height`
2533- Default: `comfortable`
2534
2535**Options**
2536
25371. Use a line height that's `comfortable` for reading, 1.618. (default)
2538
2539```json
2540{
2541 "terminal": {
2542 "line_height": "comfortable"
2543 }
2544}
2545```
2546
25472. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
2548
2549```json
2550{
2551 "terminal": {
2552 "line_height": "standard"
2553 }
2554}
2555```
2556
25573. Use a custom line height.
2558
2559```json
2560{
2561 "terminal": {
2562 "line_height": {
2563 "custom": 2
2564 }
2565 }
2566}
2567```
2568
2569### Terminal: Option As Meta
2570
2571- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
2572- Setting: `option_as_meta`
2573- Default: `false`
2574
2575**Options**
2576
2577`boolean` values
2578
2579```json
2580{
2581 "terminal": {
2582 "option_as_meta": true
2583 }
2584}
2585```
2586
2587### Terminal: Shell
2588
2589- Description: What shell to use when launching the terminal.
2590- Setting: `shell`
2591- Default: `system`
2592
2593**Options**
2594
25951. Use the system's default terminal configuration (usually the `/etc/passwd` file).
2596
2597```json
2598{
2599 "terminal": {
2600 "shell": "system"
2601 }
2602}
2603```
2604
26052. A program to launch:
2606
2607```json
2608{
2609 "terminal": {
2610 "shell": {
2611 "program": "sh"
2612 }
2613 }
2614}
2615```
2616
26173. A program with arguments:
2618
2619```json
2620{
2621 "terminal": {
2622 "shell": {
2623 "with_arguments": {
2624 "program": "/bin/bash",
2625 "args": ["--login"]
2626 }
2627 }
2628 }
2629}
2630```
2631
2632## Terminal: Detect Virtual Environments {#terminal-detect_venv}
2633
2634- 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.
2635- Setting: `detect_venv`
2636- Default:
2637
2638```json
2639{
2640 "terminal": {
2641 "detect_venv": {
2642 "on": {
2643 // Default directories to search for virtual environments, relative
2644 // to the current working directory. We recommend overriding this
2645 // in your project's settings, rather than globally.
2646 "directories": [".env", "env", ".venv", "venv"],
2647 // Can also be `csh`, `fish`, and `nushell`
2648 "activate_script": "default"
2649 }
2650 }
2651 }
2652}
2653```
2654
2655Disable with:
2656
2657```json
2658{
2659 "terminal": {
2660 "detect_venv": "off"
2661 }
2662}
2663```
2664
2665## Terminal: Toolbar
2666
2667- Description: Whether or not to show various elements in the terminal toolbar.
2668- Setting: `toolbar`
2669- Default:
2670
2671```json
2672{
2673 "terminal": {
2674 "toolbar": {
2675 "breadcrumbs": true
2676 }
2677 }
2678}
2679```
2680
2681**Options**
2682
2683At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
2684
2685If the terminal title is empty, the breadcrumbs won't be shown.
2686
2687The shell running in the terminal needs to be configured to emit the title.
2688
2689Example command to set the title: `echo -e "\e]2;New Title\007";`
2690
2691### Terminal: Button
2692
2693- Description: Control to show or hide the terminal button in the status bar
2694- Setting: `button`
2695- Default: `true`
2696
2697**Options**
2698
2699`boolean` values
2700
2701```json
2702{
2703 "terminal": {
2704 "button": false
2705 }
2706}
2707```
2708
2709### Terminal: Working Directory
2710
2711- Description: What working directory to use when launching the terminal.
2712- Setting: `working_directory`
2713- Default: `"current_project_directory"`
2714
2715**Options**
2716
27171. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
2718
2719```json
2720{
2721 "terminal": {
2722 "working_directory": "current_project_directory"
2723 }
2724}
2725```
2726
27272. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
2728
2729```json
2730{
2731 "terminal": {
2732 "working_directory": "first_project_directory"
2733 }
2734}
2735```
2736
27373. Always use this platform's home directory (if we can find it)
2738
2739```json
2740{
2741 "terminal": {
2742 "working_directory": "always_home"
2743 }
2744}
2745```
2746
27474. 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.
2748
2749```json
2750{
2751 "terminal": {
2752 "working_directory": {
2753 "always": {
2754 "directory": "~/zed/projects/"
2755 }
2756 }
2757 }
2758}
2759```
2760
2761## Theme
2762
2763- 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.
2764- Setting: `theme`
2765- Default: `One Dark`
2766
2767### Theme Object
2768
2769- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2770- Setting: `theme`
2771- Default:
2772
2773```json
2774"theme": {
2775 "mode": "system",
2776 "dark": "One Dark",
2777 "light": "One Light"
2778},
2779```
2780
2781### Mode
2782
2783- Description: Specify theme mode.
2784- Setting: `mode`
2785- Default: `system`
2786
2787**Options**
2788
27891. Set the theme to dark mode
2790
2791```json
2792{
2793 "mode": "dark"
2794}
2795```
2796
27972. Set the theme to light mode
2798
2799```json
2800{
2801 "mode": "light"
2802}
2803```
2804
28053. Set the theme to system mode
2806
2807```json
2808{
2809 "mode": "system"
2810}
2811```
2812
2813### Dark
2814
2815- Description: The name of the dark Zed theme to use for the UI.
2816- Setting: `dark`
2817- Default: `One Dark`
2818
2819**Options**
2820
2821Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2822
2823### Light
2824
2825- Description: The name of the light Zed theme to use for the UI.
2826- Setting: `light`
2827- Default: `One Light`
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## Vim
2834
2835- Description: Whether or not to enable vim mode (work in progress).
2836- Setting: `vim_mode`
2837- Default: `false`
2838
2839## Project Panel
2840
2841- Description: Customize project panel
2842- Setting: `project_panel`
2843- Default:
2844
2845```json
2846{
2847 "project_panel": {
2848 "button": true,
2849 "default_width": 240,
2850 "dock": "left",
2851 "entry_spacing": "comfortable",
2852 "file_icons": true,
2853 "folder_icons": true,
2854 "git_status": true,
2855 "indent_size": 20,
2856 "auto_reveal_entries": true,
2857 "auto_fold_dirs": true,
2858 "scrollbar": {
2859 "show": null
2860 },
2861 "show_diagnostics": "all",
2862 "indent_guides": {
2863 "show": "always"
2864 }
2865 }
2866}
2867```
2868
2869### Dock
2870
2871- Description: Control the position of the dock
2872- Setting: `dock`
2873- Default: `left`
2874
2875**Options**
2876
28771. Default dock position to left
2878
2879```json
2880{
2881 "dock": "left"
2882}
2883```
2884
28852. Default dock position to right
2886
2887```json
2888{
2889 "dock": "right"
2890}
2891```
2892
2893### Entry Spacing
2894
2895- Description: Spacing between worktree entries
2896- Setting: `entry_spacing`
2897- Default: `comfortable`
2898
2899**Options**
2900
29011. Comfortable entry spacing
2902
2903```json
2904{
2905 "entry_spacing": "comfortable"
2906}
2907```
2908
29092. Standard entry spacing
2910
2911```json
2912{
2913 "entry_spacing": "standard"
2914}
2915```
2916
2917### Git Status
2918
2919- Description: Indicates newly created and updated files
2920- Setting: `git_status`
2921- Default: `true`
2922
2923**Options**
2924
29251. Default enable git status
2926
2927```json
2928{
2929 "git_status": true
2930}
2931```
2932
29332. Default disable git status
2934
2935```json
2936{
2937 "git_status": false
2938}
2939```
2940
2941### Default Width
2942
2943- Description: Customize default width taken by project panel
2944- Setting: `default_width`
2945- Default: `240`
2946
2947**Options**
2948
2949`float` values
2950
2951### Auto Reveal Entries
2952
2953- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2954- Setting: `auto_reveal_entries`
2955- Default: `true`
2956
2957**Options**
2958
29591. Enable auto reveal entries
2960
2961```json
2962{
2963 "auto_reveal_entries": true
2964}
2965```
2966
29672. Disable auto reveal entries
2968
2969```json
2970{
2971 "auto_reveal_entries": false
2972}
2973```
2974
2975### Auto Fold Dirs
2976
2977- Description: Whether to fold directories automatically when directory has only one directory inside.
2978- Setting: `auto_fold_dirs`
2979- Default: `true`
2980
2981**Options**
2982
29831. Enable auto fold dirs
2984
2985```json
2986{
2987 "auto_fold_dirs": true
2988}
2989```
2990
29912. Disable auto fold dirs
2992
2993```json
2994{
2995 "auto_fold_dirs": false
2996}
2997```
2998
2999### Indent Size
3000
3001- Description: Amount of indentation (in pixels) for nested items.
3002- Setting: `indent_size`
3003- Default: `20`
3004
3005### Indent Guides: Show
3006
3007- Description: Whether to show indent guides in the project panel.
3008- Setting: `indent_guides`
3009- Default:
3010
3011```json
3012"indent_guides": {
3013 "show": "always"
3014}
3015```
3016
3017**Options**
3018
30191. Show indent guides in the project panel
3020
3021```json
3022{
3023 "indent_guides": {
3024 "show": "always"
3025 }
3026}
3027```
3028
30292. Hide indent guides in the project panel
3030
3031```json
3032{
3033 "indent_guides": {
3034 "show": "never"
3035 }
3036}
3037```
3038
3039### Scrollbar: Show
3040
3041- 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.
3042- Setting: `scrollbar`
3043- Default:
3044
3045```json
3046"scrollbar": {
3047 "show": null
3048}
3049```
3050
3051**Options**
3052
30531. Show scrollbar in the project panel
3054
3055```json
3056{
3057 "scrollbar": {
3058 "show": "always"
3059 }
3060}
3061```
3062
30632. Hide scrollbar in the project panel
3064
3065```json
3066{
3067 "scrollbar": {
3068 "show": "never"
3069 }
3070}
3071```
3072
3073## Agent
3074
3075- Description: Customize agent behavior
3076- Setting: `agent`
3077- Default:
3078
3079```json
3080"agent": {
3081 "version": "2",
3082 "enabled": true,
3083 "button": true,
3084 "dock": "right",
3085 "default_width": 640,
3086 "default_height": 320,
3087 "default_model": {
3088 "provider": "zed.dev",
3089 "model": "claude-3-7-sonnet-latest"
3090 },
3091 "editor_model": {
3092 "provider": "zed.dev",
3093 "model": "claude-3-7-sonnet-latest"
3094 },
3095 "single_file_review": true,
3096}
3097```
3098
3099## Outline Panel
3100
3101- Description: Customize outline Panel
3102- Setting: `outline_panel`
3103- Default:
3104
3105```json
3106"outline_panel": {
3107 "button": true,
3108 "default_width": 300,
3109 "dock": "left",
3110 "file_icons": true,
3111 "folder_icons": true,
3112 "git_status": true,
3113 "indent_size": 20,
3114 "auto_reveal_entries": true,
3115 "auto_fold_dirs": true,
3116 "indent_guides": {
3117 "show": "always"
3118 },
3119 "scrollbar": {
3120 "show": null
3121 }
3122}
3123```
3124
3125## Calls
3126
3127- Description: Customize behavior when participating in a call
3128- Setting: `calls`
3129- Default:
3130
3131```json
3132"calls": {
3133 // Join calls with the microphone live by default
3134 "mute_on_join": false,
3135 // Share your project when you are the first to join a channel
3136 "share_on_join": false
3137},
3138```
3139
3140## Unnecessary Code Fade
3141
3142- Description: How much to fade out unused code.
3143- Setting: `unnecessary_code_fade`
3144- Default: `0.3`
3145
3146**Options**
3147
3148Float values between `0.0` and `0.9`, where:
3149
3150- `0.0` means no fading (unused code looks the same as used code)
3151- `0.9` means maximum fading (unused code is very faint but still visible)
3152
3153**Example**
3154
3155```json
3156{
3157 "unnecessary_code_fade": 0.5
3158}
3159```
3160
3161## UI Font Family
3162
3163- Description: The name of the font to use for text in the UI.
3164- Setting: `ui_font_family`
3165- Default: `Zed Plex Sans`
3166
3167**Options**
3168
3169The name of any font family installed on the system.
3170
3171## UI Font Features
3172
3173- Description: The OpenType features to enable for text in the UI.
3174- Setting: `ui_font_features`
3175- Default:
3176
3177```json
3178"ui_font_features": {
3179 "calt": false
3180}
3181```
3182
3183- Platform: macOS and Windows.
3184
3185**Options**
3186
3187Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3188
3189For example, to disable font ligatures, add the following to your settings:
3190
3191```json
3192{
3193 "ui_font_features": {
3194 "calt": false
3195 }
3196}
3197```
3198
3199You can also set other OpenType features, like setting `cv01` to `7`:
3200
3201```json
3202{
3203 "ui_font_features": {
3204 "cv01": 7
3205 }
3206}
3207```
3208
3209## UI Font Fallbacks
3210
3211- Description: The font fallbacks to use for text in the UI.
3212- Setting: `ui_font_fallbacks`
3213- Default: `null`
3214- Platform: macOS and Windows.
3215
3216**Options**
3217
3218For example, to use `Nerd Font` as a fallback, add the following to your settings:
3219
3220```json
3221{
3222 "ui_font_fallbacks": ["Nerd Font"]
3223}
3224```
3225
3226## UI Font Size
3227
3228- Description: The default font size for text in the UI.
3229- Setting: `ui_font_size`
3230- Default: `16`
3231
3232**Options**
3233
3234`integer` values from `6` to `100` pixels (inclusive)
3235
3236## UI Font Weight
3237
3238- Description: The default font weight for text in the UI.
3239- Setting: `ui_font_weight`
3240- Default: `400`
3241
3242**Options**
3243
3244`integer` values between `100` and `900`
3245
3246## An example configuration:
3247
3248```json
3249// ~/.config/zed/settings.json
3250{
3251 "theme": "cave-light",
3252 "tab_size": 2,
3253 "preferred_line_length": 80,
3254 "soft_wrap": "none",
3255
3256 "buffer_font_size": 18,
3257 "buffer_font_family": "Zed Plex Mono",
3258
3259 "autosave": "on_focus_change",
3260 "format_on_save": "off",
3261 "vim_mode": false,
3262 "projects_online_by_default": true,
3263 "terminal": {
3264 "font_family": "FiraCode Nerd Font Mono",
3265 "blinking": "off"
3266 },
3267 "languages": {
3268 "C": {
3269 "format_on_save": "language_server",
3270 "preferred_line_length": 64,
3271 "soft_wrap": "preferred_line_length"
3272 }
3273 }
3274}
3275```