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