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