configuring-zed.md

   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## User Settings
   8
   9These are your personal settings that will apply to any Zed instance you open, and they'll apply to every instance of Zed you open.
  10
  11You can access user settings via:
  12- Command Palette {#kb zed::OpenSettings}
  13- Shortcut `cmd-,`
  14
  15You can also edit settings directly in the JSON via {#kb zed::OpenSettingsFile} or with `opt+cmd-,`.
  16
  17
  18<!--
  19TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
  20Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
  21
  22TBD: 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.
  23-->
  24## Project Settings
  25Project settings will override your user settings, and apply specifically to one project. Project settings can be viewed in the Settings Editor next to the user settings.
  26
  27Although 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.
  28
  29# Settings
  30
  31## Active Pane Modifiers
  32This setting applies stying to the active pane in your editor.
  33
  34- Border size: 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.
  35  - Default: 0.0
  36- Inactive opacity: 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.
  37  - Default: 1.0
  38
  39**How to change:**
  40
  41Settings Editor (`cmd-,`) > Appearance & Behavior > Window.
  42
  43**Sample JSON**
  44```json [settings]
  45{
  46  "active_pane_modifiers": {
  47    "border_size": 0.0,
  48    "inactive_opacity": 1.0
  49  }
  50}
  51```
  52
  53## Bottom Dock Layout
  54
  55Controls the layout of the bottom dock, relative to the left and right docks. The dock can be contained, full, left aligned, or right aligned.
  56By default, the bottom dock is contained, giving the full height of the window to the left and right docks.
  57
  58**How to change:**
  59
  60Settings Editor (`cmd-,`) > Appearance & Behavior > Layout.
  61
  62**Sample JSON**
  63
  64```json [settings]
  65{
  66  "bottom_dock_layout": "contained"
  67}
  68```
  69
  70## Agent Font Size
  71
  72Controls the font size for text in the agent panel. By default, it inherits the UI font size.
  73
  74## Allow Rewrap
  75
  76Controls where the {#action editor::Rewrap} action is allowed in the current language scope. It can be allowed in comments, selections, or anywhere. By default, it is allowed in comments only.
  77
  78Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
  79
  80**Sample JSON**
  81
  82```json [settings]
  83{
  84  "allow_rewrap": "in_comments"
  85}
  86```
  87
  88## Auto Indent
  89
  90Manages whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis. By default, it's enabled.
  91
  92## Auto Indent On Paste
  93
  94Manages whether indentation of pasted content should be adjusted based on the context. By default, it's enabled.
  95
  96## Auto Install extensions
  97
  98Define extensions to be autoinstalled or never be installed. By default, HTML is auto-installed.
  99
 100**Options**
 101
 102You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions.md#installation-location):
 103
 104On macOS:
 105
 106```sh
 107ls ~/Library/Application\ Support/Zed/extensions/installed/
 108```
 109
 110On Linux:
 111
 112```sh
 113ls ~/.local/share/zed/extensions/installed
 114```
 115
 116Define extensions which should be installed (`true`) or never installed (`false`).
 117
 118```json [settings]
 119{
 120  "auto_install_extensions": {
 121    "html": true,
 122    "dockerfile": true,
 123    "docker-compose": false
 124  }
 125}
 126```
 127
 128## Autosave
 129
 130Determines when to automatically save edited buffers. Autosave is off by default.
 131
 132**Options**
 133- Off
 134- On focus change
 135- On window change
 136- After a period of inactivity (Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.)
 137
 138**Sample JSON**
 139
 140```json [settings]
 141{
 142  "autosave": {
 143    "after_delay": {
 144      "milliseconds": 1000
 145    }
 146  }
 147}
 148```
 149
 150## Autoscroll on Clicks
 151
 152Whether to scroll when clicking near the edge of the visible text area. By default, it's disabled.
 153
 154## Auto Signature Help
 155
 156Shows method signatures in the editor, when inside parentheses. By default, it's disabled.
 157
 158### Show Signature Help After Edits
 159
 160Determines whether to show the signature help after completion or a bracket pair inserted. If `auto_signature_help` is enabled, this setting will be treated as enabled also. By default, this setting is disabled.
 161
 162## Auto Update
 163
 164Determines whether or not to automatically check for updates. By default, it's enabled.
 165
 166## Base Keymap
 167
 168Base key bindings scheme. Base keymaps can be overridden with user keymaps. The default is VS Code.
 169
 170**Options**
 171- VS Code
 172- Atom
 173- JetBrains
 174- SublimeText
 175- TextMate
 176- None
 177
 178## Buffer Font Family
 179
 180The name of a font to use for rendering text in the editor. The default is ZedMono, but it can be updated to any font family installed on the user's system.
 181
 182## Buffer Font Features
 183
 184Zed 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.
 185
 186For example, to disable font ligatures, add the following to your settings:
 187
 188```json [settings]
 189{
 190  "buffer_font_features": {
 191    "calt": false
 192  }
 193}
 194```
 195
 196You can also set other OpenType features, like setting `cv01` to `7`:
 197
 198```json [settings]
 199{
 200  "buffer_font_features": {
 201    "cv01": 7
 202  }
 203}
 204```
 205
 206## Buffer Font Fallbacks
 207
 208Set the buffer text's font fallbacks, which will be merged with the platform's default fallbacks. This is not set by default.
 209
 210**Sample JSON**
 211
 212```json [settings]
 213{
 214  "buffer_font_fallbacks": ["Nerd Font"]
 215}
 216```
 217
 218## Buffer Font Size
 219
 220The default font size for text in the editor. A font size can range from `6` to `100` pixels (inclusive), and the default size is 15.
 221
 222## Buffer Font Weight
 223
 224The default font weight for text in the editor. The weight can range between `100` adn `900`, and the default is `400`.
 225
 226## Buffer Line Height
 227
 228The default line height for text in the editor. The default is Comfortable, though it can be updated to standard, or a custom value.
 229
 230## Centered Layout
 231
 232Congiuure the padding for when the editor is in  centered layout mode.
 233
 234## Close on File Delete
 235
 236Determines whether to automatically close editor tabs when their corresponding files are deleted from disk. By default, it's disabled.
 237
 238When enabled, this setting will automatically close tabs for files that have been deleted from the file system. This is particularly useful for workflows involving temporary or scratch files that are frequently created and deleted. When disabled (default), deleted files remain open with a strikethrough through their tab title.
 239
 240Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
 241
 242## Confirm Quit
 243
 244Whether or not to prompt the user to confirm before closing the application. By default, it's disabled.
 245
 246## Diagnostics Max Severity
 247
 248Controls which level to use to filter out diagnostics displayed in the editor.
 249
 250**Options**
 2511. Allow all diagnostics (default)
 2522. Show only errors
 2533. Show errors and warnings
 2544. Show errors, warnings, and information
 2555. Show all, including hints
 256
 257## Disable AI
 258
 259Controls whether to disable all AI features in Zed. By default, it's disabled.
 260
 261## Direnv Integration
 262
 263Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed. By default, it uses loads `"direct"`.
 264  `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.
 265  It also allows for those environment variables to be used in tasks.
 266
 267**Options**
 268
 269There are two options to choose from:
 270
 2711. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 2722. `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.
 273
 274## Double Click In Multibuffer
 275
 276What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers). By default, it behaves as a regular buffer and selects the whole word.
 277
 278**Options**
 2791. Behave as a regular buffer and select the whole word (default):
 2802. Open the excerpt clicked as a new buffer in the new tab:
 281
 282For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
 283
 284## Drop Target Size
 285
 286Controls the relative size of the drop target in the editor that will open dropped files as a split pane (0-0.5). For example, 0.25 means if you drop onto the top/bottom quarter of the pane a new vertical split will be used, if you drop onto the left/right quarter of the pane a new horizontal split will be used. By default, the size is `0.2`, but can be customized between `0` and `0.5`.
 287
 288## Edit Predictions
 289
 290Specific settings for edit predictions.
 291
 292Default JSON:
 293
 294```json [settings]
 295  "edit_predictions": {
 296    "disabled_globs": [
 297      "**/.env*",
 298      "**/*.pem",
 299      "**/*.key",
 300      "**/*.cert",
 301      "**/*.crt",
 302      "**/.dev.vars",
 303      "**/secrets.yml"
 304    ]
 305  }
 306```
 307
 308**Options**
 309
 310### Disabled Globs
 311
 312- Description: A list of globs where edit predictions should be disabled. This list adds to a pre-existing, sensible default set of globs. Any additional ones you add are combined with them.
 313- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 314
 315**Options**
 316
 317List of `string` values.
 318
 319## Edit Predictions Disabled in
 320
 321A list of language scopes in which edit predictions should be disabled.
 322- Default: `[]`
 323
 324**Options**
 325
 326List of `string` values
 327
 3281. Don't show edit predictions in comments:
 329
 330```json [settings]
 331"disabled_in": ["comment"]
 332```
 333
 3342. Don't show edit predictions in strings and comments:
 335
 336```json [settings]
 337"disabled_in": ["comment", "string"]
 338```
 339
 3403. Only in Go, don't show edit predictions in strings and comments:
 341
 342```json [settings]
 343{
 344  "languages": {
 345    "Go": {
 346      "edit_predictions_disabled_in": ["comment", "string"]
 347    }
 348  }
 349}
 350```
 351
 352## Current Line Highlight
 353
 354Determines how to highlight the current line in the editor. By default, the full line is highlighted.
 355
 356**Options**
 357
 3581. None: Don't highlight the current line
 3592. Gutter: Highlight the gutter area
 3603. Line: Highlight the editor area
 3614. All: Highlight the full line (Default)
 362
 363## Selection Highlight
 364
 365Determines Whether to highlight all occurrences of the selected text in an editor. By default, it's enabled.
 366
 367## Rounded Selection
 368
 369Controls whether the text selection should have rounded corners. By default, it's enabled.
 370
 371## Cursor Blink
 372
 373Controls whether or not the cursor blinks. By default, it's enabled.
 374
 375## Cursor Shape
 376
 377Controls the cursor shape for the default editor. By default, it's shown as a bar.
 378
 379**Options**
 3801. Bar: A vertical bar
 3812. Block: A block that surrounds the following character:
 3823. Underline: An underline / underscore that runs along the following character:
 3834. Hollow: A box drawn around the following character
 384
 385## Gutter
 386
 387Control the settings for the editor gutter, including its breakpoints, folds, and line numbers.
 388
 389**Options**
 390
 391- `line_numbers`: Whether to show line numbers in the gutter
 392- `runnables`: Whether to show runnable buttons in the gutter
 393- `breakpoints`: Whether to show breakpoints in the gutter
 394- `folds`: Whether to show fold buttons in the gutter
 395- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
 396
 397**Sample JSON**
 398
 399```json [settings]
 400{
 401  "gutter": {
 402    "line_numbers": true,
 403    "runnables": true,
 404    "breakpoints": true,
 405    "folds": true,
 406    "min_line_number_digits": 4
 407  }
 408}
 409```
 410
 411## Hide Mouse
 412
 413Determines when the mouse cursor should be hidden in an editor or input box. By default, it hides when typing or during cursor movement.
 414
 415**Options**
 416
 4171. Never hide the mouse cursor
 4182. Hide only when typing
 4193. Hide on both typing and cursor movement (default)
 420
 421## Snippet Sort Order
 422
 423Determines how snippets are sorted relative to other completion items. By default, they are sorted inline.
 424
 425**Options**
 426
 4271. Top: Place snippets at the top of the completion list
 4282. Inline: Place snippets normally without any preference (default)
 4293. Bottom: Place snippets at the bottom of the completion list
 4304. None: Do not show snippets in the completion list at all:
 431
 432## Editor Scrollbar
 433
 434Determines whether or not to show the editor scrollbar and various elements in it. The scrollbar shows automatically by default, though this can be configured.
 435
 436By default, the scrollbar will show:
 437- Cursor position
 438- Git diff indicators
 439- Buffer search results
 440- Selected text
 441- Selected symbols
 442- Diagnostics
 443- Horizontal and vertical axes
 444
 445All these options are configurable.
 446
 447**Sample JSON**
 448
 449```json [settings]
 450"scrollbar": {
 451  "show": "auto",
 452  "cursors": true,
 453  "git_diff": true,
 454  "search_results": true,
 455  "selected_text": true,
 456  "selected_symbol": true,
 457  "diagnostics": "all",
 458  "axes": {
 459    "horizontal": true,
 460    "vertical": true,
 461  },
 462},
 463```
 464
 465### Show Mode
 466
 467When to show the editor scrollbar.
 468
 469**Options**
 4701. Auto: Show the scrollbar if there's important information or follow the system's configured behavior
 4712. System: Match the system's configured behavior
 4723. Always: Always show the scrollbar
 4734. Never: Never show the scrollbar
 474
 475### Diagnostics
 476
 477Which diagnostic indicators to show in the scrollbar.
 478
 479**Options**
 480
 4811. All: Show all diagnostics
 4822. Off: Do not show any diagnostics
 4833. Error: Show only errors
 4844. Warning: Show only errors and warnings
 4855. Info: Show only errors, warnings, and information
 486
 487## Minimap
 488
 489Configure how the minimap, which provides an overview of your document, shows in your editor. By default, the minimap does not show. 
 490
 491When it does show:
 492- The thumb always shows
 493- A border shows on all sides except the left
 494- Minimap inherits the editor's current line highlight setting
 495
 496**Sample JSON**
 497```json [settings]
 498{
 499  "minimap": {
 500    "show": "never",
 501    "thumb": "always",
 502    "thumb_border": "left_open",
 503    "current_line_highlight": null
 504  }
 505}
 506```
 507
 508### Show Mode Details
 509
 510When to show the minimap in the editor.
 511
 512**Options**
 513
 5141. Always: Always show the minimap
 5152. Auto: Show the minimap if the editor's scrollbars are visible
 5163. Never: Never show the minimap
 517
 518## Editor Tab Bar
 519
 520- Description: Settings related to the editor's tab bar.
 521- Settings: `tab_bar`
 522- Default:
 523
 524```json [settings]
 525"tab_bar": {
 526  "show": true,
 527  "show_nav_history_buttons": true,
 528  "show_tab_bar_buttons": true
 529}
 530```
 531
 532### Show
 533
 534- Description: Whether or not to show the tab bar in the editor.
 535- Setting: `show`
 536- Default: `true`
 537
 538**Options**
 539
 540`boolean` values
 541
 542### Navigation History Buttons
 543
 544- Description: Whether or not to show the navigation history buttons.
 545- Setting: `show_nav_history_buttons`
 546- Default: `true`
 547
 548**Options**
 549
 550`boolean` values
 551
 552### Tab Bar Buttons
 553
 554- Description: Whether or not to show the tab bar buttons.
 555- Setting: `show_tab_bar_buttons`
 556- Default: `true`
 557
 558**Options**
 559
 560`boolean` values
 561
 562## Editor Tabs
 563
 564- Description: Configuration for the editor tabs.
 565- Setting: `tabs`
 566- Default:
 567
 568```json [settings]
 569"tabs": {
 570  "close_position": "right",
 571  "file_icons": false,
 572  "git_status": false,
 573  "activate_on_close": "history",
 574  "show_close_button": "hover",
 575  "show_diagnostics": "off"
 576},
 577```
 578
 579### Close Position
 580
 581- Description: Where to display close button within a tab.
 582- Setting: `close_position`
 583- Default: `right`
 584
 585**Options**
 586
 5871. Display the close button on the right:
 588
 589```json [settings]
 590{
 591  "close_position": "right"
 592}
 593```
 594
 5952. Display the close button on the left:
 596
 597```json [settings]
 598{
 599  "close_position": "left"
 600}
 601```
 602
 603### File Icons
 604
 605- Description: Whether to show the file icon for a tab.
 606- Setting: `file_icons`
 607- Default: `false`
 608
 609### Git Status
 610
 611- Description: Whether or not to show Git file status in tab.
 612- Setting: `git_status`
 613- Default: `false`
 614
 615### Activate on close
 616
 617- Description: What to do after closing the current tab.
 618- Setting: `activate_on_close`
 619- Default: `history`
 620
 621**Options**
 622
 6231.  Activate the tab that was open previously:
 624
 625```json [settings]
 626{
 627  "activate_on_close": "history"
 628}
 629```
 630
 6312. Activate the right neighbour tab if present:
 632
 633```json [settings]
 634{
 635  "activate_on_close": "neighbour"
 636}
 637```
 638
 6393. Activate the left neighbour tab if present:
 640
 641```json [settings]
 642{
 643  "activate_on_close": "left_neighbour"
 644}
 645```
 646
 647### Show close button
 648
 649- Description: Controls the appearance behavior of the tab's close button.
 650- Setting: `show_close_button`
 651- Default: `hover`
 652
 653**Options**
 654
 6551.  Show it just upon hovering the tab:
 656
 657```json [settings]
 658{
 659  "show_close_button": "hover"
 660}
 661```
 662
 6632. Show it persistently:
 664
 665```json [settings]
 666{
 667  "show_close_button": "always"
 668}
 669```
 670
 6713. Never show it, even if hovering it:
 672
 673```json [settings]
 674{
 675  "show_close_button": "hidden"
 676}
 677```
 678
 679### Show Diagnostics
 680
 681- 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.
 682- Setting: `show_diagnostics`
 683- Default: `off`
 684
 685**Options**
 686
 6871. Do not mark any files:
 688
 689```json [settings]
 690{
 691  "show_diagnostics": "off"
 692}
 693```
 694
 6952. Only mark files with errors:
 696
 697```json [settings]
 698{
 699  "show_diagnostics": "errors"
 700}
 701```
 702
 7033. Mark files with errors and warnings:
 704
 705```json [settings]
 706{
 707  "show_diagnostics": "all"
 708}
 709```
 710
 711### Show Inline Code Actions
 712
 713- Description: Whether to show code action button at start of buffer line.
 714- Setting: `inline_code_actions`
 715- Default: `true`
 716
 717**Options**
 718
 719`boolean` values
 720
 721### Drag And Drop Selection
 722
 723- Description: Whether to allow drag and drop text selection in buffer. `delay` is the milliseconds that must elapse before drag and drop is allowed. Otherwise, a new text selection is created.
 724- Setting: `drag_and_drop_selection`
 725- Default:
 726
 727```json [settings]
 728"drag_and_drop_selection": {
 729  "enabled": true,
 730  "delay": 300
 731}
 732```
 733
 734## Editor Toolbar
 735
 736- Description: Whether or not to show various elements in the editor toolbar.
 737- Setting: `toolbar`
 738- Default:
 739
 740```json [settings]
 741"toolbar": {
 742  "breadcrumbs": true,
 743  "quick_actions": true,
 744  "selections_menu": true,
 745  "agent_review": true,
 746  "code_actions": false
 747},
 748```
 749
 750**Options**
 751
 752Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
 753
 754## Use System Tabs
 755
 756- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
 757- Setting: `use_system_window_tabs`
 758- Default: `false`
 759
 760**Options**
 761
 762This setting enables integration with macOS’s native window tabbing feature. When set to `true`, Zed windows can be grouped together as tabs in a single macOS window, following the system-wide tabbing preferences set by the user (such as "Always", "In Full Screen", or "Never"). This setting is only available on macOS.
 763
 764## Enable Language Server
 765
 766- Description: Whether or not to use language servers to provide code intelligence.
 767- Setting: `enable_language_server`
 768- Default: `true`
 769
 770**Options**
 771
 772`boolean` values
 773
 774## Ensure Final Newline On Save
 775
 776- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
 777- Setting: `ensure_final_newline_on_save`
 778- Default: `true`
 779
 780**Options**
 781
 782`boolean` values
 783
 784## Expand Excerpt Lines
 785
 786- Description: The default number of lines to expand excerpts in the multibuffer by
 787- Setting: `expand_excerpt_lines`
 788- Default: `5`
 789
 790**Options**
 791
 792Positive `integer` values
 793
 794## Excerpt Context Lines
 795
 796- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
 797- Setting: `excerpt_context_lines`
 798- Default: `2`
 799
 800**Options**
 801
 802Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
 803
 804## Extend Comment On Newline
 805
 806- Description: Whether to start a new line with a comment when a previous line is a comment as well.
 807- Setting: `extend_comment_on_newline`
 808- Default: `true`
 809
 810**Options**
 811
 812`boolean` values
 813
 814## Status Bar
 815
 816- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
 817- Setting: `status_bar`
 818- Default:
 819
 820```json [settings]
 821"status_bar": {
 822  "active_language_button": true,
 823  "cursor_position_button": true
 824},
 825```
 826
 827There is an experimental setting that completely hides the status bar. This causes major usability problems (you will be unable to use many of Zed's features), but is provided for those who value screen real-estate above all else.
 828
 829```json
 830"status_bar": {
 831  "experimental.show": false
 832}
 833```
 834
 835## LSP
 836
 837- Description: Configuration for language servers.
 838- Setting: `lsp`
 839- Default: `null`
 840
 841**Options**
 842
 843The following settings can be overridden for specific language servers:
 844
 845- `initialization_options`
 846- `settings`
 847
 848To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
 849
 850Some 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.
 851
 852For example to pass the `check` option to `rust-analyzer`, use the following configuration:
 853
 854```json [settings]
 855"lsp": {
 856  "rust-analyzer": {
 857    "initialization_options": {
 858      "check": {
 859        "command": "clippy" // rust-analyzer.check.command (default: "check")
 860      }
 861    }
 862  }
 863}
 864```
 865
 866While other options may be changed at a runtime and should be placed under `settings`:
 867
 868```json [settings]
 869"lsp": {
 870  "yaml-language-server": {
 871    "settings": {
 872      "yaml": {
 873        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
 874      }
 875    }
 876  }
 877}
 878```
 879
 880## Global LSP Settings
 881
 882- Description: Configuration for global LSP settings that apply to all language servers
 883- Setting: `global_lsp_settings`
 884- Default:
 885
 886```json [settings]
 887{
 888  "global_lsp_settings": {
 889    "button": true
 890  }
 891}
 892```
 893
 894**Options**
 895
 896- `button`: Whether to show the LSP status button in the status bar
 897
 898## LSP Highlight Debounce
 899
 900- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
 901- Setting: `lsp_highlight_debounce`
 902- Default: `75`
 903
 904**Options**
 905
 906`integer` values representing milliseconds
 907
 908## Features
 909
 910- Description: Features that can be globally enabled or disabled
 911- Setting: `features`
 912- Default:
 913
 914```json [settings]
 915{
 916  "features": {
 917    "edit_prediction_provider": "zed"
 918  }
 919}
 920```
 921
 922### Edit Prediction Provider
 923
 924- Description: Which edit prediction provider to use
 925- Setting: `edit_prediction_provider`
 926- Default: `"zed"`
 927
 928**Options**
 929
 9301. Use Zeta as the edit prediction provider:
 931
 932```json [settings]
 933{
 934  "features": {
 935    "edit_prediction_provider": "zed"
 936  }
 937}
 938```
 939
 9402. Use Copilot as the edit prediction provider:
 941
 942```json [settings]
 943{
 944  "features": {
 945    "edit_prediction_provider": "copilot"
 946  }
 947}
 948```
 949
 9503. Use Supermaven as the edit prediction provider:
 951
 952```json [settings]
 953{
 954  "features": {
 955    "edit_prediction_provider": "supermaven"
 956  }
 957}
 958```
 959
 9604. Turn off edit predictions across all providers
 961
 962```json [settings]
 963{
 964  "features": {
 965    "edit_prediction_provider": "none"
 966  }
 967}
 968```
 969
 970## Format On Save
 971
 972- Description: Whether or not to perform a buffer format before saving.
 973- Setting: `format_on_save`
 974- Default: `on`
 975
 976**Options**
 977
 9781. `on`, enables format on save obeying `formatter` setting:
 979
 980```json [settings]
 981{
 982  "format_on_save": "on"
 983}
 984```
 985
 9862. `off`, disables format on save:
 987
 988```json [settings]
 989{
 990  "format_on_save": "off"
 991}
 992```
 993
 994## Formatter
 995
 996- Description: How to perform a buffer format.
 997- Setting: `formatter`
 998- Default: `auto`
 999
1000**Options**
1001
10021. To use the current language server, use `"language_server"`:
1003
1004```json [settings]
1005{
1006  "formatter": "language_server"
1007}
1008```
1009
10102. 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):
1011
1012```json [settings]
1013{
1014  "formatter": {
1015    "external": {
1016      "command": "sed",
1017      "arguments": ["-e", "s/ *$//"]
1018    }
1019  }
1020}
1021```
1022
10233. 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.
1024
1025WARNING: `{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.
1026
1027```json [settings]
1028  "formatter": {
1029    "external": {
1030      "command": "prettier",
1031      "arguments": ["--stdin-filepath", "{buffer_path}"]
1032    }
1033  }
1034```
1035
10364. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1037
1038```json [settings]
1039{
1040  "formatter": [
1041    // Use ESLint's --fix:
1042    { "code_action": "source.fixAll.eslint" },
1043    // Organize imports on save:
1044    { "code_action": "source.organizeImports" }
1045  ]
1046}
1047```
1048
10495. Or to use multiple formatters consecutively, use an array of formatters:
1050
1051```json [settings]
1052{
1053  "formatter": [
1054    { "language_server": { "name": "rust-analyzer" } },
1055    {
1056      "external": {
1057        "command": "sed",
1058        "arguments": ["-e", "s/ *$//"]
1059      }
1060    }
1061  ]
1062}
1063```
1064
1065Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1066If any of the formatters fails, the subsequent ones will still be executed.
1067
1068## Auto close
1069
1070- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1071- Setting: `use_autoclose`
1072- Default: `true`
1073
1074**Options**
1075
1076`boolean` values
1077
1078## Always Treat Brackets As Autoclosed
1079
1080- Description: Controls how the editor handles the autoclosed characters.
1081- Setting: `always_treat_brackets_as_autoclosed`
1082- Default: `false`
1083
1084**Options**
1085
1086`boolean` values
1087
1088**Example**
1089
1090If the setting is set to `true`:
1091
10921. Enter in the editor: `)))`
10932. Move the cursor to the start: `^)))`
10943. Enter again: `)))`
1095
1096The result is still `)))` and not `))))))`, which is what it would be by default.
1097
1098## File Scan Exclusions
1099
1100- Setting: `file_scan_exclusions`
1101- 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`.
1102- Default:
1103
1104```json [settings]
1105"file_scan_exclusions": [
1106  "**/.git",
1107  "**/.svn",
1108  "**/.hg",
1109  "**/.jj",
1110  "**/CVS",
1111  "**/.DS_Store",
1112  "**/Thumbs.db",
1113  "**/.classpath",
1114  "**/.settings"
1115],
1116```
1117
1118Note, 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.
1119
1120## File Scan Inclusions
1121
1122- Setting: `file_scan_inclusions`
1123- 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.
1124- Default:
1125
1126```json [settings]
1127"file_scan_inclusions": [".env*"],
1128```
1129
1130## File Types
1131
1132- Setting: `file_types`
1133- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1134- Default:
1135
1136```json [settings]
1137"file_types": {
1138  "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1139  "Shell Script": [".env.*"]
1140}
1141```
1142
1143**Examples**
1144
1145To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1146
1147```json [settings]
1148{
1149  "file_types": {
1150    "C++": ["c"],
1151    "TOML": ["MyLockFile"],
1152    "Dockerfile": ["Dockerfile*"]
1153  }
1154}
1155```
1156
1157## Diagnostics
1158
1159- Description: Configuration for diagnostics-related features.
1160- Setting: `diagnostics`
1161- Default:
1162
1163```json [settings]
1164{
1165  "diagnostics": {
1166    "include_warnings": true,
1167    "inline": {
1168      "enabled": false
1169    },
1170    "update_with_cursor": false,
1171    "primary_only": false,
1172    "use_rendered": false
1173  }
1174}
1175```
1176
1177### Inline Diagnostics
1178
1179- Description: Whether or not to show diagnostics information inline.
1180- Setting: `inline`
1181- Default:
1182
1183```json [settings]
1184{
1185  "diagnostics": {
1186    "inline": {
1187      "enabled": false,
1188      "update_debounce_ms": 150,
1189      "padding": 4,
1190      "min_column": 0,
1191      "max_severity": null
1192    }
1193  }
1194}
1195```
1196
1197**Options**
1198
11991. Enable inline diagnostics.
1200
1201```json [settings]
1202{
1203  "diagnostics": {
1204    "inline": {
1205      "enabled": true
1206    }
1207  }
1208}
1209```
1210
12112. Delay diagnostic updates until some time after the last diagnostic update.
1212
1213```json [settings]
1214{
1215  "diagnostics": {
1216    "inline": {
1217      "enabled": true,
1218      "update_debounce_ms": 150
1219    }
1220  }
1221}
1222```
1223
12243. Set padding between the end of the source line and the start of the diagnostic.
1225
1226```json [settings]
1227{
1228  "diagnostics": {
1229    "inline": {
1230      "enabled": true,
1231      "padding": 4
1232    }
1233  }
1234}
1235```
1236
12374. Horizontally align inline diagnostics at the given column.
1238
1239```json [settings]
1240{
1241  "diagnostics": {
1242    "inline": {
1243      "enabled": true,
1244      "min_column": 80
1245    }
1246  }
1247}
1248```
1249
12505. Show only warning and error diagnostics.
1251
1252```json [settings]
1253{
1254  "diagnostics": {
1255    "inline": {
1256      "enabled": true,
1257      "max_severity": "warning"
1258    }
1259  }
1260}
1261```
1262
1263## Git
1264
1265- Description: Configuration for git-related features.
1266- Setting: `git`
1267- Default:
1268
1269```json [settings]
1270{
1271  "git": {
1272    "git_gutter": "tracked_files",
1273    "inline_blame": {
1274      "enabled": true
1275    },
1276    "branch_picker": {
1277      "show_author_name": true
1278    },
1279    "hunk_style": "staged_hollow"
1280  }
1281}
1282```
1283
1284### Git Gutter
1285
1286- Description: Whether or not to show the git gutter.
1287- Setting: `git_gutter`
1288- Default: `tracked_files`
1289
1290**Options**
1291
12921. Show git gutter in tracked files
1293
1294```json [settings]
1295{
1296  "git": {
1297    "git_gutter": "tracked_files"
1298  }
1299}
1300```
1301
13022. Hide git gutter
1303
1304```json [settings]
1305{
1306  "git": {
1307    "git_gutter": "hide"
1308  }
1309}
1310```
1311
1312### Gutter Debounce
1313
1314- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1315- Setting: `gutter_debounce`
1316- Default: `null`
1317
1318**Options**
1319
1320`integer` values representing milliseconds
1321
1322Example:
1323
1324```json [settings]
1325{
1326  "git": {
1327    "gutter_debounce": 100
1328  }
1329}
1330```
1331
1332### Inline Git Blame
1333
1334- Description: Whether or not to show git blame information inline, on the currently focused line.
1335- Setting: `inline_blame`
1336- Default:
1337
1338```json [settings]
1339{
1340  "git": {
1341    "inline_blame": {
1342      "enabled": true
1343    }
1344  }
1345}
1346```
1347
1348**Options**
1349
13501. Disable inline git blame:
1351
1352```json [settings]
1353{
1354  "git": {
1355    "inline_blame": {
1356      "enabled": false
1357    }
1358  }
1359}
1360```
1361
13622. Only show inline git blame after a delay (that starts after cursor stops moving):
1363
1364```json [settings]
1365{
1366  "git": {
1367    "inline_blame": {
1368      "delay_ms": 500
1369    }
1370  }
1371}
1372```
1373
13743. Show a commit summary next to the commit date and author:
1375
1376```json [settings]
1377{
1378  "git": {
1379    "inline_blame": {
1380      "show_commit_summary": true
1381    }
1382  }
1383}
1384```
1385
13864. Use this as the minimum column at which to display inline blame information:
1387
1388```json [settings]
1389{
1390  "git": {
1391    "inline_blame": {
1392      "min_column": 80
1393    }
1394  }
1395}
1396```
1397
13985. Set the padding between the end of the line and the inline blame hint, in ems:
1399
1400```json [settings]
1401{
1402  "git": {
1403    "inline_blame": {
1404      "padding": 10
1405    }
1406  }
1407}
1408```
1409
1410### Branch Picker
1411
1412- Description: Configuration related to the branch picker.
1413- Setting: `branch_picker`
1414- Default:
1415
1416```json [settings]
1417{
1418  "git": {
1419    "branch_picker": {
1420      "show_author_name": false
1421    }
1422  }
1423}
1424```
1425
1426**Options**
1427
14281. Show the author name in the branch picker:
1429
1430```json [settings]
1431{
1432  "git": {
1433    "branch_picker": {
1434      "show_author_name": true
1435    }
1436  }
1437}
1438```
1439
1440### Hunk Style
1441
1442- Description: What styling we should use for the diff hunks.
1443- Setting: `hunk_style`
1444- Default:
1445
1446```json [settings]
1447{
1448  "git": {
1449    "hunk_style": "staged_hollow"
1450  }
1451}
1452```
1453
1454**Options**
1455
14561. Show the staged hunks faded out and with a border:
1457
1458```json [settings]
1459{
1460  "git": {
1461    "hunk_style": "staged_hollow"
1462  }
1463}
1464```
1465
14662. Show unstaged hunks faded out and with a border:
1467
1468```json [settings]
1469{
1470  "git": {
1471    "hunk_style": "unstaged_hollow"
1472  }
1473}
1474```
1475
1476## Go to Definition Fallback
1477
1478- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
1479- Setting: `go_to_definition_fallback`
1480- Default: `"find_all_references"`
1481
1482**Options**
1483
14841. Do nothing:
1485
1486```json [settings]
1487{
1488  "go_to_definition_fallback": "none"
1489}
1490```
1491
14922. Find references for the same symbol (default):
1493
1494```json [settings]
1495{
1496  "go_to_definition_fallback": "find_all_references"
1497}
1498```
1499
1500## Hard Tabs
1501
1502- Description: Whether to indent lines using tab characters or multiple spaces.
1503- Setting: `hard_tabs`
1504- Default: `false`
1505
1506**Options**
1507
1508`boolean` values
1509
1510## Helix Mode
1511
1512- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](./helix.md) for more details.
1513- Setting: `helix_mode`
1514- Default: `false`
1515
1516**Options**
1517
1518`boolean` values
1519
1520## Indent Guides
1521
1522- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1523- Setting: `indent_guides`
1524- Default:
1525
1526```json [settings]
1527{
1528  "indent_guides": {
1529    "enabled": true,
1530    "line_width": 1,
1531    "active_line_width": 1,
1532    "coloring": "fixed",
1533    "background_coloring": "disabled"
1534  }
1535}
1536```
1537
1538**Options**
1539
15401. Disable indent guides
1541
1542```json [settings]
1543{
1544  "indent_guides": {
1545    "enabled": false
1546  }
1547}
1548```
1549
15502. Enable indent guides for a specific language.
1551
1552```json [settings]
1553{
1554  "languages": {
1555    "Python": {
1556      "indent_guides": {
1557        "enabled": true
1558      }
1559    }
1560  }
1561}
1562```
1563
15643. Enable indent aware coloring ("rainbow indentation").
1565   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.
1566
1567```json [settings]
1568{
1569  "indent_guides": {
1570    "enabled": true,
1571    "coloring": "indent_aware"
1572  }
1573}
1574```
1575
15764. Enable indent aware background coloring ("rainbow indentation").
1577   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.
1578
1579```json [settings]
1580{
1581  "indent_guides": {
1582    "enabled": true,
1583    "coloring": "indent_aware",
1584    "background_coloring": "indent_aware"
1585  }
1586}
1587```
1588
1589## Hover Popover Enabled
1590
1591- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1592- Setting: `hover_popover_enabled`
1593- Default: `true`
1594
1595**Options**
1596
1597`boolean` values
1598
1599## Hover Popover Delay
1600
1601- Description: Time to wait in milliseconds before showing the informational hover box.
1602- Setting: `hover_popover_delay`
1603- Default: `300`
1604
1605**Options**
1606
1607`integer` values representing milliseconds
1608
1609## Icon Theme
1610
1611- 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.
1612- Setting: `icon_theme`
1613- Default: `Zed (Default)`
1614
1615### Icon Theme Object
1616
1617- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1618- Setting: `icon_theme`
1619- Default:
1620
1621```json [settings]
1622"icon_theme": {
1623  "mode": "system",
1624  "dark": "Zed (Default)",
1625  "light": "Zed (Default)"
1626},
1627```
1628
1629### Mode
1630
1631- Description: Specify the icon theme mode.
1632- Setting: `mode`
1633- Default: `system`
1634
1635**Options**
1636
16371. Set the icon theme to dark mode
1638
1639```json [settings]
1640{
1641  "mode": "dark"
1642}
1643```
1644
16452. Set the icon theme to light mode
1646
1647```json [settings]
1648{
1649  "mode": "light"
1650}
1651```
1652
16533. Set the icon theme to system mode
1654
1655```json [settings]
1656{
1657  "mode": "system"
1658}
1659```
1660
1661### Dark
1662
1663- Description: The name of the dark icon theme.
1664- Setting: `dark`
1665- Default: `Zed (Default)`
1666
1667**Options**
1668
1669Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
1670
1671### Light
1672
1673- Description: The name of the light icon theme.
1674- Setting: `light`
1675- Default: `Zed (Default)`
1676
1677**Options**
1678
1679Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
1680
1681## Image Viewer
1682
1683- Description: Settings for image viewer functionality
1684- Setting: `image_viewer`
1685- Default:
1686
1687```json [settings]
1688{
1689  "image_viewer": {
1690    "unit": "binary"
1691  }
1692}
1693```
1694
1695**Options**
1696
1697### Unit
1698
1699- Description: The unit for image file sizes
1700- Setting: `unit`
1701- Default: `"binary"`
1702
1703**Options**
1704
17051. Use binary units (KiB, MiB):
1706
1707```json [settings]
1708{
1709  "image_viewer": {
1710    "unit": "binary"
1711  }
1712}
1713```
1714
17152. Use decimal units (KB, MB):
1716
1717```json [settings]
1718{
1719  "image_viewer": {
1720    "unit": "decimal"
1721  }
1722}
1723```
1724
1725## Inlay hints
1726
1727- Description: Configuration for displaying extra text with hints in the editor.
1728- Setting: `inlay_hints`
1729- Default:
1730
1731```json [settings]
1732"inlay_hints": {
1733  "enabled": false,
1734  "show_type_hints": true,
1735  "show_parameter_hints": true,
1736  "show_other_hints": true,
1737  "show_background": false,
1738  "edit_debounce_ms": 700,
1739  "scroll_debounce_ms": 50,
1740  "toggle_on_modifiers_press": null
1741}
1742```
1743
1744**Options**
1745
1746Inlay hints querying consists of two parts: editor (client) and LSP server.
1747With 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.
1748At 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.
1749
1750The following languages have inlay hints preconfigured by Zed:
1751
1752- [Go](https://docs.zed.dev/languages/go)
1753- [Rust](https://docs.zed.dev/languages/rust)
1754- [Svelte](https://docs.zed.dev/languages/svelte)
1755- [TypeScript](https://docs.zed.dev/languages/typescript)
1756
1757Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1758
1759Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1760Settings-related hint updates are not debounced.
1761
1762All possible config values for `toggle_on_modifiers_press` are:
1763
1764```json [settings]
1765"inlay_hints": {
1766  "toggle_on_modifiers_press": {
1767    "control": true,
1768    "shift": true,
1769    "alt": true,
1770    "platform": true,
1771    "function": true
1772  }
1773}
1774```
1775
1776Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
1777
1778## Journal
1779
1780- Description: Configuration for the journal.
1781- Setting: `journal`
1782- Default:
1783
1784```json [settings]
1785"journal": {
1786  "path": "~",
1787  "hour_format": "hour12"
1788}
1789```
1790
1791### Path
1792
1793- Description: The path of the directory where journal entries are stored.
1794- Setting: `path`
1795- Default: `~`
1796
1797**Options**
1798
1799`string` values
1800
1801### Hour Format
1802
1803- Description: The format to use for displaying hours in the journal.
1804- Setting: `hour_format`
1805- Default: `hour12`
1806
1807**Options**
1808
18091. 12-hour format:
1810
1811```json [settings]
1812{
1813  "hour_format": "hour12"
1814}
1815```
1816
18172. 24-hour format:
1818
1819```json [settings]
1820{
1821  "hour_format": "hour24"
1822}
1823```
1824
1825## JSX Tag Auto Close
1826
1827- Description: Whether to automatically close JSX tags
1828- Setting: `jsx_tag_auto_close`
1829- Default:
1830
1831```json [settings]
1832{
1833  "jsx_tag_auto_close": {
1834    "enabled": true
1835  }
1836}
1837```
1838
1839**Options**
1840
1841- `enabled`: Whether to enable automatic JSX tag closing
1842
1843## Languages
1844
1845- Description: Configuration for specific languages.
1846- Setting: `languages`
1847- Default: `null`
1848
1849**Options**
1850
1851To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1852
1853```json [settings]
1854"languages": {
1855  "C": {
1856    "format_on_save": "off",
1857    "preferred_line_length": 64,
1858    "soft_wrap": "preferred_line_length"
1859  },
1860  "JSON": {
1861    "tab_size": 4
1862  }
1863}
1864```
1865
1866The following settings can be overridden for each specific language:
1867
1868- [`enable_language_server`](#enable-language-server)
1869- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
1870- [`format_on_save`](#format-on-save)
1871- [`formatter`](#formatter)
1872- [`hard_tabs`](#hard-tabs)
1873- [`preferred_line_length`](#preferred-line-length)
1874- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
1875- [`show_edit_predictions`](#show-edit-predictions)
1876- [`show_whitespaces`](#show-whitespaces)
1877- [`whitespace_map`](#whitespace-map)
1878- [`soft_wrap`](#soft-wrap)
1879- [`tab_size`](#tab-size)
1880- [`use_autoclose`](#use-autoclose)
1881- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
1882
1883These values take in the same options as the root-level settings with the same name.
1884
1885## Language Models
1886
1887- Description: Configuration for language model providers
1888- Setting: `language_models`
1889- Default:
1890
1891```json [settings]
1892{
1893  "language_models": {
1894    "anthropic": {
1895      "api_url": "https://api.anthropic.com"
1896    },
1897    "google": {
1898      "api_url": "https://generativelanguage.googleapis.com"
1899    },
1900    "ollama": {
1901      "api_url": "http://localhost:11434"
1902    },
1903    "openai": {
1904      "api_url": "https://api.openai.com/v1"
1905    }
1906  }
1907}
1908```
1909
1910**Options**
1911
1912Configuration for various AI model providers including API URLs and authentication settings.
1913
1914## Line Indicator Format
1915
1916- Description: Format for line indicator in the status bar
1917- Setting: `line_indicator_format`
1918- Default: `"short"`
1919
1920**Options**
1921
19221. Short format:
1923
1924```json [settings]
1925{
1926  "line_indicator_format": "short"
1927}
1928```
1929
19302. Long format:
1931
1932```json [settings]
1933{
1934  "line_indicator_format": "long"
1935}
1936```
1937
1938## Linked Edits
1939
1940- Description: Whether to perform linked edits of associated ranges, if the language server supports it. For example, when editing opening `<html>` tag, the contents of the closing `</html>` tag will be edited as well.
1941- Setting: `linked_edits`
1942- Default: `true`
1943
1944**Options**
1945
1946`boolean` values
1947
1948## LSP Document Colors
1949
1950- Description: Whether to show document color information from the language server
1951- Setting: `lsp_document_colors`
1952- Default: `true`
1953
1954**Options**
1955
1956`boolean` values
1957
1958## Max Tabs
1959
1960- Description: Maximum number of tabs to show in the tab bar
1961- Setting: `max_tabs`
1962- Default: `null`
1963
1964**Options**
1965
1966Positive `integer` values or `null` for unlimited tabs
1967
1968## Middle Click Paste (Linux only)
1969
1970- Description: Enable middle-click paste on Linux
1971- Setting: `middle_click_paste`
1972- Default: `true`
1973
1974**Options**
1975
1976`boolean` values
1977
1978## Multi Cursor Modifier
1979
1980- Description: Determines the modifier to be used to add multiple cursors with the mouse. The open hover link mouse gestures will adapt such that it do not conflict with the multicursor modifier.
1981- Setting: `multi_cursor_modifier`
1982- Default: `alt`
1983
1984**Options**
1985
19861. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
1987
1988```json [settings]
1989{
1990  "multi_cursor_modifier": "alt"
1991}
1992```
1993
19942. Maps `Control` on Linux and Windows and to `Command` on macOS:
1995
1996```json [settings]
1997{
1998  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
1999}
2000```
2001
2002## Node
2003
2004- Description: Configuration for Node.js integration
2005- Setting: `node`
2006- Default:
2007
2008```json [settings]
2009{
2010  "node": {
2011    "ignore_system_version": false,
2012    "path": null,
2013    "npm_path": null
2014  }
2015}
2016```
2017
2018**Options**
2019
2020- `ignore_system_version`: Whether to ignore the system Node.js version
2021- `path`: Custom path to Node.js binary
2022- `npm_path`: Custom path to npm binary
2023
2024## Network Proxy
2025
2026- Description: Configure a network proxy for Zed.
2027- Setting: `proxy`
2028- Default: `null`
2029
2030**Options**
2031
2032The proxy setting must contain a URL to the proxy.
2033
2034The following URI schemes are supported:
2035
2036- `http`
2037- `https`
2038- `socks4` - SOCKS4 proxy with local DNS
2039- `socks4a` - SOCKS4 proxy with remote DNS
2040- `socks5` - SOCKS5 proxy with local DNS
2041- `socks5h` - SOCKS5 proxy with remote DNS
2042
2043`http` will be used when no scheme is specified.
2044
2045By 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`, `no_proxy` and `NO_PROXY`.
2046
2047For example, to set an `http` proxy, add the following to your settings:
2048
2049```json [settings]
2050{
2051  "proxy": "http://127.0.0.1:10809"
2052}
2053```
2054
2055Or to set a `socks5` proxy:
2056
2057```json [settings]
2058{
2059  "proxy": "socks5h://localhost:10808"
2060}
2061```
2062
2063If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
2064
2065## On Last Window Closed
2066
2067- Description: What to do when the last window is closed
2068- Setting: `on_last_window_closed`
2069- Default: `"platform_default"`
2070
2071**Options**
2072
20731. Use platform default behavior:
2074
2075```json [settings]
2076{
2077  "on_last_window_closed": "platform_default"
2078}
2079```
2080
20812. Always quit the application:
2082
2083```json [settings]
2084{
2085  "on_last_window_closed": "quit_app"
2086}
2087```
2088
2089## Profiles
2090
2091- Description: Configuration profiles that can be applied on top of existing settings
2092- Setting: `profiles`
2093- Default: `{}`
2094
2095**Options**
2096
2097Configuration object for defining settings profiles. Example:
2098
2099```json [settings]
2100{
2101  "profiles": {
2102    "presentation": {
2103      "buffer_font_size": 20,
2104      "ui_font_size": 18,
2105      "theme": "One Light"
2106    }
2107  }
2108}
2109```
2110
2111## Preview tabs
2112
2113- Description:
2114  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. \
2115   There are several ways to convert a preview tab into a regular tab:
2116
2117  - Double-clicking on the file
2118  - Double-clicking on the tab header
2119  - Using the {#action project_panel::OpenPermanent} action
2120  - Editing the file
2121  - Dragging the file to a different pane
2122
2123- Setting: `preview_tabs`
2124- Default:
2125
2126```json [settings]
2127"preview_tabs": {
2128  "enabled": true,
2129  "enable_preview_from_file_finder": false,
2130  "enable_preview_from_code_navigation": false,
2131}
2132```
2133
2134### Enable preview from file finder
2135
2136- Description: Determines whether to open files in preview mode when selected from the file finder.
2137- Setting: `enable_preview_from_file_finder`
2138- Default: `false`
2139
2140**Options**
2141
2142`boolean` values
2143
2144### Enable preview from code navigation
2145
2146- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2147- Setting: `enable_preview_from_code_navigation`
2148- Default: `false`
2149
2150**Options**
2151
2152`boolean` values
2153
2154## File Finder
2155
2156### File Icons
2157
2158- Description: Whether to show file icons in the file finder.
2159- Setting: `file_icons`
2160- Default: `true`
2161
2162### Modal Max Width
2163
2164- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2165- Setting: `modal_max_width`
2166- Default: `small`
2167
2168### Skip Focus For Active In Search
2169
2170- Description: Determines whether the file finder should skip focus for the active file in search results.
2171- Setting: `skip_focus_for_active_in_search`
2172- Default: `true`
2173
2174## Pane Split Direction Horizontal
2175
2176- Description: The direction that you want to split panes horizontally
2177- Setting: `pane_split_direction_horizontal`
2178- Default: `"up"`
2179
2180**Options**
2181
21821. Split upward:
2183
2184```json [settings]
2185{
2186  "pane_split_direction_horizontal": "up"
2187}
2188```
2189
21902. Split downward:
2191
2192```json [settings]
2193{
2194  "pane_split_direction_horizontal": "down"
2195}
2196```
2197
2198## Pane Split Direction Vertical
2199
2200- Description: The direction that you want to split panes vertically
2201- Setting: `pane_split_direction_vertical`
2202- Default: `"left"`
2203
2204**Options**
2205
22061. Split to the left:
2207
2208```json [settings]
2209{
2210  "pane_split_direction_vertical": "left"
2211}
2212```
2213
22142. Split to the right:
2215
2216```json [settings]
2217{
2218  "pane_split_direction_vertical": "right"
2219}
2220```
2221
2222## Preferred Line Length
2223
2224- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2225- Setting: `preferred_line_length`
2226- Default: `80`
2227
2228**Options**
2229
2230`integer` values
2231
2232## Private Files
2233
2234- Description: Globs to match against file paths to determine if a file is private
2235- Setting: `private_files`
2236- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
2237
2238**Options**
2239
2240List of `string` glob patterns
2241
2242## Projects Online By Default
2243
2244- Description: Whether or not to show the online projects view by default.
2245- Setting: `projects_online_by_default`
2246- Default: `true`
2247
2248**Options**
2249
2250`boolean` values
2251
2252## Read SSH Config
2253
2254- Description: Whether to read SSH configuration files
2255- Setting: `read_ssh_config`
2256- Default: `true`
2257
2258**Options**
2259
2260`boolean` values
2261
2262## Redact Private Values
2263
2264- Description: Hide the values of variables from visual display in private files
2265- Setting: `redact_private_values`
2266- Default: `false`
2267
2268**Options**
2269
2270`boolean` values
2271
2272## Relative Line Numbers
2273
2274- Description: Whether to show relative line numbers in the gutter
2275- Setting: `relative_line_numbers`
2276- Default: `false`
2277
2278**Options**
2279
2280`boolean` values
2281
2282## Remove Trailing Whitespace On Save
2283
2284- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2285- Setting: `remove_trailing_whitespace_on_save`
2286- Default: `true`
2287
2288**Options**
2289
2290`boolean` values
2291
2292## Resize All Panels In Dock
2293
2294- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
2295- Setting: `resize_all_panels_in_dock`
2296- Default: `["left"]`
2297
2298**Options**
2299
2300List of strings containing any combination of:
2301
2302- `"left"`: Resize left dock panels together
2303- `"right"`: Resize right dock panels together
2304- `"bottom"`: Resize bottom dock panels together
2305
2306## Restore on File Reopen
2307
2308- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
2309- Setting: `restore_on_file_reopen`
2310- Default: `true`
2311
2312**Options**
2313
2314`boolean` values
2315
2316## Restore on Startup
2317
2318- Description: Controls session restoration on startup.
2319- Setting: `restore_on_startup`
2320- Default: `last_session`
2321
2322**Options**
2323
23241. Restore all workspaces that were open when quitting Zed:
2325
2326```json [settings]
2327{
2328  "restore_on_startup": "last_session"
2329}
2330```
2331
23322. Restore the workspace that was closed last:
2333
2334```json [settings]
2335{
2336  "restore_on_startup": "last_workspace"
2337}
2338```
2339
23403. Always start with an empty editor:
2341
2342```json [settings]
2343{
2344  "restore_on_startup": "none"
2345}
2346```
2347
2348## Scroll Beyond Last Line
2349
2350- Description: Whether the editor will scroll beyond the last line
2351- Setting: `scroll_beyond_last_line`
2352- Default: `"one_page"`
2353
2354**Options**
2355
23561. Scroll one page beyond the last line by one page:
2357
2358```json [settings]
2359{
2360  "scroll_beyond_last_line": "one_page"
2361}
2362```
2363
23642. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
2365
2366```json [settings]
2367{
2368  "scroll_beyond_last_line": "vertical_scroll_margin"
2369}
2370```
2371
23723. The editor will not scroll beyond the last line:
2373
2374```json [settings]
2375{
2376  "scroll_beyond_last_line": "off"
2377}
2378```
2379
2380**Options**
2381
2382`boolean` values
2383
2384## Scroll Sensitivity
2385
2386- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
2387- Setting: `scroll_sensitivity`
2388- Default: `1.0`
2389
2390**Options**
2391
2392Positive `float` values
2393
2394### Fast Scroll Sensitivity
2395
2396- Description: Scroll sensitivity multiplier for fast scrolling. This multiplier is applied to both the horizontal and vertical delta values while scrolling. Fast scrolling happens when a user holds the alt or option key while scrolling.
2397- Setting: `fast_scroll_sensitivity`
2398- Default: `4.0`
2399
2400**Options**
2401
2402Positive `float` values
2403
2404### Horizontal Scroll Margin
2405
2406- Description: The number of characters to keep on either side when scrolling with the mouse
2407- Setting: `horizontal_scroll_margin`
2408- Default: `5`
2409
2410**Options**
2411
2412Non-negative `integer` values
2413
2414### Vertical Scroll Margin
2415
2416- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
2417- Setting: `vertical_scroll_margin`
2418- Default: `3`
2419
2420**Options**
2421
2422Non-negative `integer` values
2423
2424## Search
2425
2426- Description: Search options to enable by default when opening new project and buffer searches.
2427- Setting: `search`
2428- Default:
2429
2430```json [settings]
2431"search": {
2432  "whole_word": false,
2433  "case_sensitive": false,
2434  "include_ignored": false,
2435  "regex": false
2436},
2437```
2438
2439## Search Wrap
2440
2441- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
2442- Setting: `search_wrap`
2443- Default: `true`
2444
2445## Seed Search Query From Cursor
2446
2447- Description: When to populate a new search's query based on the text under the cursor.
2448- Setting: `seed_search_query_from_cursor`
2449- Default: `always`
2450
2451**Options**
2452
24531. `always` always populate the search query with the word under the cursor
24542. `selection` only populate the search query when there is text selected
24553. `never` never populate the search query
2456
2457## Use Smartcase Search
2458
2459- 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. \
2460  This applies to both in-file searches and project-wide searches.
2461- Setting: `use_smartcase_search`
2462- Default: `false`
2463
2464**Options**
2465
2466`boolean` values
2467
2468Examples:
2469
2470- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2471- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2472
2473## Show Call Status Icon
2474
2475- Description: Whether or not to show the call status icon in the status bar.
2476- Setting: `show_call_status_icon`
2477- Default: `true`
2478
2479**Options**
2480
2481`boolean` values
2482
2483## Completions
2484
2485- Description: Controls how completions are processed for this language.
2486- Setting: `completions`
2487- Default:
2488
2489```json [settings]
2490{
2491  "completions": {
2492    "words": "fallback",
2493    "words_min_length": 3,
2494    "lsp": true,
2495    "lsp_fetch_timeout_ms": 0,
2496    "lsp_insert_mode": "replace_suffix"
2497  }
2498}
2499```
2500
2501### Words
2502
2503- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2504- Setting: `words`
2505- Default: `fallback`
2506
2507**Options**
2508
25091. `enabled` - Always fetch document's words for completions along with LSP completions
25102. `fallback` - Only if LSP response errors or times out, use document's words to show completions
25113. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2512
2513### Min Words Query Length
2514
2515- Description: Minimum number of characters required to automatically trigger word-based completions.
2516  Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
2517- Setting: `words_min_length`
2518- Default: `3`
2519
2520**Options**
2521
2522Positive integer values
2523
2524### LSP
2525
2526- Description: Whether to fetch LSP completions or not.
2527- Setting: `lsp`
2528- Default: `true`
2529
2530**Options**
2531
2532`boolean` values
2533
2534### LSP Fetch Timeout (ms)
2535
2536- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2537- Setting: `lsp_fetch_timeout_ms`
2538- Default: `0`
2539
2540**Options**
2541
2542`integer` values representing milliseconds
2543
2544### LSP Insert Mode
2545
2546- Description: Controls what range to replace when accepting LSP completions.
2547- Setting: `lsp_insert_mode`
2548- Default: `replace_suffix`
2549
2550**Options**
2551
25521. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
25532. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
25543. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
25554. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2556
2557## Show Completions On Input
2558
2559- Description: Whether or not to show completions as you type.
2560- Setting: `show_completions_on_input`
2561- Default: `true`
2562
2563**Options**
2564
2565`boolean` values
2566
2567## Show Completion Documentation
2568
2569- Description: Whether to display inline and alongside documentation for items in the completions menu.
2570- Setting: `show_completion_documentation`
2571- Default: `true`
2572
2573**Options**
2574
2575`boolean` values
2576
2577## Show Edit Predictions
2578
2579- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2580- Setting: `show_edit_predictions`
2581- Default: `true`
2582
2583**Options**
2584
2585`boolean` values
2586
2587## Show Whitespaces
2588
2589- Description: Whether or not to render whitespace characters in the editor.
2590- Setting: `show_whitespaces`
2591- Default: `selection`
2592
2593**Options**
2594
25951. `all`
25962. `selection`
25973. `none`
25984. `boundary`
2599
2600## Whitespace Map
2601
2602- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
2603- Setting: `whitespace_map`
2604- Default:
2605
2606```json [settings]
2607{
2608  "whitespace_map": {
2609    "space": "•",
2610    "tab": "→"
2611  }
2612}
2613```
2614
2615## Soft Wrap
2616
2617- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2618- Setting: `soft_wrap`
2619- Default: `none`
2620
2621**Options**
2622
26231. `none` to avoid wrapping generally, unless the line is too long
26242. `prefer_line` (deprecated, same as `none`)
26253. `editor_width` to wrap lines that overflow the editor width
26264. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
26275. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2628
2629## Show Wrap Guides
2630
2631- Description: Whether to show wrap guides (vertical rulers) in the editor. Setting this to true will show a guide at the 'preferred_line_length' value if 'soft_wrap' is set to 'preferred_line_length', and will show any additional guides as specified by the 'wrap_guides' setting.
2632- Setting: `show_wrap_guides`
2633- Default: `true`
2634
2635**Options**
2636
2637`boolean` values
2638
2639## Use On Type Format
2640
2641- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
2642- Setting: `use_on_type_format`
2643- Default: `true`
2644
2645**Options**
2646
2647`boolean` values
2648
2649## Use Auto Surround
2650
2651- Description: Whether to automatically surround selected text when typing opening parenthesis, bracket, brace, single or double quote characters. For example, when you select text and type (, Zed will surround the text with ().
2652- Setting: `use_auto_surround`
2653- Default: `true`
2654
2655**Options**
2656
2657`boolean` values
2658
2659## Use System Path Prompts
2660
2661- Description: Whether to use the system provided dialogs for Open and Save As. When set to false, Zed will use the built-in keyboard-first pickers.
2662- Setting: `use_system_path_prompts`
2663- Default: `true`
2664
2665**Options**
2666
2667`boolean` values
2668
2669## Use System Prompts
2670
2671- Description: Whether to use the system provided dialogs for prompts, such as confirmation prompts. When set to false, Zed will use its built-in prompts. Note that on Linux, this option is ignored and Zed will always use the built-in prompts.
2672- Setting: `use_system_prompts`
2673- Default: `true`
2674
2675**Options**
2676
2677`boolean` values
2678
2679## Wrap Guides (Vertical Rulers)
2680
2681- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2682- Setting: `wrap_guides`
2683- Default: []
2684
2685**Options**
2686
2687List of `integer` column numbers
2688
2689## Tab Size
2690
2691- Description: The number of spaces to use for each tab character.
2692- Setting: `tab_size`
2693- Default: `4`
2694
2695**Options**
2696
2697`integer` values
2698
2699## Tasks
2700
2701- Description: Configuration for tasks that can be run within Zed
2702- Setting: `tasks`
2703- Default:
2704
2705```json [settings]
2706{
2707  "tasks": {
2708    "variables": {},
2709    "enabled": true,
2710    "prefer_lsp": false
2711  }
2712}
2713```
2714
2715**Options**
2716
2717- `variables`: Custom variables for task configuration
2718- `enabled`: Whether tasks are enabled
2719- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
2720
2721## Telemetry
2722
2723- Description: Control what info is collected by Zed.
2724- Setting: `telemetry`
2725- Default:
2726
2727```json [settings]
2728"telemetry": {
2729  "diagnostics": true,
2730  "metrics": true
2731},
2732```
2733
2734**Options**
2735
2736### Diagnostics
2737
2738- Description: Setting for sending debug-related data, such as crash reports.
2739- Setting: `diagnostics`
2740- Default: `true`
2741
2742**Options**
2743
2744`boolean` values
2745
2746### Metrics
2747
2748- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2749- Setting: `metrics`
2750- Default: `true`
2751
2752**Options**
2753
2754`boolean` values
2755
2756## Terminal
2757
2758- Description: Configuration for the terminal.
2759- Setting: `terminal`
2760- Default:
2761
2762```json [settings]
2763{
2764  "terminal": {
2765    "alternate_scroll": "off",
2766    "blinking": "terminal_controlled",
2767    "copy_on_select": false,
2768    "keep_selection_on_copy": true,
2769    "dock": "bottom",
2770    "default_width": 640,
2771    "default_height": 320,
2772    "detect_venv": {
2773      "on": {
2774        "directories": [".env", "env", ".venv", "venv"],
2775        "activate_script": "default"
2776      }
2777    },
2778    "env": {},
2779    "font_family": null,
2780    "font_features": null,
2781    "font_size": null,
2782    "line_height": "comfortable",
2783    "minimum_contrast": 45,
2784    "option_as_meta": false,
2785    "button": true,
2786    "shell": "system",
2787    "toolbar": {
2788      "breadcrumbs": false
2789    },
2790    "working_directory": "current_project_directory",
2791    "scrollbar": {
2792      "show": null
2793    }
2794  }
2795}
2796```
2797
2798### Terminal: Dock
2799
2800- Description: Control the position of the dock
2801- Setting: `dock`
2802- Default: `bottom`
2803
2804**Options**
2805
2806`"bottom"`, `"left"` or `"right"`
2807
2808### Terminal: Alternate Scroll
2809
2810- 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.
2811- Setting: `alternate_scroll`
2812- Default: `off`
2813
2814**Options**
2815
28161. Default alternate scroll mode to off
2817
2818```json [settings]
2819{
2820  "terminal": {
2821    "alternate_scroll": "off"
2822  }
2823}
2824```
2825
28262. Default alternate scroll mode to on
2827
2828```json [settings]
2829{
2830  "terminal": {
2831    "alternate_scroll": "on"
2832  }
2833}
2834```
2835
2836### Terminal: Blinking
2837
2838- Description: Set the cursor blinking behavior in the terminal
2839- Setting: `blinking`
2840- Default: `terminal_controlled`
2841
2842**Options**
2843
28441. Never blink the cursor, ignore the terminal mode
2845
2846```json [settings]
2847{
2848  "terminal": {
2849    "blinking": "off"
2850  }
2851}
2852```
2853
28542. Default the cursor blink to off, but allow the terminal to turn blinking on
2855
2856```json [settings]
2857{
2858  "terminal": {
2859    "blinking": "terminal_controlled"
2860  }
2861}
2862```
2863
28643. Always blink the cursor, ignore the terminal mode
2865
2866```json [settings]
2867{
2868  "terminal": {
2869    "blinking": "on"
2870  }
2871}
2872```
2873
2874### Terminal: Copy On Select
2875
2876- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2877- Setting: `copy_on_select`
2878- Default: `false`
2879
2880**Options**
2881
2882`boolean` values
2883
2884**Example**
2885
2886```json [settings]
2887{
2888  "terminal": {
2889    "copy_on_select": true
2890  }
2891}
2892```
2893
2894### Terminal: Cursor Shape
2895
2896- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
2897- Setting: `cursor_shape`
2898- Default: `null` (defaults to block)
2899
2900**Options**
2901
29021. A block that surrounds the following character
2903
2904```json [settings]
2905{
2906  "terminal": {
2907    "cursor_shape": "block"
2908  }
2909}
2910```
2911
29122. A vertical bar
2913
2914```json [settings]
2915{
2916  "terminal": {
2917    "cursor_shape": "bar"
2918  }
2919}
2920```
2921
29223. An underline / underscore that runs along the following character
2923
2924```json [settings]
2925{
2926  "terminal": {
2927    "cursor_shape": "underline"
2928  }
2929}
2930```
2931
29324. A box drawn around the following character
2933
2934```json [settings]
2935{
2936  "terminal": {
2937    "cursor_shape": "hollow"
2938  }
2939}
2940```
2941
2942### Terminal: Keep Selection On Copy
2943
2944- Description: Whether or not to keep the selection in the terminal after copying text.
2945- Setting: `keep_selection_on_copy`
2946- Default: `true`
2947
2948**Options**
2949
2950`boolean` values
2951
2952**Example**
2953
2954```json [settings]
2955{
2956  "terminal": {
2957    "keep_selection_on_copy": false
2958  }
2959}
2960```
2961
2962### Terminal: Env
2963
2964- 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
2965- Setting: `env`
2966- Default: `{}`
2967
2968**Example**
2969
2970```json [settings]
2971{
2972  "terminal": {
2973    "env": {
2974      "ZED": "1",
2975      "KEY": "value1:value2"
2976    }
2977  }
2978}
2979```
2980
2981### Terminal: Font Size
2982
2983- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2984- Setting: `font_size`
2985- Default: `null`
2986
2987**Options**
2988
2989`integer` values
2990
2991```json [settings]
2992{
2993  "terminal": {
2994    "font_size": 15
2995  }
2996}
2997```
2998
2999### Terminal: Font Family
3000
3001- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
3002- Setting: `font_family`
3003- Default: `null`
3004
3005**Options**
3006
3007The name of any font family installed on the user's system
3008
3009```json [settings]
3010{
3011  "terminal": {
3012    "font_family": "Berkeley Mono"
3013  }
3014}
3015```
3016
3017### Terminal: Font Features
3018
3019- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
3020- Setting: `font_features`
3021- Default: `null`
3022- Platform: macOS and Windows.
3023
3024**Options**
3025
3026See Buffer Font Features
3027
3028```json [settings]
3029{
3030  "terminal": {
3031    "font_features": {
3032      "calt": false
3033      // See Buffer Font Features for more features
3034    }
3035  }
3036}
3037```
3038
3039### Terminal: Line Height
3040
3041- Description: Set the terminal's line height.
3042- Setting: `line_height`
3043- Default: `standard`
3044
3045**Options**
3046
30471. Use a line height that's `comfortable` for reading, 1.618.
3048
3049```json [settings]
3050{
3051  "terminal": {
3052    "line_height": "comfortable"
3053  }
3054}
3055```
3056
30572. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
3058
3059```json [settings]
3060{
3061  "terminal": {
3062    "line_height": "standard"
3063  }
3064}
3065```
3066
30673.  Use a custom line height.
3068
3069```json [settings]
3070{
3071  "terminal": {
3072    "line_height": {
3073      "custom": 2
3074    }
3075  }
3076}
3077```
3078
3079### Terminal: Minimum Contrast
3080
3081- Description: Controls the minimum contrast between foreground and background colors in the terminal. Uses the APCA (Accessible Perceptual Contrast Algorithm) for color adjustments. Set this to 0 to disable this feature.
3082- Setting: `minimum_contrast`
3083- Default: `45`
3084
3085**Options**
3086
3087`integer` values from 0 to 106. Common recommended values:
3088
3089- `0`: No contrast adjustment
3090- `45`: Minimum for large fluent text (default)
3091- `60`: Minimum for other content text
3092- `75`: Minimum for body text
3093- `90`: Preferred for body text
3094
3095```json [settings]
3096{
3097  "terminal": {
3098    "minimum_contrast": 45
3099  }
3100}
3101```
3102
3103### Terminal: Option As Meta
3104
3105- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
3106- Setting: `option_as_meta`
3107- Default: `false`
3108
3109**Options**
3110
3111`boolean` values
3112
3113```json [settings]
3114{
3115  "terminal": {
3116    "option_as_meta": true
3117  }
3118}
3119```
3120
3121### Terminal: Shell
3122
3123- Description: What shell to use when launching the terminal.
3124- Setting: `shell`
3125- Default: `system`
3126
3127**Options**
3128
31291. Use the system's default terminal configuration (usually the `/etc/passwd` file).
3130
3131```json [settings]
3132{
3133  "terminal": {
3134    "shell": "system"
3135  }
3136}
3137```
3138
31392. A program to launch:
3140
3141```json [settings]
3142{
3143  "terminal": {
3144    "shell": {
3145      "program": "sh"
3146    }
3147  }
3148}
3149```
3150
31513. A program with arguments:
3152
3153```json [settings]
3154{
3155  "terminal": {
3156    "shell": {
3157      "with_arguments": {
3158        "program": "/bin/bash",
3159        "args": ["--login"]
3160      }
3161    }
3162  }
3163}
3164```
3165
3166## Terminal: Detect Virtual Environments {#terminal-detect_venv}
3167
3168- 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.
3169- Setting: `detect_venv`
3170- Default:
3171
3172```json [settings]
3173{
3174  "terminal": {
3175    "detect_venv": {
3176      "on": {
3177        // Default directories to search for virtual environments, relative
3178        // to the current working directory. We recommend overriding this
3179        // in your project's settings, rather than globally.
3180        "directories": [".env", "env", ".venv", "venv"],
3181        // Can also be `csh`, `fish`, and `nushell`
3182        "activate_script": "default"
3183      }
3184    }
3185  }
3186}
3187```
3188
3189Disable with:
3190
3191```json [settings]
3192{
3193  "terminal": {
3194    "detect_venv": "off"
3195  }
3196}
3197```
3198
3199## Terminal: Toolbar
3200
3201- Description: Whether or not to show various elements in the terminal toolbar.
3202- Setting: `toolbar`
3203- Default:
3204
3205```json [settings]
3206{
3207  "terminal": {
3208    "toolbar": {
3209      "breadcrumbs": false
3210    }
3211  }
3212}
3213```
3214
3215**Options**
3216
3217At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
3218
3219If the terminal title is empty, the breadcrumbs won't be shown.
3220
3221The shell running in the terminal needs to be configured to emit the title.
3222
3223Example command to set the title: `echo -e "\e]2;New Title\007";`
3224
3225### Terminal: Button
3226
3227- Description: Control to show or hide the terminal button in the status bar
3228- Setting: `button`
3229- Default: `true`
3230
3231**Options**
3232
3233`boolean` values
3234
3235```json [settings]
3236{
3237  "terminal": {
3238    "button": false
3239  }
3240}
3241```
3242
3243### Terminal: Working Directory
3244
3245- Description: What working directory to use when launching the terminal.
3246- Setting: `working_directory`
3247- Default: `"current_project_directory"`
3248
3249**Options**
3250
32511. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
3252
3253```json [settings]
3254{
3255  "terminal": {
3256    "working_directory": "current_project_directory"
3257  }
3258}
3259```
3260
32612. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
3262
3263```json [settings]
3264{
3265  "terminal": {
3266    "working_directory": "first_project_directory"
3267  }
3268}
3269```
3270
32713. Always use this platform's home directory (if we can find it)
3272
3273```json [settings]
3274{
3275  "terminal": {
3276    "working_directory": "always_home"
3277  }
3278}
3279```
3280
32814. 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.
3282
3283```json [settings]
3284{
3285  "terminal": {
3286    "working_directory": {
3287      "always": {
3288        "directory": "~/zed/projects/"
3289      }
3290    }
3291  }
3292}
3293```
3294
3295## REPL
3296
3297- Description: Repl settings.
3298- Setting: `repl`
3299- Default:
3300
3301```json [settings]
3302"repl": {
3303  // Maximum number of columns to keep in REPL's scrollback buffer.
3304  // Clamped with [20, 512] range.
3305  "max_columns": 128,
3306  // Maximum number of lines to keep in REPL's scrollback buffer.
3307  // Clamped with [4, 256] range.
3308  "max_lines": 32
3309},
3310```
3311
3312## Theme
3313
3314- 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.
3315- Setting: `theme`
3316- Default: `One Dark`
3317
3318### Theme Object
3319
3320- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
3321- Setting: `theme`
3322- Default:
3323
3324```json [settings]
3325"theme": {
3326  "mode": "system",
3327  "dark": "One Dark",
3328  "light": "One Light"
3329},
3330```
3331
3332### Mode
3333
3334- Description: Specify theme mode.
3335- Setting: `mode`
3336- Default: `system`
3337
3338**Options**
3339
33401. Set the theme to dark mode
3341
3342```json [settings]
3343{
3344  "mode": "dark"
3345}
3346```
3347
33482. Set the theme to light mode
3349
3350```json [settings]
3351{
3352  "mode": "light"
3353}
3354```
3355
33563. Set the theme to system mode
3357
3358```json [settings]
3359{
3360  "mode": "system"
3361}
3362```
3363
3364### Dark
3365
3366- Description: The name of the dark Zed theme to use for the UI.
3367- Setting: `dark`
3368- Default: `One Dark`
3369
3370**Options**
3371
3372Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
3373
3374### Light
3375
3376- Description: The name of the light Zed theme to use for the UI.
3377- Setting: `light`
3378- Default: `One Light`
3379
3380**Options**
3381
3382Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
3383
3384## Title Bar
3385
3386- Description: Whether or not to show various elements in the title bar
3387- Setting: `title_bar`
3388- Default:
3389
3390```json [settings]
3391"title_bar": {
3392  "show_branch_icon": false,
3393  "show_branch_name": true,
3394  "show_project_items": true,
3395  "show_onboarding_banner": true,
3396  "show_user_picture": true,
3397  "show_sign_in": true,
3398  "show_menus": false
3399}
3400```
3401
3402**Options**
3403
3404- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
3405- `show_branch_name`: Whether to show the branch name button in the titlebar
3406- `show_project_items`: Whether to show the project host and name in the titlebar
3407- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
3408- `show_user_picture`: Whether to show user picture in the titlebar
3409- `show_sign_in`: Whether to show the sign in button in the titlebar
3410- `show_menus`: Whether to show the menus in the titlebar
3411
3412## Vim
3413
3414- Description: Whether or not to enable vim mode.
3415- Setting: `vim_mode`
3416- Default: `false`
3417
3418## When Closing With No Tabs
3419
3420- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
3421- Setting: `when_closing_with_no_tabs`
3422- Default: `"platform_default"`
3423
3424**Options**
3425
34261. Use platform default behavior:
3427
3428```json [settings]
3429{
3430  "when_closing_with_no_tabs": "platform_default"
3431}
3432```
3433
34342. Always close the window:
3435
3436```json [settings]
3437{
3438  "when_closing_with_no_tabs": "close_window"
3439}
3440```
3441
34423. Never close the window:
3443
3444```json [settings]
3445{
3446  "when_closing_with_no_tabs": "keep_window_open"
3447}
3448```
3449
3450## Project Panel
3451
3452- Description: Customize project panel
3453- Setting: `project_panel`
3454- Default:
3455
3456```json [settings]
3457{
3458  "project_panel": {
3459    "button": true,
3460    "default_width": 240,
3461    "dock": "left",
3462    "entry_spacing": "comfortable",
3463    "file_icons": true,
3464    "folder_icons": true,
3465    "git_status": true,
3466    "indent_size": 20,
3467    "auto_reveal_entries": true,
3468    "auto_fold_dirs": true,
3469    "drag_and_drop": true,
3470    "scrollbar": {
3471      "show": null
3472    },
3473    "sticky_scroll": true,
3474    "show_diagnostics": "all",
3475    "indent_guides": {
3476      "show": "always"
3477    },
3478    "hide_root": false,
3479    "hide_hidden": false,
3480    "starts_open": true
3481  }
3482}
3483```
3484
3485### Dock
3486
3487- Description: Control the position of the dock
3488- Setting: `dock`
3489- Default: `left`
3490
3491**Options**
3492
34931. Default dock position to left
3494
3495```json [settings]
3496{
3497  "dock": "left"
3498}
3499```
3500
35012. Default dock position to right
3502
3503```json [settings]
3504{
3505  "dock": "right"
3506}
3507```
3508
3509### Entry Spacing
3510
3511- Description: Spacing between worktree entries
3512- Setting: `entry_spacing`
3513- Default: `comfortable`
3514
3515**Options**
3516
35171. Comfortable entry spacing
3518
3519```json [settings]
3520{
3521  "entry_spacing": "comfortable"
3522}
3523```
3524
35252. Standard entry spacing
3526
3527```json [settings]
3528{
3529  "entry_spacing": "standard"
3530}
3531```
3532
3533### Git Status
3534
3535- Description: Indicates newly created and updated files
3536- Setting: `git_status`
3537- Default: `true`
3538
3539**Options**
3540
35411. Default enable git status
3542
3543```json [settings]
3544{
3545  "git_status": true
3546}
3547```
3548
35492. Default disable git status
3550
3551```json [settings]
3552{
3553  "git_status": false
3554}
3555```
3556
3557### Default Width
3558
3559- Description: Customize default width taken by project panel
3560- Setting: `default_width`
3561- Default: `240`
3562
3563**Options**
3564
3565`float` values
3566
3567### Auto Reveal Entries
3568
3569- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
3570- Setting: `auto_reveal_entries`
3571- Default: `true`
3572
3573**Options**
3574
35751. Enable auto reveal entries
3576
3577```json [settings]
3578{
3579  "auto_reveal_entries": true
3580}
3581```
3582
35832. Disable auto reveal entries
3584
3585```json [settings]
3586{
3587  "auto_reveal_entries": false
3588}
3589```
3590
3591### Auto Fold Dirs
3592
3593- Description: Whether to fold directories automatically when directory has only one directory inside.
3594- Setting: `auto_fold_dirs`
3595- Default: `true`
3596
3597**Options**
3598
35991. Enable auto fold dirs
3600
3601```json [settings]
3602{
3603  "auto_fold_dirs": true
3604}
3605```
3606
36072. Disable auto fold dirs
3608
3609```json [settings]
3610{
3611  "auto_fold_dirs": false
3612}
3613```
3614
3615### Indent Size
3616
3617- Description: Amount of indentation (in pixels) for nested items.
3618- Setting: `indent_size`
3619- Default: `20`
3620
3621### Indent Guides: Show
3622
3623- Description: Whether to show indent guides in the project panel.
3624- Setting: `indent_guides`
3625- Default:
3626
3627```json [settings]
3628"indent_guides": {
3629  "show": "always"
3630}
3631```
3632
3633**Options**
3634
36351. Show indent guides in the project panel
3636
3637```json [settings]
3638{
3639  "indent_guides": {
3640    "show": "always"
3641  }
3642}
3643```
3644
36452. Hide indent guides in the project panel
3646
3647```json [settings]
3648{
3649  "indent_guides": {
3650    "show": "never"
3651  }
3652}
3653```
3654
3655### Scrollbar: Show
3656
3657- 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.
3658- Setting: `scrollbar`
3659- Default:
3660
3661```json [settings]
3662"scrollbar": {
3663  "show": null
3664}
3665```
3666
3667**Options**
3668
36691. Show scrollbar in the project panel
3670
3671```json [settings]
3672{
3673  "scrollbar": {
3674    "show": "always"
3675  }
3676}
3677```
3678
36792. Hide scrollbar in the project panel
3680
3681```json [settings]
3682{
3683  "scrollbar": {
3684    "show": "never"
3685  }
3686}
3687```
3688
3689## Agent
3690
3691Visit [the Configuration page](./ai/configuration.md) under the AI section to learn more about all the agent-related settings.
3692
3693## Collaboration Panel
3694
3695- Description: Customizations for the collaboration panel.
3696- Setting: `collaboration_panel`
3697- Default:
3698
3699```json [settings]
3700{
3701  "collaboration_panel": {
3702    "button": true,
3703    "dock": "left",
3704    "default_width": 240
3705  }
3706}
3707```
3708
3709**Options**
3710
3711- `button`: Whether to show the collaboration panel button in the status bar
3712- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
3713- `default_width`: Default width of the collaboration panel
3714
3715## Debugger
3716
3717- Description: Configuration for debugger panel and settings
3718- Setting: `debugger`
3719- Default:
3720
3721```json [settings]
3722{
3723  "debugger": {
3724    "stepping_granularity": "line",
3725    "save_breakpoints": true,
3726    "dock": "bottom",
3727    "button": true
3728  }
3729}
3730```
3731
3732See the [debugger page](./debugger.md) for more information about debugging support within Zed.
3733
3734## Git Panel
3735
3736- Description: Setting to customize the behavior of the git panel.
3737- Setting: `git_panel`
3738- Default:
3739
3740```json [settings]
3741{
3742  "git_panel": {
3743    "button": true,
3744    "dock": "left",
3745    "default_width": 360,
3746    "status_style": "icon",
3747    "fallback_branch_name": "main",
3748    "sort_by_path": false,
3749    "collapse_untracked_diff": false,
3750    "scrollbar": {
3751      "show": null
3752    }
3753  }
3754}
3755```
3756
3757**Options**
3758
3759- `button`: Whether to show the git panel button in the status bar
3760- `dock`: Where to dock the git panel. Can be `left` or `right`
3761- `default_width`: Default width of the git panel
3762- `status_style`: How to display git status. Can be `label_color` or `icon`
3763- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
3764- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
3765- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
3766- `scrollbar`: When to show the scrollbar in the git panel
3767
3768## Outline Panel
3769
3770- Description: Customize outline Panel
3771- Setting: `outline_panel`
3772- Default:
3773
3774```json [settings]
3775"outline_panel": {
3776  "button": true,
3777  "default_width": 300,
3778  "dock": "left",
3779  "file_icons": true,
3780  "folder_icons": true,
3781  "git_status": true,
3782  "indent_size": 20,
3783  "auto_reveal_entries": true,
3784  "auto_fold_dirs": true,
3785  "indent_guides": {
3786    "show": "always"
3787  },
3788  "scrollbar": {
3789    "show": null
3790  }
3791}
3792```
3793
3794## Calls
3795
3796- Description: Customize behavior when participating in a call
3797- Setting: `calls`
3798- Default:
3799
3800```json [settings]
3801"calls": {
3802  // Join calls with the microphone live by default
3803  "mute_on_join": false,
3804  // Share your project when you are the first to join a channel
3805  "share_on_join": false
3806},
3807```
3808
3809## Unnecessary Code Fade
3810
3811- Description: How much to fade out unused code.
3812- Setting: `unnecessary_code_fade`
3813- Default: `0.3`
3814
3815**Options**
3816
3817Float values between `0.0` and `0.9`, where:
3818
3819- `0.0` means no fading (unused code looks the same as used code)
3820- `0.9` means maximum fading (unused code is very faint but still visible)
3821
3822**Example**
3823
3824```json [settings]
3825{
3826  "unnecessary_code_fade": 0.5
3827}
3828```
3829
3830## UI Font Family
3831
3832- Description: The name of the font to use for text in the UI.
3833- Setting: `ui_font_family`
3834- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
3835
3836**Options**
3837
3838The name of any font family installed on the system, `".ZedSans"` to use the Zed-provided default, or `".SystemUIFont"` to use the system's default UI font (on macOS and Windows).
3839
3840## UI Font Features
3841
3842- Description: The OpenType features to enable for text in the UI.
3843- Setting: `ui_font_features`
3844- Default:
3845
3846```json [settings]
3847"ui_font_features": {
3848  "calt": false
3849}
3850```
3851
3852- Platform: macOS and Windows.
3853
3854**Options**
3855
3856Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3857
3858For example, to disable font ligatures, add the following to your settings:
3859
3860```json [settings]
3861{
3862  "ui_font_features": {
3863    "calt": false
3864  }
3865}
3866```
3867
3868You can also set other OpenType features, like setting `cv01` to `7`:
3869
3870```json [settings]
3871{
3872  "ui_font_features": {
3873    "cv01": 7
3874  }
3875}
3876```
3877
3878## UI Font Fallbacks
3879
3880- Description: The font fallbacks to use for text in the UI.
3881- Setting: `ui_font_fallbacks`
3882- Default: `null`
3883- Platform: macOS and Windows.
3884
3885**Options**
3886
3887For example, to use `Nerd Font` as a fallback, add the following to your settings:
3888
3889```json [settings]
3890{
3891  "ui_font_fallbacks": ["Nerd Font"]
3892}
3893```
3894
3895## UI Font Size
3896
3897- Description: The default font size for text in the UI.
3898- Setting: `ui_font_size`
3899- Default: `16`
3900
3901**Options**
3902
3903`integer` values from `6` to `100` pixels (inclusive)
3904
3905## UI Font Weight
3906
3907- Description: The default font weight for text in the UI.
3908- Setting: `ui_font_weight`
3909- Default: `400`
3910
3911**Options**
3912
3913`integer` values between `100` and `900`
3914
3915## An example configuration:
3916
3917```json [settings]
3918// ~/.config/zed/settings.json
3919{
3920  "theme": "cave-light",
3921  "tab_size": 2,
3922  "preferred_line_length": 80,
3923  "soft_wrap": "none",
3924
3925  "buffer_font_size": 18,
3926  "buffer_font_family": ".ZedMono",
3927
3928  "autosave": "on_focus_change",
3929  "format_on_save": "off",
3930  "vim_mode": false,
3931  "projects_online_by_default": true,
3932  "terminal": {
3933    "font_family": "FiraCode Nerd Font Mono",
3934    "blinking": "off"
3935  },
3936  "languages": {
3937    "C": {
3938      "format_on_save": "on",
3939      "formatter": "language_server",
3940      "preferred_line_length": 64,
3941      "soft_wrap": "preferred_line_length"
3942    }
3943  }
3944}
3945```