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},
1039```
1040
1041**Options**
1042
1043Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1044
1045## Enable Language Server
1046
1047- Description: Whether or not to use language servers to provide code intelligence.
1048- Setting: `enable_language_server`
1049- Default: `true`
1050
1051**Options**
1052
1053`boolean` values
1054
1055## Ensure Final Newline On Save
1056
1057- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1058- Setting: `ensure_final_newline_on_save`
1059- Default: `true`
1060
1061**Options**
1062
1063`boolean` values
1064
1065## LSP
1066
1067- Description: Configuration for language servers.
1068- Setting: `lsp`
1069- Default: `null`
1070
1071**Options**
1072
1073The following settings can be overridden for specific language servers:
1074
1075- `initialization_options`
1076- `settings`
1077
1078To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1079
1080Some 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.
1081
1082For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1083
1084```json
1085"lsp": {
1086 "rust-analyzer": {
1087 "initialization_options": {
1088 "check": {
1089 "command": "clippy" // rust-analyzer.check.command (default: "check")
1090 }
1091 }
1092 }
1093}
1094```
1095
1096While other options may be changed at a runtime and should be placed under `settings`:
1097
1098```json
1099"lsp": {
1100 "yaml-language-server": {
1101 "settings": {
1102 "yaml": {
1103 "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1104 }
1105 }
1106 }
1107}
1108```
1109
1110## LSP Highlight Debounce
1111
1112- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1113- Setting: `lsp_highlight_debounce`
1114- Default: `75`
1115
1116**Options**
1117
1118`integer` values representing milliseconds
1119
1120## Format On Save
1121
1122- Description: Whether or not to perform a buffer format before saving.
1123- Setting: `format_on_save`
1124- Default: `on`
1125
1126**Options**
1127
11281. `on`, enables format on save obeying `formatter` setting:
1129
1130```json
1131{
1132 "format_on_save": "on"
1133}
1134```
1135
11362. `off`, disables format on save:
1137
1138```json
1139{
1140 "format_on_save": "off"
1141}
1142```
1143
1144## Formatter
1145
1146- Description: How to perform a buffer format.
1147- Setting: `formatter`
1148- Default: `auto`
1149
1150**Options**
1151
11521. To use the current language server, use `"language_server"`:
1153
1154```json
1155{
1156 "formatter": "language_server"
1157}
1158```
1159
11602. 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):
1161
1162```json
1163{
1164 "formatter": {
1165 "external": {
1166 "command": "sed",
1167 "arguments": ["-e", "s/ *$//"]
1168 }
1169 }
1170}
1171```
1172
11733. 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.
1174
1175WARNING: `{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.
1176
1177```json
1178 "formatter": {
1179 "external": {
1180 "command": "prettier",
1181 "arguments": ["--stdin-filepath", "{buffer_path}"]
1182 }
1183 }
1184```
1185
11864. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1187
1188```json
1189{
1190 "formatter": {
1191 "code_actions": {
1192 // Use ESLint's --fix:
1193 "source.fixAll.eslint": true,
1194 // Organize imports on save:
1195 "source.organizeImports": true
1196 }
1197 }
1198}
1199```
1200
12015. Or to use multiple formatters consecutively, use an array of formatters:
1202
1203```json
1204{
1205 "formatter": [
1206 { "language_server": { "name": "rust-analyzer" } },
1207 {
1208 "external": {
1209 "command": "sed",
1210 "arguments": ["-e", "s/ *$//"]
1211 }
1212 }
1213 ]
1214}
1215```
1216
1217Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1218If any of the formatters fails, the subsequent ones will still be executed.
1219
1220## Code Actions On Format
1221
1222- Description: The code actions to perform with the primary language server when formatting the buffer.
1223- Setting: `code_actions_on_format`
1224- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
1225
1226**Examples**
1227
1228<!--
1229TBD: Add Python Ruff source.organizeImports example
1230-->
1231
12321. Organize imports on format in TypeScript and TSX buffers:
1233
1234```json
1235{
1236 "languages": {
1237 "TypeScript": {
1238 "code_actions_on_format": {
1239 "source.organizeImports": true
1240 }
1241 },
1242 "TSX": {
1243 "code_actions_on_format": {
1244 "source.organizeImports": true
1245 }
1246 }
1247 }
1248}
1249```
1250
12512. Run ESLint `fixAll` code action when formatting:
1252
1253```json
1254{
1255 "languages": {
1256 "JavaScript": {
1257 "code_actions_on_format": {
1258 "source.fixAll.eslint": true
1259 }
1260 }
1261 }
1262}
1263```
1264
12653. Run only a single ESLint rule when using `fixAll`:
1266
1267```json
1268{
1269 "languages": {
1270 "JavaScript": {
1271 "code_actions_on_format": {
1272 "source.fixAll.eslint": true
1273 }
1274 }
1275 },
1276 "lsp": {
1277 "eslint": {
1278 "settings": {
1279 "codeActionOnSave": {
1280 "rules": ["import/order"]
1281 }
1282 }
1283 }
1284 }
1285}
1286```
1287
1288## Auto close
1289
1290- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1291- Setting: `use_autoclose`
1292- Default: `true`
1293
1294**Options**
1295
1296`boolean` values
1297
1298## Always Treat Brackets As Autoclosed
1299
1300- Description: Controls how the editor handles the autoclosed characters.
1301- Setting: `always_treat_brackets_as_autoclosed`
1302- Default: `false`
1303
1304**Options**
1305
1306`boolean` values
1307
1308**Example**
1309
1310If the setting is set to `true`:
1311
13121. Enter in the editor: `)))`
13132. Move the cursor to the start: `^)))`
13143. Enter again: `)))`
1315
1316The result is still `)))` and not `))))))`, which is what it would be by default.
1317
1318## File Scan Exclusions
1319
1320- Setting: `file_scan_exclusions`
1321- 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`.
1322- Default:
1323
1324```json
1325"file_scan_exclusions": [
1326 "**/.git",
1327 "**/.svn",
1328 "**/.hg",
1329 "**/.jj",
1330 "**/CVS",
1331 "**/.DS_Store",
1332 "**/Thumbs.db",
1333 "**/.classpath",
1334 "**/.settings"
1335],
1336```
1337
1338Note, 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.
1339
1340## File Scan Inclusions
1341
1342- Setting: `file_scan_inclusions`
1343- 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.
1344- Default:
1345
1346```json
1347"file_scan_inclusions": [".env*"],
1348```
1349
1350## File Types
1351
1352- Setting: `file_types`
1353- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1354- Default:
1355
1356```json
1357"file_types": {
1358 "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1359 "Shell Script": [".env.*"]
1360}
1361```
1362
1363**Examples**
1364
1365To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1366
1367```json
1368{
1369 "file_types": {
1370 "C++": ["c"],
1371 "TOML": ["MyLockFile"],
1372 "Dockerfile": ["Dockerfile*"]
1373 }
1374}
1375```
1376
1377## Diagnostics
1378
1379- Description: Configuration for diagnostics-related features.
1380- Setting: `diagnostics`
1381- Default:
1382
1383```json
1384{
1385 "diagnostics": {
1386 "include_warnings": true,
1387 "inline": {
1388 "enabled": false
1389 },
1390 "update_with_cursor": false,
1391 "primary_only": false,
1392 "use_rendered": false
1393 }
1394}
1395```
1396
1397### Inline Diagnostics
1398
1399- Description: Whether or not to show diagnostics information inline.
1400- Setting: `inline`
1401- Default:
1402
1403```json
1404{
1405 "diagnostics": {
1406 "inline": {
1407 "enabled": false,
1408 "update_debounce_ms": 150,
1409 "padding": 4,
1410 "min_column": 0,
1411 "max_severity": null
1412 }
1413 }
1414}
1415```
1416
1417**Options**
1418
14191. Enable inline diagnostics.
1420
1421```json
1422{
1423 "diagnostics": {
1424 "inline": {
1425 "enabled": true
1426 }
1427 }
1428}
1429```
1430
14312. Delay diagnostic updates until some time after the last diagnostic update.
1432
1433```json
1434{
1435 "diagnostics": {
1436 "inline": {
1437 "enabled": true,
1438 "update_debounce_ms": 150
1439 }
1440 }
1441}
1442```
1443
14443. Set padding between the end of the source line and the start of the diagnostic.
1445
1446```json
1447{
1448 "diagnostics": {
1449 "inline": {
1450 "enabled": true,
1451 "padding": 4
1452 }
1453 }
1454}
1455```
1456
14574. Horizontally align inline diagnostics at the given column.
1458
1459```json
1460{
1461 "diagnostics": {
1462 "inline": {
1463 "enabled": true,
1464 "min_column": 80
1465 }
1466 }
1467}
1468```
1469
14705. Show only warning and error diagnostics.
1471
1472```json
1473{
1474 "diagnostics": {
1475 "inline": {
1476 "enabled": true,
1477 "max_severity": "warning"
1478 }
1479 }
1480}
1481```
1482
1483## Git
1484
1485- Description: Configuration for git-related features.
1486- Setting: `git`
1487- Default:
1488
1489```json
1490{
1491 "git": {
1492 "git_gutter": "tracked_files",
1493 "inline_blame": {
1494 "enabled": true
1495 },
1496 "hunk_style": "staged_hollow"
1497 }
1498}
1499```
1500
1501### Git Gutter
1502
1503- Description: Whether or not to show the git gutter.
1504- Setting: `git_gutter`
1505- Default: `tracked_files`
1506
1507**Options**
1508
15091. Show git gutter in tracked files
1510
1511```json
1512{
1513 "git": {
1514 "git_gutter": "tracked_files"
1515 }
1516}
1517```
1518
15192. Hide git gutter
1520
1521```json
1522{
1523 "git": {
1524 "git_gutter": "hide"
1525 }
1526}
1527```
1528
1529### Gutter Debounce
1530
1531- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1532- Setting: `gutter_debounce`
1533- Default: `null`
1534
1535**Options**
1536
1537`integer` values representing milliseconds
1538
1539Example:
1540
1541```json
1542{
1543 "git": {
1544 "gutter_debounce": 100
1545 }
1546}
1547```
1548
1549### Inline Git Blame
1550
1551- Description: Whether or not to show git blame information inline, on the currently focused line.
1552- Setting: `inline_blame`
1553- Default:
1554
1555```json
1556{
1557 "git": {
1558 "inline_blame": {
1559 "enabled": true
1560 }
1561 }
1562}
1563```
1564
1565### Hunk Style
1566
1567- Description: What styling we should use for the diff hunks.
1568- Setting: `hunk_style`
1569- Default:
1570
1571```json
1572{
1573 "git": {
1574 "hunk_style": "staged_hollow"
1575 }
1576}
1577```
1578
1579**Options**
1580
15811. Show the staged hunks faded out and with a border:
1582
1583```json
1584{
1585 "git": {
1586 "hunk_style": "staged_hollow"
1587 }
1588}
1589```
1590
15912. Show unstaged hunks faded out and with a border:
1592
1593```json
1594{
1595 "git": {
1596 "hunk_style": "unstaged_hollow"
1597 }
1598}
1599```
1600
1601**Options**
1602
16031. Disable inline git blame:
1604
1605```json
1606{
1607 "git": {
1608 "inline_blame": {
1609 "enabled": false
1610 }
1611 }
1612}
1613```
1614
16152. Only show inline git blame after a delay (that starts after cursor stops moving):
1616
1617```json
1618{
1619 "git": {
1620 "inline_blame": {
1621 "enabled": true,
1622 "delay_ms": 500
1623 }
1624 }
1625}
1626```
1627
16283. Show a commit summary next to the commit date and author:
1629
1630```json
1631{
1632 "git": {
1633 "inline_blame": {
1634 "enabled": true,
1635 "show_commit_summary": true
1636 }
1637 }
1638}
1639```
1640
16414. Use this as the minimum column at which to display inline blame information:
1642
1643```json
1644{
1645 "git": {
1646 "inline_blame": {
1647 "enabled": true,
1648 "min_column": 80
1649 }
1650 }
1651}
1652```
1653
1654## Indent Guides
1655
1656- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1657- Setting: `indent_guides`
1658- Default:
1659
1660```json
1661{
1662 "indent_guides": {
1663 "enabled": true,
1664 "line_width": 1,
1665 "active_line_width": 1,
1666 "coloring": "fixed",
1667 "background_coloring": "disabled"
1668 }
1669}
1670```
1671
1672**Options**
1673
16741. Disable indent guides
1675
1676```json
1677{
1678 "indent_guides": {
1679 "enabled": false
1680 }
1681}
1682```
1683
16842. Enable indent guides for a specific language.
1685
1686```json
1687{
1688 "languages": {
1689 "Python": {
1690 "indent_guides": {
1691 "enabled": true
1692 }
1693 }
1694 }
1695}
1696```
1697
16983. Enable indent aware coloring ("rainbow indentation").
1699 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.
1700
1701```json
1702{
1703 "indent_guides": {
1704 "enabled": true,
1705 "coloring": "indent_aware"
1706 }
1707}
1708```
1709
17104. Enable indent aware background coloring ("rainbow indentation").
1711 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.
1712
1713```json
1714{
1715 "indent_guides": {
1716 "enabled": true,
1717 "coloring": "indent_aware",
1718 "background_coloring": "indent_aware"
1719 }
1720}
1721```
1722
1723## Hard Tabs
1724
1725- Description: Whether to indent lines using tab characters or multiple spaces.
1726- Setting: `hard_tabs`
1727- Default: `false`
1728
1729**Options**
1730
1731`boolean` values
1732
1733## Hover Popover Enabled
1734
1735- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1736- Setting: `hover_popover_enabled`
1737- Default: `true`
1738
1739**Options**
1740
1741`boolean` values
1742
1743## Icon Theme
1744
1745- 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.
1746- Setting: `icon_theme`
1747- Default: `Zed (Default)`
1748
1749### Icon Theme Object
1750
1751- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1752- Setting: `icon_theme`
1753- Default:
1754
1755```json
1756"icon_theme": {
1757 "mode": "system",
1758 "dark": "Zed (Default)",
1759 "light": "Zed (Default)"
1760},
1761```
1762
1763### Mode
1764
1765- Description: Specify the icon theme mode.
1766- Setting: `mode`
1767- Default: `system`
1768
1769**Options**
1770
17711. Set the icon theme to dark mode
1772
1773```json
1774{
1775 "mode": "dark"
1776}
1777```
1778
17792. Set the icon theme to light mode
1780
1781```json
1782{
1783 "mode": "light"
1784}
1785```
1786
17873. Set the icon theme to system mode
1788
1789```json
1790{
1791 "mode": "system"
1792}
1793```
1794
1795### Dark
1796
1797- Description: The name of the dark icon theme.
1798- Setting: `dark`
1799- Default: `Zed (Default)`
1800
1801**Options**
1802
1803Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1804
1805### Light
1806
1807- Description: The name of the light icon theme.
1808- Setting: `light`
1809- Default: `Zed (Default)`
1810
1811**Options**
1812
1813Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1814
1815## Inlay hints
1816
1817- Description: Configuration for displaying extra text with hints in the editor.
1818- Setting: `inlay_hints`
1819- Default:
1820
1821```json
1822"inlay_hints": {
1823 "enabled": false,
1824 "show_type_hints": true,
1825 "show_parameter_hints": true,
1826 "show_other_hints": true,
1827 "show_background": false,
1828 "edit_debounce_ms": 700,
1829 "scroll_debounce_ms": 50,
1830 "toggle_on_modifiers_press": null
1831}
1832```
1833
1834**Options**
1835
1836Inlay hints querying consists of two parts: editor (client) and LSP server.
1837With 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.
1838At 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.
1839
1840The following languages have inlay hints preconfigured by Zed:
1841
1842- [Go](https://docs.zed.dev/languages/go)
1843- [Rust](https://docs.zed.dev/languages/rust)
1844- [Svelte](https://docs.zed.dev/languages/svelte)
1845- [Typescript](https://docs.zed.dev/languages/typescript)
1846
1847Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1848
1849Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1850Settings-related hint updates are not debounced.
1851
1852All possible config values for `toggle_on_modifiers_press` are:
1853
1854```json
1855"inlay_hints": {
1856 "toggle_on_modifiers_press": {
1857 "control": true,
1858 "shift": true,
1859 "alt": true,
1860 "platform": true,
1861 "function": true
1862 }
1863}
1864```
1865
1866Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
1867
1868## Journal
1869
1870- Description: Configuration for the journal.
1871- Setting: `journal`
1872- Default:
1873
1874```json
1875"journal": {
1876 "path": "~",
1877 "hour_format": "hour12"
1878}
1879```
1880
1881### Path
1882
1883- Description: The path of the directory where journal entries are stored.
1884- Setting: `path`
1885- Default: `~`
1886
1887**Options**
1888
1889`string` values
1890
1891### Hour Format
1892
1893- Description: The format to use for displaying hours in the journal.
1894- Setting: `hour_format`
1895- Default: `hour12`
1896
1897**Options**
1898
18991. 12-hour format:
1900
1901```json
1902{
1903 "hour_format": "hour12"
1904}
1905```
1906
19072. 24-hour format:
1908
1909```json
1910{
1911 "hour_format": "hour24"
1912}
1913```
1914
1915## Languages
1916
1917- Description: Configuration for specific languages.
1918- Setting: `languages`
1919- Default: `null`
1920
1921**Options**
1922
1923To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1924
1925```json
1926"languages": {
1927 "C": {
1928 "format_on_save": "off",
1929 "preferred_line_length": 64,
1930 "soft_wrap": "preferred_line_length"
1931 },
1932 "JSON": {
1933 "tab_size": 4
1934 }
1935}
1936```
1937
1938The following settings can be overridden for each specific language:
1939
1940- [`enable_language_server`](#enable-language-server)
1941- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
1942- [`format_on_save`](#format-on-save)
1943- [`formatter`](#formatter)
1944- [`hard_tabs`](#hard-tabs)
1945- [`preferred_line_length`](#preferred-line-length)
1946- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
1947- [`show_edit_predictions`](#show-edit-predictions)
1948- [`show_whitespaces`](#show-whitespaces)
1949- [`soft_wrap`](#soft-wrap)
1950- [`tab_size`](#tab-size)
1951- [`use_autoclose`](#use-autoclose)
1952- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
1953
1954These values take in the same options as the root-level settings with the same name.
1955
1956## Network Proxy
1957
1958- Description: Configure a network proxy for Zed.
1959- Setting: `proxy`
1960- Default: `null`
1961
1962**Options**
1963
1964The proxy setting must contain a URL to the proxy.
1965
1966The following URI schemes are supported:
1967
1968- `http`
1969- `https`
1970- `socks4` - SOCKS4 proxy with local DNS
1971- `socks4a` - SOCKS4 proxy with remote DNS
1972- `socks5` - SOCKS5 proxy with local DNS
1973- `socks5h` - SOCKS5 proxy with remote DNS
1974
1975`http` will be used when no scheme is specified.
1976
1977By 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`.
1978
1979For example, to set an `http` proxy, add the following to your settings:
1980
1981```json
1982{
1983 "proxy": "http://127.0.0.1:10809"
1984}
1985```
1986
1987Or to set a `socks5` proxy:
1988
1989```json
1990{
1991 "proxy": "socks5h://localhost:10808"
1992}
1993```
1994
1995## Preview tabs
1996
1997- Description:
1998 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. \
1999 There are several ways to convert a preview tab into a regular tab:
2000
2001 - Double-clicking on the file
2002 - Double-clicking on the tab header
2003 - Using the `project_panel::OpenPermanent` action
2004 - Editing the file
2005 - Dragging the file to a different pane
2006
2007- Setting: `preview_tabs`
2008- Default:
2009
2010```json
2011"preview_tabs": {
2012 "enabled": true,
2013 "enable_preview_from_file_finder": false,
2014 "enable_preview_from_code_navigation": false,
2015}
2016```
2017
2018### Enable preview from file finder
2019
2020- Description: Determines whether to open files in preview mode when selected from the file finder.
2021- Setting: `enable_preview_from_file_finder`
2022- Default: `false`
2023
2024**Options**
2025
2026`boolean` values
2027
2028### Enable preview from code navigation
2029
2030- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2031- Setting: `enable_preview_from_code_navigation`
2032- Default: `false`
2033
2034**Options**
2035
2036`boolean` values
2037
2038## File Finder
2039
2040### Modal Max Width
2041
2042- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2043- Setting: `modal_max_width`
2044- Default: `small`
2045
2046## Preferred Line Length
2047
2048- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2049- Setting: `preferred_line_length`
2050- Default: `80`
2051
2052**Options**
2053
2054`integer` values
2055
2056## Projects Online By Default
2057
2058- Description: Whether or not to show the online projects view by default.
2059- Setting: `projects_online_by_default`
2060- Default: `true`
2061
2062**Options**
2063
2064`boolean` values
2065
2066## Remove Trailing Whitespace On Save
2067
2068- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2069- Setting: `remove_trailing_whitespace_on_save`
2070- Default: `true`
2071
2072**Options**
2073
2074`boolean` values
2075
2076## Search
2077
2078- Description: Search options to enable by default when opening new project and buffer searches.
2079- Setting: `search`
2080- Default:
2081
2082```json
2083"search": {
2084 "whole_word": false,
2085 "case_sensitive": false,
2086 "include_ignored": false,
2087 "regex": false
2088},
2089```
2090
2091## Seed Search Query From Cursor
2092
2093- Description: When to populate a new search's query based on the text under the cursor.
2094- Setting: `seed_search_query_from_cursor`
2095- Default: `always`
2096
2097**Options**
2098
20991. `always` always populate the search query with the word under the cursor
21002. `selection` only populate the search query when there is text selected
21013. `never` never populate the search query
2102
2103## Use Smartcase Search
2104
2105- 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. \
2106 This applies to both in-file searches and project-wide searches.
2107- Setting: `use_smartcase_search`
2108- Default: `false`
2109
2110**Options**
2111
2112`boolean` values
2113
2114Examples:
2115
2116- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2117- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2118
2119## Show Call Status Icon
2120
2121- Description: Whether or not to show the call status icon in the status bar.
2122- Setting: `show_call_status_icon`
2123- Default: `true`
2124
2125**Options**
2126
2127`boolean` values
2128
2129## Completions
2130
2131- Description: Controls how completions are processed for this language.
2132- Setting: `completions`
2133- Default:
2134
2135```json
2136{
2137 "completions": {
2138 "words": "fallback",
2139 "lsp": true,
2140 "lsp_fetch_timeout_ms": 0,
2141 "lsp_insert_mode": "replace_suffix"
2142 }
2143}
2144```
2145
2146### Words
2147
2148- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2149- Setting: `words`
2150- Default: `fallback`
2151
2152**Options**
2153
21541. `enabled` - Always fetch document's words for completions along with LSP completions
21552. `fallback` - Only if LSP response errors or times out, use document's words to show completions
21563. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2157
2158### LSP
2159
2160- Description: Whether to fetch LSP completions or not.
2161- Setting: `lsp`
2162- Default: `true`
2163
2164**Options**
2165
2166`boolean` values
2167
2168### LSP Fetch Timeout (ms)
2169
2170- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2171- Setting: `lsp_fetch_timeout_ms`
2172- Default: `0`
2173
2174**Options**
2175
2176`integer` values representing milliseconds
2177
2178### LSP Insert Mode
2179
2180- Description: Controls what range to replace when accepting LSP completions.
2181- Setting: `lsp_insert_mode`
2182- Default: `replace_suffix`
2183
2184**Options**
2185
21861. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
21872. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
21883. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
21894. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2190
2191## Show Completions On Input
2192
2193- Description: Whether or not to show completions as you type.
2194- Setting: `show_completions_on_input`
2195- Default: `true`
2196
2197**Options**
2198
2199`boolean` values
2200
2201## Show Completion Documentation
2202
2203- Description: Whether to display inline and alongside documentation for items in the completions menu.
2204- Setting: `show_completion_documentation`
2205- Default: `true`
2206
2207**Options**
2208
2209`boolean` values
2210
2211## Show Edit Predictions
2212
2213- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2214- Setting: `show_edit_predictions`
2215- Default: `true`
2216
2217**Options**
2218
2219`boolean` values
2220
2221## Show Whitespaces
2222
2223- Description: Whether or not to render whitespace characters in the editor.
2224- Setting: `show_whitespaces`
2225- Default: `selection`
2226
2227**Options**
2228
22291. `all`
22302. `selection`
22313. `none`
22324. `boundary`
2233
2234## Soft Wrap
2235
2236- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2237- Setting: `soft_wrap`
2238- Default: `none`
2239
2240**Options**
2241
22421. `none` to avoid wrapping generally, unless the line is too long
22432. `prefer_line` (deprecated, same as `none`)
22443. `editor_width` to wrap lines that overflow the editor width
22454. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
22465. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2247
2248## Wrap Guides (Vertical Rulers)
2249
2250- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2251- Setting: `wrap_guides`
2252- Default: []
2253
2254**Options**
2255
2256List of `integer` column numbers
2257
2258## Tab Size
2259
2260- Description: The number of spaces to use for each tab character.
2261- Setting: `tab_size`
2262- Default: `4`
2263
2264**Options**
2265
2266`integer` values
2267
2268## Telemetry
2269
2270- Description: Control what info is collected by Zed.
2271- Setting: `telemetry`
2272- Default:
2273
2274```json
2275"telemetry": {
2276 "diagnostics": true,
2277 "metrics": true
2278},
2279```
2280
2281**Options**
2282
2283### Diagnostics
2284
2285- Description: Setting for sending debug-related data, such as crash reports.
2286- Setting: `diagnostics`
2287- Default: `true`
2288
2289**Options**
2290
2291`boolean` values
2292
2293### Metrics
2294
2295- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2296- Setting: `metrics`
2297- Default: `true`
2298
2299**Options**
2300
2301`boolean` values
2302
2303## Terminal
2304
2305- Description: Configuration for the terminal.
2306- Setting: `terminal`
2307- Default:
2308
2309```json
2310{
2311 "terminal": {
2312 "alternate_scroll": "off",
2313 "blinking": "terminal_controlled",
2314 "copy_on_select": false,
2315 "dock": "bottom",
2316 "default_width": 640,
2317 "default_height": 320,
2318 "detect_venv": {
2319 "on": {
2320 "directories": [".env", "env", ".venv", "venv"],
2321 "activate_script": "default"
2322 }
2323 },
2324 "env": {},
2325 "font_family": null,
2326 "font_features": null,
2327 "font_size": null,
2328 "line_height": "comfortable",
2329 "option_as_meta": false,
2330 "button": true,
2331 "shell": "system",
2332 "toolbar": {
2333 "breadcrumbs": true
2334 },
2335 "working_directory": "current_project_directory",
2336 "scrollbar": {
2337 "show": null
2338 }
2339 }
2340}
2341```
2342
2343### Terminal: Dock
2344
2345- Description: Control the position of the dock
2346- Setting: `dock`
2347- Default: `bottom`
2348
2349**Options**
2350
2351`"bottom"`, `"left"` or `"right"`
2352
2353### Terminal: Alternate Scroll
2354
2355- 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.
2356- Setting: `alternate_scroll`
2357- Default: `off`
2358
2359**Options**
2360
23611. Default alternate scroll mode to off
2362
2363```json
2364{
2365 "terminal": {
2366 "alternate_scroll": "off"
2367 }
2368}
2369```
2370
23712. Default alternate scroll mode to on
2372
2373```json
2374{
2375 "terminal": {
2376 "alternate_scroll": "on"
2377 }
2378}
2379```
2380
2381### Terminal: Blinking
2382
2383- Description: Set the cursor blinking behavior in the terminal
2384- Setting: `blinking`
2385- Default: `terminal_controlled`
2386
2387**Options**
2388
23891. Never blink the cursor, ignore the terminal mode
2390
2391```json
2392{
2393 "terminal": {
2394 "blinking": "off"
2395 }
2396}
2397```
2398
23992. Default the cursor blink to off, but allow the terminal to turn blinking on
2400
2401```json
2402{
2403 "terminal": {
2404 "blinking": "terminal_controlled"
2405 }
2406}
2407```
2408
24093. Always blink the cursor, ignore the terminal mode
2410
2411```json
2412{
2413 "terminal": {
2414 "blinking": "on"
2415 }
2416}
2417```
2418
2419### Terminal: Copy On Select
2420
2421- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2422- Setting: `copy_on_select`
2423- Default: `false`
2424
2425**Options**
2426
2427`boolean` values
2428
2429**Example**
2430
2431```json
2432{
2433 "terminal": {
2434 "copy_on_select": true
2435 }
2436}
2437```
2438
2439### Terminal: Env
2440
2441- 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
2442- Setting: `env`
2443- Default: `{}`
2444
2445**Example**
2446
2447```json
2448{
2449 "terminal": {
2450 "env": {
2451 "ZED": "1",
2452 "KEY": "value1:value2"
2453 }
2454 }
2455}
2456```
2457
2458### Terminal: Font Size
2459
2460- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2461- Setting: `font_size`
2462- Default: `null`
2463
2464**Options**
2465
2466`integer` values
2467
2468```json
2469{
2470 "terminal": {
2471 "font_size": 15
2472 }
2473}
2474```
2475
2476### Terminal: Font Family
2477
2478- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
2479- Setting: `font_family`
2480- Default: `null`
2481
2482**Options**
2483
2484The name of any font family installed on the user's system
2485
2486```json
2487{
2488 "terminal": {
2489 "font_family": "Berkeley Mono"
2490 }
2491}
2492```
2493
2494### Terminal: Font Features
2495
2496- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
2497- Setting: `font_features`
2498- Default: `null`
2499- Platform: macOS and Windows.
2500
2501**Options**
2502
2503See Buffer Font Features
2504
2505```json
2506{
2507 "terminal": {
2508 "font_features": {
2509 "calt": false
2510 // See Buffer Font Features for more features
2511 }
2512 }
2513}
2514```
2515
2516### Terminal: Line Height
2517
2518- Description: Set the terminal's line height.
2519- Setting: `line_height`
2520- Default: `comfortable`
2521
2522**Options**
2523
25241. Use a line height that's `comfortable` for reading, 1.618. (default)
2525
2526```json
2527{
2528 "terminal": {
2529 "line_height": "comfortable"
2530 }
2531}
2532```
2533
25342. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
2535
2536```json
2537{
2538 "terminal": {
2539 "line_height": "standard"
2540 }
2541}
2542```
2543
25443. Use a custom line height.
2545
2546```json
2547{
2548 "terminal": {
2549 "line_height": {
2550 "custom": 2
2551 }
2552 }
2553}
2554```
2555
2556### Terminal: Option As Meta
2557
2558- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
2559- Setting: `option_as_meta`
2560- Default: `false`
2561
2562**Options**
2563
2564`boolean` values
2565
2566```json
2567{
2568 "terminal": {
2569 "option_as_meta": true
2570 }
2571}
2572```
2573
2574### Terminal: Shell
2575
2576- Description: What shell to use when launching the terminal.
2577- Setting: `shell`
2578- Default: `system`
2579
2580**Options**
2581
25821. Use the system's default terminal configuration (usually the `/etc/passwd` file).
2583
2584```json
2585{
2586 "terminal": {
2587 "shell": "system"
2588 }
2589}
2590```
2591
25922. A program to launch:
2593
2594```json
2595{
2596 "terminal": {
2597 "shell": {
2598 "program": "sh"
2599 }
2600 }
2601}
2602```
2603
26043. A program with arguments:
2605
2606```json
2607{
2608 "terminal": {
2609 "shell": {
2610 "with_arguments": {
2611 "program": "/bin/bash",
2612 "args": ["--login"]
2613 }
2614 }
2615 }
2616}
2617```
2618
2619## Terminal: Detect Virtual Environments {#terminal-detect_venv}
2620
2621- 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.
2622- Setting: `detect_venv`
2623- Default:
2624
2625```json
2626{
2627 "terminal": {
2628 "detect_venv": {
2629 "on": {
2630 // Default directories to search for virtual environments, relative
2631 // to the current working directory. We recommend overriding this
2632 // in your project's settings, rather than globally.
2633 "directories": [".env", "env", ".venv", "venv"],
2634 // Can also be `csh`, `fish`, and `nushell`
2635 "activate_script": "default"
2636 }
2637 }
2638 }
2639}
2640```
2641
2642Disable with:
2643
2644```json
2645{
2646 "terminal": {
2647 "detect_venv": "off"
2648 }
2649}
2650```
2651
2652## Terminal: Toolbar
2653
2654- Description: Whether or not to show various elements in the terminal toolbar.
2655- Setting: `toolbar`
2656- Default:
2657
2658```json
2659{
2660 "terminal": {
2661 "toolbar": {
2662 "breadcrumbs": true
2663 }
2664 }
2665}
2666```
2667
2668**Options**
2669
2670At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
2671
2672If the terminal title is empty, the breadcrumbs won't be shown.
2673
2674The shell running in the terminal needs to be configured to emit the title.
2675
2676Example command to set the title: `echo -e "\e]2;New Title\007";`
2677
2678### Terminal: Button
2679
2680- Description: Control to show or hide the terminal button in the status bar
2681- Setting: `button`
2682- Default: `true`
2683
2684**Options**
2685
2686`boolean` values
2687
2688```json
2689{
2690 "terminal": {
2691 "button": false
2692 }
2693}
2694```
2695
2696### Terminal: Working Directory
2697
2698- Description: What working directory to use when launching the terminal.
2699- Setting: `working_directory`
2700- Default: `"current_project_directory"`
2701
2702**Options**
2703
27041. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
2705
2706```json
2707{
2708 "terminal": {
2709 "working_directory": "current_project_directory"
2710 }
2711}
2712```
2713
27142. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
2715
2716```json
2717{
2718 "terminal": {
2719 "working_directory": "first_project_directory"
2720 }
2721}
2722```
2723
27243. Always use this platform's home directory (if we can find it)
2725
2726```json
2727{
2728 "terminal": {
2729 "working_directory": "always_home"
2730 }
2731}
2732```
2733
27344. 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.
2735
2736```json
2737{
2738 "terminal": {
2739 "working_directory": {
2740 "always": {
2741 "directory": "~/zed/projects/"
2742 }
2743 }
2744 }
2745}
2746```
2747
2748## Theme
2749
2750- 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.
2751- Setting: `theme`
2752- Default: `One Dark`
2753
2754### Theme Object
2755
2756- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2757- Setting: `theme`
2758- Default:
2759
2760```json
2761"theme": {
2762 "mode": "system",
2763 "dark": "One Dark",
2764 "light": "One Light"
2765},
2766```
2767
2768### Mode
2769
2770- Description: Specify theme mode.
2771- Setting: `mode`
2772- Default: `system`
2773
2774**Options**
2775
27761. Set the theme to dark mode
2777
2778```json
2779{
2780 "mode": "dark"
2781}
2782```
2783
27842. Set the theme to light mode
2785
2786```json
2787{
2788 "mode": "light"
2789}
2790```
2791
27923. Set the theme to system mode
2793
2794```json
2795{
2796 "mode": "system"
2797}
2798```
2799
2800### Dark
2801
2802- Description: The name of the dark Zed theme to use for the UI.
2803- Setting: `dark`
2804- Default: `One Dark`
2805
2806**Options**
2807
2808Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2809
2810### Light
2811
2812- Description: The name of the light Zed theme to use for the UI.
2813- Setting: `light`
2814- Default: `One Light`
2815
2816**Options**
2817
2818Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2819
2820## Vim
2821
2822- Description: Whether or not to enable vim mode (work in progress).
2823- Setting: `vim_mode`
2824- Default: `false`
2825
2826## Project Panel
2827
2828- Description: Customize project panel
2829- Setting: `project_panel`
2830- Default:
2831
2832```json
2833{
2834 "project_panel": {
2835 "button": true,
2836 "default_width": 240,
2837 "dock": "left",
2838 "entry_spacing": "comfortable",
2839 "file_icons": true,
2840 "folder_icons": true,
2841 "git_status": true,
2842 "indent_size": 20,
2843 "auto_reveal_entries": true,
2844 "auto_fold_dirs": true,
2845 "scrollbar": {
2846 "show": null
2847 },
2848 "show_diagnostics": "all",
2849 "indent_guides": {
2850 "show": "always"
2851 }
2852 }
2853}
2854```
2855
2856### Dock
2857
2858- Description: Control the position of the dock
2859- Setting: `dock`
2860- Default: `left`
2861
2862**Options**
2863
28641. Default dock position to left
2865
2866```json
2867{
2868 "dock": "left"
2869}
2870```
2871
28722. Default dock position to right
2873
2874```json
2875{
2876 "dock": "right"
2877}
2878```
2879
2880### Entry Spacing
2881
2882- Description: Spacing between worktree entries
2883- Setting: `entry_spacing`
2884- Default: `comfortable`
2885
2886**Options**
2887
28881. Comfortable entry spacing
2889
2890```json
2891{
2892 "entry_spacing": "comfortable"
2893}
2894```
2895
28962. Standard entry spacing
2897
2898```json
2899{
2900 "entry_spacing": "standard"
2901}
2902```
2903
2904### Git Status
2905
2906- Description: Indicates newly created and updated files
2907- Setting: `git_status`
2908- Default: `true`
2909
2910**Options**
2911
29121. Default enable git status
2913
2914```json
2915{
2916 "git_status": true
2917}
2918```
2919
29202. Default disable git status
2921
2922```json
2923{
2924 "git_status": false
2925}
2926```
2927
2928### Default Width
2929
2930- Description: Customize default width taken by project panel
2931- Setting: `default_width`
2932- Default: `240`
2933
2934**Options**
2935
2936`float` values
2937
2938### Auto Reveal Entries
2939
2940- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2941- Setting: `auto_reveal_entries`
2942- Default: `true`
2943
2944**Options**
2945
29461. Enable auto reveal entries
2947
2948```json
2949{
2950 "auto_reveal_entries": true
2951}
2952```
2953
29542. Disable auto reveal entries
2955
2956```json
2957{
2958 "auto_reveal_entries": false
2959}
2960```
2961
2962### Auto Fold Dirs
2963
2964- Description: Whether to fold directories automatically when directory has only one directory inside.
2965- Setting: `auto_fold_dirs`
2966- Default: `true`
2967
2968**Options**
2969
29701. Enable auto fold dirs
2971
2972```json
2973{
2974 "auto_fold_dirs": true
2975}
2976```
2977
29782. Disable auto fold dirs
2979
2980```json
2981{
2982 "auto_fold_dirs": false
2983}
2984```
2985
2986### Indent Size
2987
2988- Description: Amount of indentation (in pixels) for nested items.
2989- Setting: `indent_size`
2990- Default: `20`
2991
2992### Indent Guides: Show
2993
2994- Description: Whether to show indent guides in the project panel.
2995- Setting: `indent_guides`
2996- Default:
2997
2998```json
2999"indent_guides": {
3000 "show": "always"
3001}
3002```
3003
3004**Options**
3005
30061. Show indent guides in the project panel
3007
3008```json
3009{
3010 "indent_guides": {
3011 "show": "always"
3012 }
3013}
3014```
3015
30162. Hide indent guides in the project panel
3017
3018```json
3019{
3020 "indent_guides": {
3021 "show": "never"
3022 }
3023}
3024```
3025
3026### Scrollbar: Show
3027
3028- 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.
3029- Setting: `scrollbar`
3030- Default:
3031
3032```json
3033"scrollbar": {
3034 "show": null
3035}
3036```
3037
3038**Options**
3039
30401. Show scrollbar in the project panel
3041
3042```json
3043{
3044 "scrollbar": {
3045 "show": "always"
3046 }
3047}
3048```
3049
30502. Hide scrollbar in the project panel
3051
3052```json
3053{
3054 "scrollbar": {
3055 "show": "never"
3056 }
3057}
3058```
3059
3060## Assistant Panel
3061
3062- Description: Customize assistant panel
3063- Setting: `assistant`
3064- Default:
3065
3066```json
3067"assistant": {
3068 "version": "2",
3069 "enabled": true,
3070 "button": true,
3071 "dock": "right",
3072 "default_width": 640,
3073 "default_height": 320,
3074 "default_model": {
3075 "provider": "zed.dev",
3076 "model": "claude-3-7-sonnet-latest"
3077 },
3078 "editor_model": {
3079 "provider": "zed.dev",
3080 "model": "claude-3-7-sonnet-latest"
3081 }
3082}
3083```
3084
3085## Outline Panel
3086
3087- Description: Customize outline Panel
3088- Setting: `outline_panel`
3089- Default:
3090
3091```json
3092"outline_panel": {
3093 "button": true,
3094 "default_width": 300,
3095 "dock": "left",
3096 "file_icons": true,
3097 "folder_icons": true,
3098 "git_status": true,
3099 "indent_size": 20,
3100 "auto_reveal_entries": true,
3101 "auto_fold_dirs": true,
3102 "indent_guides": {
3103 "show": "always"
3104 },
3105 "scrollbar": {
3106 "show": null
3107 }
3108}
3109```
3110
3111## Calls
3112
3113- Description: Customize behavior when participating in a call
3114- Setting: `calls`
3115- Default:
3116
3117```json
3118"calls": {
3119 // Join calls with the microphone live by default
3120 "mute_on_join": false,
3121 // Share your project when you are the first to join a channel
3122 "share_on_join": false
3123},
3124```
3125
3126## Unnecessary Code Fade
3127
3128- Description: How much to fade out unused code.
3129- Setting: `unnecessary_code_fade`
3130- Default: `0.3`
3131
3132**Options**
3133
3134Float values between `0.0` and `0.9`, where:
3135
3136- `0.0` means no fading (unused code looks the same as used code)
3137- `0.9` means maximum fading (unused code is very faint but still visible)
3138
3139**Example**
3140
3141```json
3142{
3143 "unnecessary_code_fade": 0.5
3144}
3145```
3146
3147## UI Font Family
3148
3149- Description: The name of the font to use for text in the UI.
3150- Setting: `ui_font_family`
3151- Default: `Zed Plex Sans`
3152
3153**Options**
3154
3155The name of any font family installed on the system.
3156
3157## UI Font Features
3158
3159- Description: The OpenType features to enable for text in the UI.
3160- Setting: `ui_font_features`
3161- Default:
3162
3163```json
3164"ui_font_features": {
3165 "calt": false
3166}
3167```
3168
3169- Platform: macOS and Windows.
3170
3171**Options**
3172
3173Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3174
3175For example, to disable font ligatures, add the following to your settings:
3176
3177```json
3178{
3179 "ui_font_features": {
3180 "calt": false
3181 }
3182}
3183```
3184
3185You can also set other OpenType features, like setting `cv01` to `7`:
3186
3187```json
3188{
3189 "ui_font_features": {
3190 "cv01": 7
3191 }
3192}
3193```
3194
3195## UI Font Fallbacks
3196
3197- Description: The font fallbacks to use for text in the UI.
3198- Setting: `ui_font_fallbacks`
3199- Default: `null`
3200- Platform: macOS and Windows.
3201
3202**Options**
3203
3204For example, to use `Nerd Font` as a fallback, add the following to your settings:
3205
3206```json
3207{
3208 "ui_font_fallbacks": ["Nerd Font"]
3209}
3210```
3211
3212## UI Font Size
3213
3214- Description: The default font size for text in the UI.
3215- Setting: `ui_font_size`
3216- Default: `16`
3217
3218**Options**
3219
3220`integer` values from `6` to `100` pixels (inclusive)
3221
3222## UI Font Weight
3223
3224- Description: The default font weight for text in the UI.
3225- Setting: `ui_font_weight`
3226- Default: `400`
3227
3228**Options**
3229
3230`integer` values between `100` and `900`
3231
3232## An example configuration:
3233
3234```json
3235// ~/.config/zed/settings.json
3236{
3237 "theme": "cave-light",
3238 "tab_size": 2,
3239 "preferred_line_length": 80,
3240 "soft_wrap": "none",
3241
3242 "buffer_font_size": 18,
3243 "buffer_font_family": "Zed Plex Mono",
3244
3245 "autosave": "on_focus_change",
3246 "format_on_save": "off",
3247 "vim_mode": false,
3248 "projects_online_by_default": true,
3249 "terminal": {
3250 "font_family": "FiraCode Nerd Font Mono",
3251 "blinking": "off"
3252 },
3253 "languages": {
3254 "C": {
3255 "format_on_save": "language_server",
3256 "preferred_line_length": 64,
3257 "soft_wrap": "preferred_line_length"
3258 }
3259 }
3260}
3261```