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## Settings files
   8
   9<!--
  10TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
  11Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
  12
  13TBD: Add settings documentation about how settings are merged as overlays. E.g. project>local>default. Note how settings that are maps are merged, but settings that are arrays are replaced and must include the defaults.
  14-->
  15
  16Your settings file can be opened with {#kb zed::OpenSettings}. By default it is located at `~/.config/zed/settings.json`, though if you have XDG_CONFIG_HOME in your environment on Linux it will be at `$XDG_CONFIG_HOME/zed/settings.json` instead.
  17
  18This configuration is merged with any local configuration inside your projects. You can open the project settings by running {#action zed::OpenProjectSettings} from the command palette. This will create a `.zed` directory containing`.zed/settings.json`.
  19
  20Although most projects will only need one settings file at the root, you can add more local settings files for subdirectories as needed. Not all settings can be set in local files, just those that impact the behavior of the editor and language tooling. For example you can set `tab_size`, `formatter` etc. but not `theme`, `vim_mode` and similar.
  21
  22The syntax for configuration files is a super-set of JSON that allows `//` comments.
  23
  24## Default settings
  25
  26You can find the default settings for your current Zed by running {#action zed::OpenDefaultSettings} from the command palette.
  27
  28Extensions that provide language servers may also provide default settings for those language servers.
  29
  30# Settings
  31
  32## Active Pane Magnification
  33
  34- Description: Scale by which to zoom the active pane. When set to `1.0`, the active pane has the same size as others, but when set to a larger value, the active pane takes up more space.
  35- Setting: `active_pane_magnification`
  36- Default: `1.0`
  37
  38**Options**
  39
  40`float` values
  41
  42## Auto Install extensions
  43
  44- Description: Define extensions to be autoinstalled or never be installed.
  45- Setting: `auto_install_extension`
  46- Default: `{"html": true}`
  47
  48**Options**
  49
  50You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions#installation-location):
  51
  52On MacOS:
  53
  54```sh
  55ls ~/Library/Application\ Support/Zed/extensions/installed/
  56```
  57
  58On Linux:
  59
  60```sh
  61ls ~/.local/share/zed/extensions/installed
  62```
  63
  64Define extensions which should be installed (`true`) or never installed (`false`).
  65
  66```json
  67{
  68  "auto_install_extensions": {
  69    "html": true,
  70    "dockerfile": true,
  71    "docker-compose": false
  72  }
  73}
  74```
  75
  76## Autosave
  77
  78- Description: When to automatically save edited buffers.
  79- Setting: `autosave`
  80- Default: `off`
  81
  82**Options**
  83
  841. To disable autosave, set it to `off`:
  85
  86```json
  87{
  88  "autosave": "off"
  89}
  90```
  91
  922. To autosave when focus changes, use `on_focus_change`:
  93
  94```json
  95{
  96  "autosave": "on_focus_change"
  97}
  98```
  99
 1003. To autosave when the active window changes, use `on_window_change`:
 101
 102```json
 103{
 104  "autosave": "on_window_change"
 105}
 106```
 107
 1084. To autosave after an inactivity period, use `after_delay`:
 109
 110```json
 111{
 112  "autosave": {
 113    "after_delay": {
 114      "milliseconds": 1000
 115    }
 116  }
 117}
 118```
 119
 120## Auto Update
 121
 122- Description: Whether or not to automatically check for updates.
 123- Setting: `auto_update`
 124- Default: `true`
 125
 126**Options**
 127
 128`boolean` values
 129
 130## Base Keymap
 131
 132- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
 133- Setting: `base_keymap`
 134- Default: `VSCode`
 135
 136**Options**
 137
 1381. VSCode
 139
 140```json
 141{
 142  "base_keymap": "VSCode"
 143}
 144```
 145
 1462. Atom
 147
 148```json
 149{
 150  "base_keymap": "Atom"
 151}
 152```
 153
 1543. JetBrains
 155
 156```json
 157{
 158  "base_keymap": "JetBrains"
 159}
 160```
 161
 1624. None
 163
 164```json
 165{
 166  "base_keymap": "None"
 167}
 168```
 169
 1705. SublimeText
 171
 172```json
 173{
 174  "base_keymap": "SublimeText"
 175}
 176```
 177
 1786. TextMate
 179
 180```json
 181{
 182  "base_keymap": "TextMate"
 183}
 184```
 185
 186## Buffer Font Family
 187
 188- Description: The name of a font to use for rendering text in the editor.
 189- Setting: `buffer_font_family`
 190- Default: `Zed Plex Mono`
 191
 192**Options**
 193
 194The name of any font family installed on the user's system
 195
 196## Buffer Font Features
 197
 198- Description: The OpenType features to enable for text in the editor.
 199- Setting: `buffer_font_features`
 200- Default: `null`
 201- Platform: macOS and Windows.
 202
 203**Options**
 204
 205Zed 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.
 206
 207For example, to disable font ligatures, add the following to your settings:
 208
 209```json
 210{
 211  "buffer_font_features": {
 212    "calt": false
 213  }
 214}
 215```
 216
 217You can also set other OpenType features, like setting `cv01` to `7`:
 218
 219```json
 220{
 221  "buffer_font_features": {
 222    "cv01": 7
 223  }
 224}
 225```
 226
 227## Buffer Font Fallbacks
 228
 229- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
 230- Setting: `buffer_font_fallbacks`
 231- Default: `null`
 232- Platform: macOS and Windows.
 233
 234**Options**
 235
 236For example, to use `Nerd Font` as a fallback, add the following to your settings:
 237
 238```json
 239{
 240  "buffer_font_fallbacks": ["Nerd Font"]
 241}
 242```
 243
 244## Buffer Font Size
 245
 246- Description: The default font size for text in the editor.
 247- Setting: `buffer_font_size`
 248- Default: `15`
 249
 250**Options**
 251
 252`integer` values from `6` to `100` pixels (inclusive)
 253
 254## Buffer Font Weight
 255
 256- Description: The default font weight for text in the editor.
 257- Setting: `buffer_font_weight`
 258- Default: `400`
 259
 260**Options**
 261
 262`integer` values between `100` and `900`
 263
 264## Buffer Line Height
 265
 266- Description: The default line height for text in the editor.
 267- Setting: `buffer_line_height`
 268- Default: `"comfortable"`
 269
 270**Options**
 271
 272`"standard"`, `"comfortable"` or `{"custom": float}` (`1` is very compact, `2` very loose)
 273
 274## Confirm Quit
 275
 276- Description: Whether or not to prompt the user to confirm before closing the application.
 277- Setting: `confirm_quit`
 278- Default: `false`
 279
 280**Options**
 281
 282`boolean` values
 283
 284## Centered Layout
 285
 286- Description: Configuration for the centered layout mode.
 287- Setting: `centered_layout`
 288- Default:
 289
 290```json
 291"centered_layout": {
 292  "left_padding": 0.2,
 293  "right_padding": 0.2,
 294}
 295```
 296
 297**Options**
 298
 299The `left_padding` and `right_padding` options define the relative width of the
 300left and right padding of the central pane from the workspace when the centered layout mode is activated. Valid values range is from `0` to `0.4`.
 301
 302## Direnv Integration
 303
 304- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
 305  `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.
 306  It also allows for those environment variables to be used in tasks.
 307- Setting: `load_direnv`
 308- Default:
 309
 310```json
 311"load_direnv": "direct"
 312```
 313
 314**Options**
 315There are two options to choose from:
 316
 3171. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 3182. `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.
 319
 320## Inline Completions
 321
 322- Description: Settings for inline completions.
 323- Setting: `inline_completions`
 324- Default:
 325
 326```json
 327"inline_completions": {
 328  "disabled_globs": [
 329    ".env"
 330  ]
 331}
 332```
 333
 334**Options**
 335
 336### Disabled Globs
 337
 338- Description: A list of globs representing files that inline completions should be disabled for.
 339- Setting: `disabled_globs`
 340- Default: `[".env"]`
 341
 342**Options**
 343
 344List of `string` values
 345
 346## Current Line Highlight
 347
 348- Description: How to highlight the current line in the editor.
 349- Setting: `current_line_highlight`
 350- Default: `all`
 351
 352**Options**
 353
 3541. Don't highlight the current line:
 355
 356```json
 357"current_line_highlight": "none"
 358```
 359
 3602. Highlight the gutter area:
 361
 362```json
 363"current_line_highlight": "gutter"
 364```
 365
 3663. Highlight the editor area:
 367
 368```json
 369"current_line_highlight": "line"
 370```
 371
 3724. Highlight the full line:
 373
 374```json
 375"current_line_highlight": "all"
 376```
 377
 378## Cursor Blink
 379
 380- Description: Whether or not the cursor blinks.
 381- Setting: `cursor_blink`
 382- Default: `true`
 383
 384**Options**
 385
 386`boolean` values
 387
 388## Cursor Shape
 389
 390- Description: Cursor shape for the default editor.
 391- Setting: `cursor_shape`
 392- Default: `bar`
 393
 394**Options**
 395
 3961. A vertical bar:
 397
 398```json
 399"cursor_shape": "bar"
 400```
 401
 4022. A block that surrounds the following character:
 403
 404```json
 405"cursor_shape": "block"
 406```
 407
 4083. An underline / underscore that runs along the following character:
 409
 410```json
 411"cursor_shape": "underline"
 412```
 413
 4144. An box drawn around the following character:
 415
 416```json
 417"cursor_shape": "hollow"
 418```
 419
 420**Options**
 421
 4221. Position the dock attached to the bottom of the workspace: `bottom`
 4232. Position the dock to the right of the workspace like a side panel: `right`
 4243. Position the dock full screen over the entire workspace: `expanded`
 425
 426## Editor Scrollbar
 427
 428- Description: Whether or not to show the editor scrollbar and various elements in it.
 429- Setting: `scrollbar`
 430- Default:
 431
 432```json
 433"scrollbar": {
 434  "show": "auto",
 435  "cursors": true,
 436  "git_diff": true,
 437  "search_results": true,
 438  "selected_symbol": true,
 439  "diagnostics": true
 440},
 441```
 442
 443### Show Mode
 444
 445- Description: When to show the editor scrollbar.
 446- Setting: `show`
 447- Default: `auto`
 448
 449**Options**
 450
 4511. Show the scrollbar if there's important information or follow the system's configured behavior:
 452
 453```json
 454"scrollbar": {
 455  "show": "auto"
 456}
 457```
 458
 4592. Match the system's configured behavior:
 460
 461```json
 462"scrollbar": {
 463  "show": "system"
 464}
 465```
 466
 4673. Always show the scrollbar:
 468
 469```json
 470"scrollbar": {
 471  "show": "always"
 472}
 473```
 474
 4754. Never show the scrollbar:
 476
 477```json
 478"scrollbar": {
 479  "show": "never"
 480}
 481```
 482
 483### Cursor Indicators
 484
 485- Description: Whether to show cursor positions in the scrollbar.
 486- Setting: `cursors`
 487- Default: `true`
 488
 489**Options**
 490
 491`boolean` values
 492
 493### Git Diff Indicators
 494
 495- Description: Whether to show git diff indicators in the scrollbar.
 496- Setting: `git_diff`
 497- Default: `true`
 498
 499**Options**
 500
 501`boolean` values
 502
 503### Search Results Indicators
 504
 505- Description: Whether to show buffer search results in the scrollbar.
 506- Setting: `search_results`
 507- Default: `true`
 508
 509**Options**
 510
 511`boolean` values
 512
 513### Selected Symbols Indicators
 514
 515- Description: Whether to show selected symbol occurrences in the scrollbar.
 516- Setting: `selected_symbol`
 517- Default: `true`
 518
 519**Options**
 520
 521`boolean` values
 522
 523### Diagnostics
 524
 525- Description: Whether to show diagnostic indicators in the scrollbar.
 526- Setting: `diagnostics`
 527- Default: `true`
 528
 529**Options**
 530
 531`boolean` values
 532
 533## Editor Tab Bar
 534
 535- Description: Settings related to the editor's tab bar.
 536- Settings: `tab_bar`
 537- Default:
 538
 539```json
 540"tab_bar": {
 541  "show": true,
 542  "show_nav_history_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## Editor Tabs
 567
 568- Description: Configuration for the editor tabs.
 569- Setting: `tabs`
 570- Default:
 571
 572```json
 573"tabs": {
 574  "close_position": "right",
 575  "file_icons": false,
 576  "git_status": false,
 577  "activate_on_close": "history"
 578},
 579```
 580
 581### Close Position
 582
 583- Description: Where to display close button within a tab.
 584- Setting: `close_position`
 585- Default: `right`
 586
 587**Options**
 588
 5891. Display the close button on the right:
 590
 591```json
 592{
 593  "close_position": "right"
 594}
 595```
 596
 5972. Display the close button on the left:
 598
 599```json
 600{
 601  "close_position": "left"
 602}
 603```
 604
 605### File Icons
 606
 607- Description: Whether to show the file icon for a tab.
 608- Setting: `file_icons`
 609- Default: `false`
 610
 611### Git Status
 612
 613- Description: Whether or not to show Git file status in tab.
 614- Setting: `git_status`
 615- Default: `false`
 616
 617### Activate on close
 618
 619- Description: What to do after closing the current tab.
 620- Setting: `activate_on_close`
 621- Default: `history`
 622
 623**Options**
 624
 6251.  Activate the tab that was open previously:
 626
 627```json
 628{
 629  "activate_on_close": "history"
 630}
 631```
 632
 6332. Activate the neighbour tab (prefers the right one, if present):
 634
 635```json
 636{
 637  "activate_on_close": "neighbour"
 638}
 639```
 640
 641## Editor Toolbar
 642
 643- Description: Whether or not to show various elements in the editor toolbar.
 644- Setting: `toolbar`
 645- Default:
 646
 647```json
 648"toolbar": {
 649  "breadcrumbs": true,
 650  "quick_actions": true
 651},
 652```
 653
 654**Options**
 655
 656Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
 657
 658## Enable Language Server
 659
 660- Description: Whether or not to use language servers to provide code intelligence.
 661- Setting: `enable_language_server`
 662- Default: `true`
 663
 664**Options**
 665
 666`boolean` values
 667
 668## Ensure Final Newline On Save
 669
 670- Description: Whether or not to ensure there's a single newline at the end of a buffer when saving it.
 671- Setting: `ensure_final_newline_on_save`
 672- Default: `true`
 673
 674**Options**
 675
 676`boolean` values
 677
 678## LSP
 679
 680- Description: Configuration for language servers.
 681- Setting: `lsp`
 682- Default: `null`
 683
 684**Options**
 685
 686The following settings can be overridden for specific language servers:
 687
 688- `initialization_options`
 689- `settings`
 690
 691To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
 692
 693Some 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.
 694
 695For example to pass the `check` option to `rust-analyzer`, use the following configuration:
 696
 697```json
 698"lsp": {
 699  "rust-analyzer": {
 700    "initialization_options": {
 701      "check": {
 702        "command": "clippy" // rust-analyzer.check.command (default: "check")
 703      }
 704    }
 705  }
 706}
 707```
 708
 709While other options may be changed at a runtime and should be placed under `settings`:
 710
 711```json
 712"lsp": {
 713  "yaml-language-server": {
 714    "settings": {
 715      "yaml": {
 716        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
 717      }
 718    }
 719  }
 720}
 721```
 722
 723## Format On Save
 724
 725- Description: Whether or not to perform a buffer format before saving.
 726- Setting: `format_on_save`
 727- Default: `on`
 728
 729**Options**
 730
 7311. `on`, enables format on save obeying `formatter` setting:
 732
 733```json
 734{
 735  "format_on_save": "on"
 736}
 737```
 738
 7392. `off`, disables format on save:
 740
 741```json
 742{
 743  "format_on_save": "off"
 744}
 745```
 746
 747## Formatter
 748
 749- Description: How to perform a buffer format.
 750- Setting: `formatter`
 751- Default: `auto`
 752
 753**Options**
 754
 7551. To use the current language server, use `"language_server"`:
 756
 757```json
 758{
 759  "formatter": "language_server"
 760}
 761```
 762
 7632. 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):
 764
 765```json
 766{
 767  "formatter": {
 768    "external": {
 769      "command": "sed",
 770      "arguments": ["-e", "s/ *$//"]
 771    }
 772  }
 773}
 774```
 775
 7763. 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.
 777
 778```json
 779  "formatter": {
 780    "external": {
 781      "command": "prettier",
 782      "arguments": ["--stdin-filepath", "{buffer_path}"]
 783    }
 784  }
 785```
 786
 7874. Or to use code actions provided by the connected language servers, use `"code_actions"`:
 788
 789```json
 790{
 791  "formatter": {
 792    "code_actions": {
 793      // Use ESLint's --fix:
 794      "source.fixAll.eslint": true,
 795      // Organize imports on save:
 796      "source.organizeImports": true
 797    }
 798  }
 799}
 800```
 801
 8025. Or to use multiple formatters consecutively, use an array of formatters:
 803
 804```json
 805{
 806  "formatter": [
 807    {"language_server": {"name": "rust-analyzer"}},
 808    {"external": {
 809      "command": "sed",
 810      "arguments": ["-e", "s/ *$//"]
 811    }
 812  ]
 813}
 814```
 815
 816Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
 817If any of the formatters fails, the subsequent ones will still be executed.
 818
 819## Code Actions On Format
 820
 821- Description: The code actions to perform with the primary language server when formatting the buffer.
 822- Setting: `code_actions_on_format`
 823- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
 824
 825**Examples**
 826
 827<!--
 828TBD: Add Python Ruff source.organizeImports example
 829-->
 830
 8311. Organize imports on format in TypeScript and TSX buffers:
 832
 833```json
 834{
 835  "languages": {
 836    "TypeScript": {
 837      "code_actions_on_format": {
 838        "source.organizeImports": true
 839      }
 840    },
 841    "TSX": {
 842      "code_actions_on_format": {
 843        "source.organizeImports": true
 844      }
 845    }
 846  }
 847}
 848```
 849
 8502. Run ESLint `fixAll` code action when formatting:
 851
 852```json
 853{
 854  "languages": {
 855    "JavaScript": {
 856      "code_actions_on_format": {
 857        "source.fixAll.eslint": true
 858      }
 859    }
 860  }
 861}
 862```
 863
 8643. Run only a single ESLint rule when using `fixAll`:
 865
 866```json
 867{
 868  "languages": {
 869    "JavaScript": {
 870      "code_actions_on_format": {
 871        "source.fixAll.eslint": true
 872      }
 873    }
 874  },
 875  "lsp": {
 876    "eslint": {
 877      "settings": {
 878        "codeActionOnSave": {
 879          "rules": ["import/order"]
 880        }
 881      }
 882    }
 883  }
 884}
 885```
 886
 887## Auto close
 888
 889- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
 890- Setting: `use_autoclose`
 891- Default: `true`
 892
 893**Options**
 894
 895`boolean` values
 896
 897## Always Treat Brackets As Autoclosed
 898
 899- Description: Controls how the editor handles the autoclosed characters.
 900- Setting: `always_treat_brackets_as_autoclosed`
 901- Default: `false`
 902
 903**Options**
 904
 905`boolean` values
 906
 907**Example**
 908
 909If the setting is set to `true`:
 910
 9111. Enter in the editor: `)))`
 9122. Move the cursor to the start: `^)))`
 9133. Enter again: `)))`
 914
 915The result is still `)))` and not `))))))`, which is what it would be by default.
 916
 917## File Scan Exclusions
 918
 919- Setting: `file_scan_exclusions`
 920- Description: Configure how Add filename or directory globs that will be excluded by Zed entirely. They will be skipped during file scans, file searches and hidden from project file tree.
 921- Default:
 922
 923```json
 924"file_scan_exclusions": [
 925  "**/.git",
 926  "**/.svn",
 927  "**/.hg",
 928  "**/CVS",
 929  "**/.DS_Store",
 930  "**/Thumbs.db",
 931  "**/.classpath",
 932  "**/.settings"
 933],
 934```
 935
 936Note, 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.
 937
 938## File Types
 939
 940- Setting: `file_types`
 941- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
 942- Default: `{}`
 943
 944**Examples**
 945
 946To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
 947
 948```json
 949{
 950  "file_types": {
 951    "C++": ["c"],
 952    "TOML": ["MyLockFile"],
 953    "Dockerfile": ["Dockerfile*"]
 954  }
 955}
 956```
 957
 958## Git
 959
 960- Description: Configuration for git-related features.
 961- Setting: `git`
 962- Default:
 963
 964```json
 965{
 966  "git": {
 967    "git_gutter": "tracked_files",
 968    "inline_blame": {
 969      "enabled": true
 970    }
 971  }
 972}
 973```
 974
 975### Git Gutter
 976
 977- Description: Whether or not to show the git gutter.
 978- Setting: `git_gutter`
 979- Default: `tracked_files`
 980
 981**Options**
 982
 9831. Show git gutter in tracked files
 984
 985```json
 986{
 987  "git": {
 988    "git_gutter": "tracked_files"
 989  }
 990}
 991```
 992
 9932. Hide git gutter
 994
 995```json
 996{
 997  "git": {
 998    "git_gutter": "hide"
 999  }
1000}
1001```
1002
1003### Inline Git Blame
1004
1005- Description: Whether or not to show git blame information inline, on the currently focused line.
1006- Setting: `inline_blame`
1007- Default:
1008
1009```json
1010{
1011  "git": {
1012    "inline_blame": {
1013      "enabled": true
1014    }
1015  }
1016}
1017```
1018
1019**Options**
1020
10211. Disable inline git blame:
1022
1023```json
1024{
1025  "git": {
1026    "inline_blame": {
1027      "enabled": false
1028    }
1029  }
1030}
1031```
1032
10332. Only show inline git blame after a delay (that starts after cursor stops moving):
1034
1035```json
1036{
1037  "git": {
1038    "inline_blame": {
1039      "enabled": true,
1040      "delay_ms": 500
1041    }
1042  }
1043}
1044```
1045
1046## Indent Guides
1047
1048- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1049- Setting: `indent_guides`
1050- Default:
1051
1052```json
1053{
1054  "indent_guides": {
1055    "enabled": true,
1056    "line_width": 1,
1057    "active_line_width": 1,
1058    "coloring": "fixed",
1059    "background_coloring": "disabled"
1060  }
1061}
1062```
1063
1064**Options**
1065
10661. Disable indent guides
1067
1068```json
1069{
1070  "indent_guides": {
1071    "enabled": false
1072  }
1073}
1074```
1075
10762. Enable indent guides for a specific language.
1077
1078```json
1079{
1080  "languages": {
1081    "Python": {
1082      "indent_guides": {
1083        "enabled": true
1084      }
1085    }
1086  }
1087}
1088```
1089
10903. Enable indent aware coloring ("rainbow indentation").
1091   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.
1092
1093```json
1094{
1095  "indent_guides": {
1096    "enabled": true,
1097    "coloring": "indent_aware"
1098  }
1099}
1100```
1101
11024. Enable indent aware background coloring ("rainbow indentation").
1103   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.
1104
1105```json
1106{
1107  "indent_guides": {
1108    "enabled": true,
1109    "coloring": "indent_aware",
1110    "background_coloring": "indent_aware"
1111  }
1112}
1113```
1114
1115## Hard Tabs
1116
1117- Description: Whether to indent lines using tab characters or multiple spaces.
1118- Setting: `hard_tabs`
1119- Default: `false`
1120
1121**Options**
1122
1123`boolean` values
1124
1125## Hover Popover Enabled
1126
1127- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1128- Setting: `hover_popover_enabled`
1129- Default: `true`
1130
1131**Options**
1132
1133`boolean` values
1134
1135## Inlay hints
1136
1137- Description: Configuration for displaying extra text with hints in the editor.
1138- Setting: `inlay_hints`
1139- Default:
1140
1141```json
1142"inlay_hints": {
1143  "enabled": false,
1144  "show_type_hints": true,
1145  "show_parameter_hints": true,
1146  "show_other_hints": true,
1147  "show_background": false,
1148  "edit_debounce_ms": 700,
1149  "scroll_debounce_ms": 50
1150}
1151```
1152
1153**Options**
1154
1155Inlay hints querying consists of two parts: editor (client) and LSP server.
1156With 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.
1157At 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.
1158
1159The following languages have inlay hints preconfigured by Zed:
1160
1161- [Go](https://docs.zed.dev/languages/go)
1162- [Rust](https://docs.zed.dev/languages/rust)
1163- [Svelte](https://docs.zed.dev/languages/svelte)
1164- [Typescript](https://docs.zed.dev/languages/typescript)
1165
1166Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1167
1168Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1169Settings-related hint updates are not debounced.
1170
1171## Journal
1172
1173- Description: Configuration for the journal.
1174- Setting: `journal`
1175- Default:
1176
1177```json
1178"journal": {
1179  "path": "~",
1180  "hour_format": "hour12"
1181}
1182```
1183
1184### Path
1185
1186- Description: The path of the directory where journal entries are stored.
1187- Setting: `path`
1188- Default: `~`
1189
1190**Options**
1191
1192`string` values
1193
1194### Hour Format
1195
1196- Description: The format to use for displaying hours in the journal.
1197- Setting: `hour_format`
1198- Default: `hour12`
1199
1200**Options**
1201
12021. 12-hour format:
1203
1204```json
1205{
1206  "hour_format": "hour12"
1207}
1208```
1209
12102. 24-hour format:
1211
1212```json
1213{
1214  "hour_format": "hour24"
1215}
1216```
1217
1218## Languages
1219
1220- Description: Configuration for specific languages.
1221- Setting: `languages`
1222- Default: `null`
1223
1224**Options**
1225
1226To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1227
1228```json
1229"languages": {
1230  "C": {
1231    "format_on_save": "off",
1232    "preferred_line_length": 64,
1233    "soft_wrap": "preferred_line_length"
1234  },
1235  "JSON": {
1236    "tab_size": 4
1237  }
1238}
1239```
1240
1241The following settings can be overridden for each specific language:
1242
1243- `enable_language_server`
1244- `ensure_final_newline_on_save`
1245- `format_on_save`
1246- `formatter`
1247- `hard_tabs`
1248- `preferred_line_length`
1249- `remove_trailing_whitespace_on_save`
1250- `show_inline_completions`
1251- `show_whitespaces`
1252- `soft_wrap`
1253- `tab_size`
1254- `use_autoclose`
1255- `always_treat_brackets_as_autoclosed`
1256
1257These values take in the same options as the root-level settings with the same name.
1258
1259## Network Proxy
1260
1261- Description: Configure a network proxy for Zed.
1262- Setting: `proxy`
1263- Default: `null`
1264
1265**Options**
1266
1267The proxy setting must contain a URL to the proxy.
1268
1269The following URI schemes are supported:
1270
1271- `http`
1272- `https`
1273- `socks4` - SOCKS4 proxy with local DNS
1274- `socks4a` - SOCKS4 proxy with remote DNS
1275- `socks5` - SOCKS5 proxy with local DNS
1276- `socks5h` - SOCKS5 proxy with remote DNS
1277
1278`http` will be used when no scheme is specified.
1279
1280By 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`.
1281
1282For example, to set an `http` proxy, add the following to your settings:
1283
1284```json
1285{
1286  "proxy": "http://127.0.0.1:10809"
1287}
1288```
1289
1290Or to set a `socks5` proxy:
1291
1292```json
1293{
1294  "proxy": "socks5h://localhost:10808"
1295}
1296```
1297
1298## Preview tabs
1299
1300- Description:
1301  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. \
1302   There are several ways to convert a preview tab into a regular tab:
1303
1304  - Double-clicking on the file
1305  - Double-clicking on the tab header
1306  - Using the `project_panel::OpenPermanent` action
1307  - Editing the file
1308  - Dragging the file to a different pane
1309
1310- Setting: `preview_tabs`
1311- Default:
1312
1313```json
1314"preview_tabs": {
1315  "enabled": true,
1316  "enable_preview_from_file_finder": false,
1317  "enable_preview_from_code_navigation": false,
1318}
1319```
1320
1321### Enable preview from file finder
1322
1323- Description: Determines whether to open files in preview mode when selected from the file finder.
1324- Setting: `enable_preview_from_file_finder`
1325- Default: `false`
1326
1327**Options**
1328
1329`boolean` values
1330
1331### Enable preview from code navigation
1332
1333- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
1334- Setting: `enable_preview_from_code_navigation`
1335- Default: `false`
1336
1337**Options**
1338
1339`boolean` values
1340
1341## Preferred Line Length
1342
1343- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
1344- Setting: `preferred_line_length`
1345- Default: `80`
1346
1347**Options**
1348
1349`integer` values
1350
1351## Projects Online By Default
1352
1353- Description: Whether or not to show the online projects view by default.
1354- Setting: `projects_online_by_default`
1355- Default: `true`
1356
1357**Options**
1358
1359`boolean` values
1360
1361## Remove Trailing Whitespace On Save
1362
1363- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
1364- Setting: `remove_trailing_whitespace_on_save`
1365- Default: `true`
1366
1367**Options**
1368
1369`boolean` values
1370
1371## Search
1372
1373- Description: Search options to enable by default when opening new project and buffer searches.
1374- Setting: `search`
1375- Default:
1376
1377```json
1378"search": {
1379  "whole_word": false,
1380  "case_sensitive": false,
1381  "include_ignored": false,
1382  "regex": false
1383},
1384```
1385
1386## Show Call Status Icon
1387
1388- Description: Whether or not to show the call status icon in the status bar.
1389- Setting: `show_call_status_icon`
1390- Default: `true`
1391
1392**Options**
1393
1394`boolean` values
1395
1396## Show Completions On Input
1397
1398- Description: Whether or not to show completions as you type.
1399- Setting: `show_completions_on_input`
1400- Default: `true`
1401
1402**Options**
1403
1404`boolean` values
1405
1406## Show Completion Documentation
1407
1408- Description: Whether to display inline and alongside documentation for items in the completions menu.
1409- Setting: `show_completion_documentation`
1410- Default: `true`
1411
1412**Options**
1413
1414`boolean` values
1415
1416## Completion Documentation Debounce Delay
1417
1418- Description: The debounce delay before re-querying the language server for completion documentation when not included in original completion list.
1419- Setting: `completion_documentation_secondary_query_debounce`
1420- Default: `300` ms
1421
1422**Options**
1423
1424`integer` values
1425
1426## Show Inline Completions
1427
1428- Description: Whether to show inline completions as you type or manually by triggering `editor::ShowInlineCompletion`.
1429- Setting: `show_inline_completions`
1430- Default: `true`
1431
1432**Options**
1433
1434`boolean` values
1435
1436## Show Whitespaces
1437
1438- Description: Whether or not to show render whitespace characters in the editor.
1439- Setting: `show_whitespaces`
1440- Default: `selection`
1441
1442**Options**
1443
14441. `all`
14452. `selection`
14463. `none`
14474. `boundary`
1448
1449## Soft Wrap
1450
1451- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
1452- Setting: `soft_wrap`
1453- Default: `none`
1454
1455**Options**
1456
14571. `none` to avoid wrapping generally, unless the line is too long
14582. `prefer_line` (deprecated, same as `none`)
14593. `editor_width` to wrap lines that overflow the editor width
14604. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
1461
1462## Wrap Guides (Vertical Rulers)
1463
1464- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
1465- Setting: `wrap_guides`
1466- Default: []
1467
1468**Options**
1469
1470List of `integer` column numbers
1471
1472## Tab Size
1473
1474- Description: The number of spaces to use for each tab character.
1475- Setting: `tab_size`
1476- Default: `4`
1477
1478**Options**
1479
1480`integer` values
1481
1482## Telemetry
1483
1484- Description: Control what info is collected by Zed.
1485- Setting: `telemetry`
1486- Default:
1487
1488```json
1489"telemetry": {
1490  "diagnostics": true,
1491  "metrics": true
1492},
1493```
1494
1495**Options**
1496
1497### Diagnostics
1498
1499- Description: Setting for sending debug-related data, such as crash reports.
1500- Setting: `diagnostics`
1501- Default: `true`
1502
1503**Options**
1504
1505`boolean` values
1506
1507### Metrics
1508
1509- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
1510- Setting: `metrics`
1511- Default: `true`
1512
1513**Options**
1514
1515`boolean` values
1516
1517## Terminal
1518
1519- Description: Configuration for the terminal.
1520- Setting: `terminal`
1521- Default:
1522
1523```json
1524{
1525  "terminal": {
1526    "alternate_scroll": "off",
1527    "blinking": "terminal_controlled",
1528    "copy_on_select": false,
1529    "dock": "bottom",
1530    "detect_venv": {
1531      "on": {
1532        "directories": [".env", "env", ".venv", "venv"],
1533        "activate_script": "default"
1534      }
1535    },
1536    "env": {},
1537    "font_family": null,
1538    "font_features": null,
1539    "font_size": null,
1540    "line_height": "comfortable",
1541    "option_as_meta": false,
1542    "button": false,
1543    "shell": {},
1544    "toolbar": {
1545      "title": true
1546    },
1547    "working_directory": "current_project_directory"
1548  }
1549}
1550```
1551
1552### Terminal: Dock
1553
1554- Description: Control the position of the dock
1555- Setting: `dock`
1556- Default: `bottom`
1557
1558**Options**
1559
1560`"bottom"`, `"left"` or `"right"`
1561
1562### Terminal: Alternate Scroll
1563
1564- 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.
1565- Setting: `alternate_scroll`
1566- Default: `off`
1567
1568**Options**
1569
15701. Default alternate scroll mode to on
1571
1572```json
1573{
1574  "terminal": {
1575    "alternate_scroll": "on"
1576  }
1577}
1578```
1579
15802. Default alternate scroll mode to off
1581
1582```json
1583{
1584  "terminal": {
1585    "alternate_scroll": "off"
1586  }
1587}
1588```
1589
1590### Terminal: Blinking
1591
1592- Description: Set the cursor blinking behavior in the terminal
1593- Setting: `blinking`
1594- Default: `terminal_controlled`
1595
1596**Options**
1597
15981. Never blink the cursor, ignore the terminal mode
1599
1600```json
1601{
1602  "terminal": {
1603    "blinking": "off"
1604  }
1605}
1606```
1607
16082. Default the cursor blink to off, but allow the terminal to turn blinking on
1609
1610```json
1611{
1612  "terminal": {
1613    "blinking": "terminal_controlled"
1614  }
1615}
1616```
1617
16183. Always blink the cursor, ignore the terminal mode
1619
1620```json
1621{
1622  "terminal": {
1623    "blinking": "on"
1624  }
1625}
1626```
1627
1628### Terminal: Copy On Select
1629
1630- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
1631- Setting: `copy_on_select`
1632- Default: `false`
1633
1634**Options**
1635
1636`boolean` values
1637
1638**Example**
1639
1640```json
1641{
1642  "terminal": {
1643    "copy_on_select": true
1644  }
1645}
1646```
1647
1648### Terminal: Env
1649
1650- 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
1651- Setting: `env`
1652- Default: `{}`
1653
1654**Example**
1655
1656```json
1657{
1658  "terminal": {
1659    "env": {
1660      "ZED": "1",
1661      "KEY": "value1:value2"
1662    }
1663  }
1664}
1665```
1666
1667### Terminal: Font Size
1668
1669- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
1670- Setting: `font_size`
1671- Default: `null`
1672
1673**Options**
1674
1675`integer` values
1676
1677```json
1678{
1679  "terminal": {
1680    "font_size": 15
1681  }
1682}
1683```
1684
1685### Terminal: Font Family
1686
1687- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
1688- Setting: `font_family`
1689- Default: `null`
1690
1691**Options**
1692
1693The name of any font family installed on the user's system
1694
1695```json
1696{
1697  "terminal": {
1698    "font_family": "Berkeley Mono"
1699  }
1700}
1701```
1702
1703### Terminal: Font Features
1704
1705- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
1706- Setting: `font_features`
1707- Default: `null`
1708- Platform: macOS and Windows.
1709
1710**Options**
1711
1712See Buffer Font Features
1713
1714```json
1715{
1716  "terminal": {
1717    "font_features": {
1718      "calt": false
1719      // See Buffer Font Features for more features
1720    }
1721  }
1722}
1723```
1724
1725### Terminal: Line Height
1726
1727- Description: Set the terminal's line height.
1728- Setting: `line_height`
1729- Default: `comfortable`
1730
1731**Options**
1732
17331. Use a line height that's `comfortable` for reading, 1.618. (default)
1734
1735```json
1736{
1737  "terminal": {
1738    "line_height": "comfortable"
1739  }
1740}
1741```
1742
17432. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
1744
1745```json
1746{
1747  "terminal": {
1748    "line_height": "standard"
1749  }
1750}
1751```
1752
17533.  Use a custom line height.
1754
1755```json
1756{
1757  "terminal": {
1758    "line_height": {
1759      "custom": 2
1760    }
1761  }
1762}
1763```
1764
1765### Terminal: Option As Meta
1766
1767- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
1768- Setting: `option_as_meta`
1769- Default: `false`
1770
1771**Options**
1772
1773`boolean` values
1774
1775```json
1776{
1777  "terminal": {
1778    "option_as_meta": true
1779  }
1780}
1781```
1782
1783### Terminal: Shell
1784
1785- Description: What shell to use when launching the terminal.
1786- Setting: `shell`
1787- Default: `system`
1788
1789**Options**
1790
17911. Use the system's default terminal configuration (usually the `/etc/passwd` file).
1792
1793```json
1794{
1795  "terminal": {
1796    "shell": "system"
1797  }
1798}
1799```
1800
18012. A program to launch:
1802
1803```json
1804{
1805  "terminal": {
1806    "shell": {
1807      "program": "sh"
1808    }
1809  }
1810}
1811```
1812
18133. A program with arguments:
1814
1815```json
1816{
1817  "terminal": {
1818    "shell": {
1819      "with_arguments": {
1820        "program": "/bin/bash",
1821        "args": ["--login"]
1822      }
1823    }
1824  }
1825}
1826```
1827
1828## Terminal: Detect Virtual Environments {#terminal-detect_venv}
1829
1830- 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.
1831- Setting: `detect_venv`
1832- Default:
1833
1834```json
1835{
1836  "terminal": {
1837    "detect_venv": {
1838      "on": {
1839        // Default directories to search for virtual environments, relative
1840        // to the current working directory. We recommend overriding this
1841        // in your project's settings, rather than globally.
1842        "directories": [".venv", "venv"],
1843        // Can also be `csh`, `fish`, and `nushell`
1844        "activate_script": "default"
1845      }
1846    }
1847  }
1848}
1849```
1850
1851Disable with:
1852
1853```json
1854{
1855  "terminal": {
1856    "detect_venv": "off"
1857  }
1858}
1859```
1860
1861## Terminal: Toolbar
1862
1863- Description: Whether or not to show various elements in the terminal toolbar. It only affects terminals placed in the editor pane.
1864- Setting: `toolbar`
1865- Default:
1866
1867```json
1868{
1869  "terminal": {
1870    "toolbar": {
1871      "title": true
1872    }
1873  }
1874}
1875```
1876
1877**Options**
1878
1879At the moment, only the `title` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`. If the title is hidden, the terminal toolbar is not displayed.
1880
1881### Terminal: Button
1882
1883- Description: Control to show or hide the terminal button in the status bar
1884- Setting: `button`
1885- Default: `true`
1886
1887**Options**
1888
1889`boolean` values
1890
1891```json
1892{
1893  "terminal": {
1894    "button": false
1895  }
1896}
1897```
1898
1899### Terminal: Working Directory
1900
1901- Description: What working directory to use when launching the terminal.
1902- Setting: `working_directory`
1903- Default: `"current_project_directory"`
1904
1905**Options**
1906
19071. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
1908
1909```json
1910{
1911  "terminal": {
1912    "working_directory": "current_project_directory"
1913  }
1914}
1915```
1916
19172. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
1918
1919```json
1920{
1921  "terminal": {
1922    "working_directory": "first_project_directory"
1923  }
1924}
1925```
1926
19273. Always use this platform's home directory (if we can find it)
1928
1929```json
1930{
1931  "terminal": {
1932    "working_directory": "always_home"
1933  }
1934}
1935```
1936
19374. 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.
1938
1939```json
1940{
1941  "terminal": {
1942    "working_directory": {
1943      "always": {
1944        "directory": "~/zed/projects/"
1945      }
1946    }
1947  }
1948}
1949```
1950
1951## Theme
1952
1953- 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.
1954- Setting: `theme`
1955- Default: `One Dark`
1956
1957### Theme Object
1958
1959- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
1960- Setting: `theme`
1961- Default:
1962
1963```json
1964"theme": {
1965  "mode": "system",
1966  "dark": "One Dark",
1967  "light": "One Light"
1968},
1969```
1970
1971### Mode
1972
1973- Description: Specify theme mode.
1974- Setting: `mode`
1975- Default: `system`
1976
1977**Options**
1978
19791. Set the theme to dark mode
1980
1981```json
1982{
1983  "mode": "dark"
1984}
1985```
1986
19872. Set the theme to light mode
1988
1989```json
1990{
1991  "mode": "light"
1992}
1993```
1994
19953. Set the theme to system mode
1996
1997```json
1998{
1999  "mode": "system"
2000}
2001```
2002
2003### Dark
2004
2005- Description: The name of the dark Zed theme to use for the UI.
2006- Setting: `dark`
2007- Default: `One Dark`
2008
2009**Options**
2010
2011Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2012
2013### Light
2014
2015- Description: The name of the light Zed theme to use for the UI.
2016- Setting: `light`
2017- Default: `One Light`
2018
2019**Options**
2020
2021Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2022
2023## Vim
2024
2025- Description: Whether or not to enable vim mode (work in progress).
2026- Setting: `vim_mode`
2027- Default: `false`
2028
2029## Project Panel
2030
2031- Description: Customize project panel
2032- Setting: `project_panel`
2033- Default:
2034
2035```json
2036{
2037  "project_panel": {
2038    "button": true,
2039    "default_width": 240,
2040    "dock": "left",
2041    "file_icons": true,
2042    "folder_icons": true,
2043    "git_status": true,
2044    "indent_size": 20,
2045    "indent_guides": true,
2046    "auto_reveal_entries": true,
2047    "auto_fold_dirs": true,
2048    "scrollbar": {
2049      "show": null
2050    },
2051    "indent_guides": {
2052      "show": "always"
2053    }
2054  }
2055}
2056```
2057
2058### Dock
2059
2060- Description: Control the position of the dock
2061- Setting: `dock`
2062- Default: `left`
2063
2064**Options**
2065
20661. Default dock position to left
2067
2068```json
2069{
2070  "dock": "left"
2071}
2072```
2073
20742. Default dock position to right
2075
2076```json
2077{
2078  "dock": "right"
2079}
2080```
2081
2082### Git Status
2083
2084- Description: Indicates newly created and updated files
2085- Setting: `git_status`
2086- Default: `true`
2087
2088**Options**
2089
20901. Default enable git status
2091
2092```json
2093{
2094  "git_status": true
2095}
2096```
2097
20982. Default disable git status
2099
2100```json
2101{
2102  "git_status": false
2103}
2104```
2105
2106### Default Width
2107
2108- Description: Customize default width taken by project panel
2109- Setting: `default_width`
2110- Default: N/A width in pixels (eg: 420)
2111
2112**Options**
2113
2114`boolean` values
2115
2116### Auto Reveal Entries
2117
2118- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2119- Setting: `auto_reveal_entries`
2120- Default: `true`
2121
2122**Options**
2123
21241. Enable auto reveal entries
2125
2126```json
2127{
2128  "auto_reveal_entries": true
2129}
2130```
2131
21322. Disable auto reveal entries
2133
2134```json
2135{
2136  "auto_reveal_entries": false
2137}
2138```
2139
2140### Auto Fold Dirs
2141
2142- Description: Whether to fold directories automatically when directory has only one directory inside.
2143- Setting: `auto_fold_dirs`
2144- Default: `true`
2145
2146**Options**
2147
21481. Enable auto fold dirs
2149
2150```json
2151{
2152  "auto_fold_dirs": true
2153}
2154```
2155
21562. Disable auto fold dirs
2157
2158```json
2159{
2160  "auto_fold_dirs": false
2161}
2162```
2163
2164### Indent Size
2165
2166- Description: Amount of indentation (in pixels) for nested items.
2167- Setting: `indent_size`
2168- Default: `20`
2169
2170### Indent Guides: Show
2171
2172- Description: Whether to show indent guides in the project panel. Possible values: "always", "never".
2173- Setting: `indent_guides`
2174
2175```json
2176"indent_guides": {
2177  "show": "always"
2178}
2179```
2180
2181**Options**
2182
21831. Show indent guides in the project panel
2184
2185```json
2186{
2187  "indent_guides": {
2188    "show": "always"
2189  }
2190}
2191```
2192
21932. Hide indent guides in the project panel
2194
2195```json
2196{
2197  "indent_guides": {
2198    "show": "never"
2199  }
2200}
2201```
2202
2203### Scrollbar: Show
2204
2205- 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.
2206- Setting: `scrollbar`
2207- Default:
2208
2209```json
2210"scrollbar": {
2211  "show": null
2212}
2213```
2214
2215**Options**
2216
22171. Show scrollbar in the project panel
2218
2219```json
2220{
2221  "scrollbar": {
2222    "show": "always"
2223  }
2224}
2225```
2226
22272. Hide scrollbar in the project panel
2228
2229```json
2230{
2231  "scrollbar": {
2232    "show": "never"
2233  }
2234}
2235```
2236
2237## Assistant Panel
2238
2239- Description: Customize assistant panel
2240- Setting: `assistant`
2241- Default:
2242
2243```json
2244"assistant": {
2245  "enabled": true,
2246  "button": true,
2247  "dock": "right",
2248  "default_width": 640,
2249  "default_height": 320,
2250  "provider": "openai",
2251  "version": "1",
2252},
2253```
2254
2255## Outline Panel
2256
2257- Description: Customize outline Panel
2258- Setting: `outline_panel`
2259- Default:
2260
2261```json
2262"outline_panel": {
2263  "button": true,
2264  "default_width": 240,
2265  "dock": "left",
2266  "file_icons": true,
2267  "folder_icons": true,
2268  "git_status": true,
2269  "indent_size": 20,
2270  "auto_reveal_entries": true,
2271  "auto_fold_dirs": true,
2272  "indent_guides": {
2273    "show": "always"
2274  }
2275}
2276```
2277
2278## Calls
2279
2280- Description: Customize behavior when participating in a call
2281- Setting: `calls`
2282- Default:
2283
2284```json
2285"calls": {
2286  // Join calls with the microphone live by default
2287  "mute_on_join": false,
2288  // Share your project when you are the first to join a channel
2289  "share_on_join": false
2290},
2291```
2292
2293## Unnecessary Code Fade
2294
2295- Description: How much to fade out unused code.
2296- Setting: `unnecessary_code_fade`
2297- Default: `0.3`
2298
2299**Options**
2300
2301Float values between `0.0` and `0.9`, where:
2302
2303- `0.0` means no fading (unused code looks the same as used code)
2304- `0.9` means maximum fading (unused code is very faint but still visible)
2305
2306**Example**
2307
2308```json
2309{
2310  "unnecessary_code_fade": 0.5
2311}
2312```
2313
2314## UI Font Family
2315
2316- Description: The name of the font to use for text in the UI.
2317- Setting: `ui_font_family`
2318- Default: `Zed Plex Sans`
2319
2320**Options**
2321
2322The name of any font family installed on the system.
2323
2324## UI Font Features
2325
2326- Description: The OpenType features to enable for text in the UI.
2327- Setting: `ui_font_features`
2328- Default: `null`
2329- Platform: macOS and Windows.
2330
2331**Options**
2332
2333Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
2334
2335For example, to disable font ligatures, add the following to your settings:
2336
2337```json
2338{
2339  "ui_font_features": {
2340    "calt": false
2341  }
2342}
2343```
2344
2345You can also set other OpenType features, like setting `cv01` to `7`:
2346
2347```json
2348{
2349  "ui_font_features": {
2350    "cv01": 7
2351  }
2352}
2353```
2354
2355## UI Font Fallbacks
2356
2357- Description: The font fallbacks to use for text in the UI.
2358- Setting: `ui_font_fallbacks`
2359- Default: `null`
2360- Platform: macOS and Windows.
2361
2362**Options**
2363
2364For example, to use `Nerd Font` as a fallback, add the following to your settings:
2365
2366```json
2367{
2368  "ui_font_fallbacks": ["Nerd Font"]
2369}
2370```
2371
2372## UI Font Size
2373
2374- Description: The default font size for text in the UI.
2375- Setting: `ui_font_size`
2376- Default: `16`
2377
2378**Options**
2379
2380`integer` values from `6` to `100` pixels (inclusive)
2381
2382## UI Font Weight
2383
2384- Description: The default font weight for text in the UI.
2385- Setting: `ui_font_weight`
2386- Default: `400`
2387
2388**Options**
2389
2390`integer` values between `100` and `900`
2391
2392## An example configuration:
2393
2394```json
2395// ~/.config/zed/settings.json
2396{
2397  "theme": "cave-light",
2398  "tab_size": 2,
2399  "preferred_line_length": 80,
2400  "soft_wrap": "none",
2401
2402  "buffer_font_size": 18,
2403  "buffer_font_family": "Zed Plex Mono",
2404
2405  "autosave": "on_focus_change",
2406  "format_on_save": "off",
2407  "vim_mode": false,
2408  "projects_online_by_default": true,
2409  "terminal": {
2410    "font_family": "FiraCode Nerd Font Mono",
2411    "blinking": "off"
2412  },
2413  "languages": {
2414    "C": {
2415      "format_on_save": "language_server",
2416      "preferred_line_length": 64,
2417      "soft_wrap": "preferred_line_length"
2418    }
2419  }
2420}
2421```