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
10463. Show a commit summary next to the commit date and author:
1047
1048```json
1049{
1050  "git": {
1051    "inline_blame": {
1052      "enabled": true,
1053      "show_commit_summary": true
1054    }
1055  }
1056}
1057```
1058
10594. Use this as the minimum column at which to display inline blame information:
1060
1061```json
1062{
1063  "git": {
1064    "inline_blame": {
1065      "enabled": true,
1066      "min_column": 80
1067    }
1068  }
1069}
1070```
1071
1072## Indent Guides
1073
1074- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1075- Setting: `indent_guides`
1076- Default:
1077
1078```json
1079{
1080  "indent_guides": {
1081    "enabled": true,
1082    "line_width": 1,
1083    "active_line_width": 1,
1084    "coloring": "fixed",
1085    "background_coloring": "disabled"
1086  }
1087}
1088```
1089
1090**Options**
1091
10921. Disable indent guides
1093
1094```json
1095{
1096  "indent_guides": {
1097    "enabled": false
1098  }
1099}
1100```
1101
11022. Enable indent guides for a specific language.
1103
1104```json
1105{
1106  "languages": {
1107    "Python": {
1108      "indent_guides": {
1109        "enabled": true
1110      }
1111    }
1112  }
1113}
1114```
1115
11163. Enable indent aware coloring ("rainbow indentation").
1117   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.
1118
1119```json
1120{
1121  "indent_guides": {
1122    "enabled": true,
1123    "coloring": "indent_aware"
1124  }
1125}
1126```
1127
11284. Enable indent aware background coloring ("rainbow indentation").
1129   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.
1130
1131```json
1132{
1133  "indent_guides": {
1134    "enabled": true,
1135    "coloring": "indent_aware",
1136    "background_coloring": "indent_aware"
1137  }
1138}
1139```
1140
1141## Hard Tabs
1142
1143- Description: Whether to indent lines using tab characters or multiple spaces.
1144- Setting: `hard_tabs`
1145- Default: `false`
1146
1147**Options**
1148
1149`boolean` values
1150
1151## Hover Popover Enabled
1152
1153- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1154- Setting: `hover_popover_enabled`
1155- Default: `true`
1156
1157**Options**
1158
1159`boolean` values
1160
1161## Inlay hints
1162
1163- Description: Configuration for displaying extra text with hints in the editor.
1164- Setting: `inlay_hints`
1165- Default:
1166
1167```json
1168"inlay_hints": {
1169  "enabled": false,
1170  "show_type_hints": true,
1171  "show_parameter_hints": true,
1172  "show_other_hints": true,
1173  "show_background": false,
1174  "edit_debounce_ms": 700,
1175  "scroll_debounce_ms": 50
1176}
1177```
1178
1179**Options**
1180
1181Inlay hints querying consists of two parts: editor (client) and LSP server.
1182With 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.
1183At 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.
1184
1185The following languages have inlay hints preconfigured by Zed:
1186
1187- [Go](https://docs.zed.dev/languages/go)
1188- [Rust](https://docs.zed.dev/languages/rust)
1189- [Svelte](https://docs.zed.dev/languages/svelte)
1190- [Typescript](https://docs.zed.dev/languages/typescript)
1191
1192Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1193
1194Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1195Settings-related hint updates are not debounced.
1196
1197## Journal
1198
1199- Description: Configuration for the journal.
1200- Setting: `journal`
1201- Default:
1202
1203```json
1204"journal": {
1205  "path": "~",
1206  "hour_format": "hour12"
1207}
1208```
1209
1210### Path
1211
1212- Description: The path of the directory where journal entries are stored.
1213- Setting: `path`
1214- Default: `~`
1215
1216**Options**
1217
1218`string` values
1219
1220### Hour Format
1221
1222- Description: The format to use for displaying hours in the journal.
1223- Setting: `hour_format`
1224- Default: `hour12`
1225
1226**Options**
1227
12281. 12-hour format:
1229
1230```json
1231{
1232  "hour_format": "hour12"
1233}
1234```
1235
12362. 24-hour format:
1237
1238```json
1239{
1240  "hour_format": "hour24"
1241}
1242```
1243
1244## Languages
1245
1246- Description: Configuration for specific languages.
1247- Setting: `languages`
1248- Default: `null`
1249
1250**Options**
1251
1252To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1253
1254```json
1255"languages": {
1256  "C": {
1257    "format_on_save": "off",
1258    "preferred_line_length": 64,
1259    "soft_wrap": "preferred_line_length"
1260  },
1261  "JSON": {
1262    "tab_size": 4
1263  }
1264}
1265```
1266
1267The following settings can be overridden for each specific language:
1268
1269- `enable_language_server`
1270- `ensure_final_newline_on_save`
1271- `format_on_save`
1272- `formatter`
1273- `hard_tabs`
1274- `preferred_line_length`
1275- `remove_trailing_whitespace_on_save`
1276- `show_inline_completions`
1277- `show_whitespaces`
1278- `soft_wrap`
1279- `tab_size`
1280- `use_autoclose`
1281- `always_treat_brackets_as_autoclosed`
1282
1283These values take in the same options as the root-level settings with the same name.
1284
1285## Network Proxy
1286
1287- Description: Configure a network proxy for Zed.
1288- Setting: `proxy`
1289- Default: `null`
1290
1291**Options**
1292
1293The proxy setting must contain a URL to the proxy.
1294
1295The following URI schemes are supported:
1296
1297- `http`
1298- `https`
1299- `socks4` - SOCKS4 proxy with local DNS
1300- `socks4a` - SOCKS4 proxy with remote DNS
1301- `socks5` - SOCKS5 proxy with local DNS
1302- `socks5h` - SOCKS5 proxy with remote DNS
1303
1304`http` will be used when no scheme is specified.
1305
1306By 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`.
1307
1308For example, to set an `http` proxy, add the following to your settings:
1309
1310```json
1311{
1312  "proxy": "http://127.0.0.1:10809"
1313}
1314```
1315
1316Or to set a `socks5` proxy:
1317
1318```json
1319{
1320  "proxy": "socks5h://localhost:10808"
1321}
1322```
1323
1324## Preview tabs
1325
1326- Description:
1327  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. \
1328   There are several ways to convert a preview tab into a regular tab:
1329
1330  - Double-clicking on the file
1331  - Double-clicking on the tab header
1332  - Using the `project_panel::OpenPermanent` action
1333  - Editing the file
1334  - Dragging the file to a different pane
1335
1336- Setting: `preview_tabs`
1337- Default:
1338
1339```json
1340"preview_tabs": {
1341  "enabled": true,
1342  "enable_preview_from_file_finder": false,
1343  "enable_preview_from_code_navigation": false,
1344}
1345```
1346
1347### Enable preview from file finder
1348
1349- Description: Determines whether to open files in preview mode when selected from the file finder.
1350- Setting: `enable_preview_from_file_finder`
1351- Default: `false`
1352
1353**Options**
1354
1355`boolean` values
1356
1357### Enable preview from code navigation
1358
1359- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
1360- Setting: `enable_preview_from_code_navigation`
1361- Default: `false`
1362
1363**Options**
1364
1365`boolean` values
1366
1367## Preferred Line Length
1368
1369- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
1370- Setting: `preferred_line_length`
1371- Default: `80`
1372
1373**Options**
1374
1375`integer` values
1376
1377## Projects Online By Default
1378
1379- Description: Whether or not to show the online projects view by default.
1380- Setting: `projects_online_by_default`
1381- Default: `true`
1382
1383**Options**
1384
1385`boolean` values
1386
1387## Remove Trailing Whitespace On Save
1388
1389- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
1390- Setting: `remove_trailing_whitespace_on_save`
1391- Default: `true`
1392
1393**Options**
1394
1395`boolean` values
1396
1397## Search
1398
1399- Description: Search options to enable by default when opening new project and buffer searches.
1400- Setting: `search`
1401- Default:
1402
1403```json
1404"search": {
1405  "whole_word": false,
1406  "case_sensitive": false,
1407  "include_ignored": false,
1408  "regex": false
1409},
1410```
1411
1412## Show Call Status Icon
1413
1414- Description: Whether or not to show the call status icon in the status bar.
1415- Setting: `show_call_status_icon`
1416- Default: `true`
1417
1418**Options**
1419
1420`boolean` values
1421
1422## Show Completions On Input
1423
1424- Description: Whether or not to show completions as you type.
1425- Setting: `show_completions_on_input`
1426- Default: `true`
1427
1428**Options**
1429
1430`boolean` values
1431
1432## Show Completion Documentation
1433
1434- Description: Whether to display inline and alongside documentation for items in the completions menu.
1435- Setting: `show_completion_documentation`
1436- Default: `true`
1437
1438**Options**
1439
1440`boolean` values
1441
1442## Completion Documentation Debounce Delay
1443
1444- Description: The debounce delay before re-querying the language server for completion documentation when not included in original completion list.
1445- Setting: `completion_documentation_secondary_query_debounce`
1446- Default: `300` ms
1447
1448**Options**
1449
1450`integer` values
1451
1452## Show Inline Completions
1453
1454- Description: Whether to show inline completions as you type or manually by triggering `editor::ShowInlineCompletion`.
1455- Setting: `show_inline_completions`
1456- Default: `true`
1457
1458**Options**
1459
1460`boolean` values
1461
1462## Show Whitespaces
1463
1464- Description: Whether or not to show render whitespace characters in the editor.
1465- Setting: `show_whitespaces`
1466- Default: `selection`
1467
1468**Options**
1469
14701. `all`
14712. `selection`
14723. `none`
14734. `boundary`
1474
1475## Soft Wrap
1476
1477- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
1478- Setting: `soft_wrap`
1479- Default: `none`
1480
1481**Options**
1482
14831. `none` to avoid wrapping generally, unless the line is too long
14842. `prefer_line` (deprecated, same as `none`)
14853. `editor_width` to wrap lines that overflow the editor width
14864. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
1487
1488## Wrap Guides (Vertical Rulers)
1489
1490- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
1491- Setting: `wrap_guides`
1492- Default: []
1493
1494**Options**
1495
1496List of `integer` column numbers
1497
1498## Tab Size
1499
1500- Description: The number of spaces to use for each tab character.
1501- Setting: `tab_size`
1502- Default: `4`
1503
1504**Options**
1505
1506`integer` values
1507
1508## Telemetry
1509
1510- Description: Control what info is collected by Zed.
1511- Setting: `telemetry`
1512- Default:
1513
1514```json
1515"telemetry": {
1516  "diagnostics": true,
1517  "metrics": true
1518},
1519```
1520
1521**Options**
1522
1523### Diagnostics
1524
1525- Description: Setting for sending debug-related data, such as crash reports.
1526- Setting: `diagnostics`
1527- Default: `true`
1528
1529**Options**
1530
1531`boolean` values
1532
1533### Metrics
1534
1535- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
1536- Setting: `metrics`
1537- Default: `true`
1538
1539**Options**
1540
1541`boolean` values
1542
1543## Terminal
1544
1545- Description: Configuration for the terminal.
1546- Setting: `terminal`
1547- Default:
1548
1549```json
1550{
1551  "terminal": {
1552    "alternate_scroll": "off",
1553    "blinking": "terminal_controlled",
1554    "copy_on_select": false,
1555    "dock": "bottom",
1556    "detect_venv": {
1557      "on": {
1558        "directories": [".env", "env", ".venv", "venv"],
1559        "activate_script": "default"
1560      }
1561    },
1562    "env": {},
1563    "font_family": null,
1564    "font_features": null,
1565    "font_size": null,
1566    "line_height": "comfortable",
1567    "option_as_meta": false,
1568    "button": false,
1569    "shell": {},
1570    "toolbar": {
1571      "title": true
1572    },
1573    "working_directory": "current_project_directory"
1574  }
1575}
1576```
1577
1578### Terminal: Dock
1579
1580- Description: Control the position of the dock
1581- Setting: `dock`
1582- Default: `bottom`
1583
1584**Options**
1585
1586`"bottom"`, `"left"` or `"right"`
1587
1588### Terminal: Alternate Scroll
1589
1590- 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.
1591- Setting: `alternate_scroll`
1592- Default: `off`
1593
1594**Options**
1595
15961. Default alternate scroll mode to on
1597
1598```json
1599{
1600  "terminal": {
1601    "alternate_scroll": "on"
1602  }
1603}
1604```
1605
16062. Default alternate scroll mode to off
1607
1608```json
1609{
1610  "terminal": {
1611    "alternate_scroll": "off"
1612  }
1613}
1614```
1615
1616### Terminal: Blinking
1617
1618- Description: Set the cursor blinking behavior in the terminal
1619- Setting: `blinking`
1620- Default: `terminal_controlled`
1621
1622**Options**
1623
16241. Never blink the cursor, ignore the terminal mode
1625
1626```json
1627{
1628  "terminal": {
1629    "blinking": "off"
1630  }
1631}
1632```
1633
16342. Default the cursor blink to off, but allow the terminal to turn blinking on
1635
1636```json
1637{
1638  "terminal": {
1639    "blinking": "terminal_controlled"
1640  }
1641}
1642```
1643
16443. Always blink the cursor, ignore the terminal mode
1645
1646```json
1647{
1648  "terminal": {
1649    "blinking": "on"
1650  }
1651}
1652```
1653
1654### Terminal: Copy On Select
1655
1656- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
1657- Setting: `copy_on_select`
1658- Default: `false`
1659
1660**Options**
1661
1662`boolean` values
1663
1664**Example**
1665
1666```json
1667{
1668  "terminal": {
1669    "copy_on_select": true
1670  }
1671}
1672```
1673
1674### Terminal: Env
1675
1676- 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
1677- Setting: `env`
1678- Default: `{}`
1679
1680**Example**
1681
1682```json
1683{
1684  "terminal": {
1685    "env": {
1686      "ZED": "1",
1687      "KEY": "value1:value2"
1688    }
1689  }
1690}
1691```
1692
1693### Terminal: Font Size
1694
1695- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
1696- Setting: `font_size`
1697- Default: `null`
1698
1699**Options**
1700
1701`integer` values
1702
1703```json
1704{
1705  "terminal": {
1706    "font_size": 15
1707  }
1708}
1709```
1710
1711### Terminal: Font Family
1712
1713- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
1714- Setting: `font_family`
1715- Default: `null`
1716
1717**Options**
1718
1719The name of any font family installed on the user's system
1720
1721```json
1722{
1723  "terminal": {
1724    "font_family": "Berkeley Mono"
1725  }
1726}
1727```
1728
1729### Terminal: Font Features
1730
1731- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
1732- Setting: `font_features`
1733- Default: `null`
1734- Platform: macOS and Windows.
1735
1736**Options**
1737
1738See Buffer Font Features
1739
1740```json
1741{
1742  "terminal": {
1743    "font_features": {
1744      "calt": false
1745      // See Buffer Font Features for more features
1746    }
1747  }
1748}
1749```
1750
1751### Terminal: Line Height
1752
1753- Description: Set the terminal's line height.
1754- Setting: `line_height`
1755- Default: `comfortable`
1756
1757**Options**
1758
17591. Use a line height that's `comfortable` for reading, 1.618. (default)
1760
1761```json
1762{
1763  "terminal": {
1764    "line_height": "comfortable"
1765  }
1766}
1767```
1768
17692. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
1770
1771```json
1772{
1773  "terminal": {
1774    "line_height": "standard"
1775  }
1776}
1777```
1778
17793.  Use a custom line height.
1780
1781```json
1782{
1783  "terminal": {
1784    "line_height": {
1785      "custom": 2
1786    }
1787  }
1788}
1789```
1790
1791### Terminal: Option As Meta
1792
1793- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
1794- Setting: `option_as_meta`
1795- Default: `false`
1796
1797**Options**
1798
1799`boolean` values
1800
1801```json
1802{
1803  "terminal": {
1804    "option_as_meta": true
1805  }
1806}
1807```
1808
1809### Terminal: Shell
1810
1811- Description: What shell to use when launching the terminal.
1812- Setting: `shell`
1813- Default: `system`
1814
1815**Options**
1816
18171. Use the system's default terminal configuration (usually the `/etc/passwd` file).
1818
1819```json
1820{
1821  "terminal": {
1822    "shell": "system"
1823  }
1824}
1825```
1826
18272. A program to launch:
1828
1829```json
1830{
1831  "terminal": {
1832    "shell": {
1833      "program": "sh"
1834    }
1835  }
1836}
1837```
1838
18393. A program with arguments:
1840
1841```json
1842{
1843  "terminal": {
1844    "shell": {
1845      "with_arguments": {
1846        "program": "/bin/bash",
1847        "args": ["--login"]
1848      }
1849    }
1850  }
1851}
1852```
1853
1854## Terminal: Detect Virtual Environments {#terminal-detect_venv}
1855
1856- 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.
1857- Setting: `detect_venv`
1858- Default:
1859
1860```json
1861{
1862  "terminal": {
1863    "detect_venv": {
1864      "on": {
1865        // Default directories to search for virtual environments, relative
1866        // to the current working directory. We recommend overriding this
1867        // in your project's settings, rather than globally.
1868        "directories": [".venv", "venv"],
1869        // Can also be `csh`, `fish`, and `nushell`
1870        "activate_script": "default"
1871      }
1872    }
1873  }
1874}
1875```
1876
1877Disable with:
1878
1879```json
1880{
1881  "terminal": {
1882    "detect_venv": "off"
1883  }
1884}
1885```
1886
1887## Terminal: Toolbar
1888
1889- Description: Whether or not to show various elements in the terminal toolbar. It only affects terminals placed in the editor pane.
1890- Setting: `toolbar`
1891- Default:
1892
1893```json
1894{
1895  "terminal": {
1896    "toolbar": {
1897      "title": true
1898    }
1899  }
1900}
1901```
1902
1903**Options**
1904
1905At 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.
1906
1907### Terminal: Button
1908
1909- Description: Control to show or hide the terminal button in the status bar
1910- Setting: `button`
1911- Default: `true`
1912
1913**Options**
1914
1915`boolean` values
1916
1917```json
1918{
1919  "terminal": {
1920    "button": false
1921  }
1922}
1923```
1924
1925### Terminal: Working Directory
1926
1927- Description: What working directory to use when launching the terminal.
1928- Setting: `working_directory`
1929- Default: `"current_project_directory"`
1930
1931**Options**
1932
19331. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
1934
1935```json
1936{
1937  "terminal": {
1938    "working_directory": "current_project_directory"
1939  }
1940}
1941```
1942
19432. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
1944
1945```json
1946{
1947  "terminal": {
1948    "working_directory": "first_project_directory"
1949  }
1950}
1951```
1952
19533. Always use this platform's home directory (if we can find it)
1954
1955```json
1956{
1957  "terminal": {
1958    "working_directory": "always_home"
1959  }
1960}
1961```
1962
19634. 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.
1964
1965```json
1966{
1967  "terminal": {
1968    "working_directory": {
1969      "always": {
1970        "directory": "~/zed/projects/"
1971      }
1972    }
1973  }
1974}
1975```
1976
1977## Theme
1978
1979- 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.
1980- Setting: `theme`
1981- Default: `One Dark`
1982
1983### Theme Object
1984
1985- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
1986- Setting: `theme`
1987- Default:
1988
1989```json
1990"theme": {
1991  "mode": "system",
1992  "dark": "One Dark",
1993  "light": "One Light"
1994},
1995```
1996
1997### Mode
1998
1999- Description: Specify theme mode.
2000- Setting: `mode`
2001- Default: `system`
2002
2003**Options**
2004
20051. Set the theme to dark mode
2006
2007```json
2008{
2009  "mode": "dark"
2010}
2011```
2012
20132. Set the theme to light mode
2014
2015```json
2016{
2017  "mode": "light"
2018}
2019```
2020
20213. Set the theme to system mode
2022
2023```json
2024{
2025  "mode": "system"
2026}
2027```
2028
2029### Dark
2030
2031- Description: The name of the dark Zed theme to use for the UI.
2032- Setting: `dark`
2033- Default: `One Dark`
2034
2035**Options**
2036
2037Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2038
2039### Light
2040
2041- Description: The name of the light Zed theme to use for the UI.
2042- Setting: `light`
2043- Default: `One Light`
2044
2045**Options**
2046
2047Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2048
2049## Vim
2050
2051- Description: Whether or not to enable vim mode (work in progress).
2052- Setting: `vim_mode`
2053- Default: `false`
2054
2055## Project Panel
2056
2057- Description: Customize project panel
2058- Setting: `project_panel`
2059- Default:
2060
2061```json
2062{
2063  "project_panel": {
2064    "button": true,
2065    "default_width": 240,
2066    "dock": "left",
2067    "file_icons": true,
2068    "folder_icons": true,
2069    "git_status": true,
2070    "indent_size": 20,
2071    "indent_guides": true,
2072    "auto_reveal_entries": true,
2073    "auto_fold_dirs": true,
2074    "scrollbar": {
2075      "show": null
2076    },
2077    "indent_guides": {
2078      "show": "always"
2079    }
2080  }
2081}
2082```
2083
2084### Dock
2085
2086- Description: Control the position of the dock
2087- Setting: `dock`
2088- Default: `left`
2089
2090**Options**
2091
20921. Default dock position to left
2093
2094```json
2095{
2096  "dock": "left"
2097}
2098```
2099
21002. Default dock position to right
2101
2102```json
2103{
2104  "dock": "right"
2105}
2106```
2107
2108### Git Status
2109
2110- Description: Indicates newly created and updated files
2111- Setting: `git_status`
2112- Default: `true`
2113
2114**Options**
2115
21161. Default enable git status
2117
2118```json
2119{
2120  "git_status": true
2121}
2122```
2123
21242. Default disable git status
2125
2126```json
2127{
2128  "git_status": false
2129}
2130```
2131
2132### Default Width
2133
2134- Description: Customize default width taken by project panel
2135- Setting: `default_width`
2136- Default: N/A width in pixels (eg: 420)
2137
2138**Options**
2139
2140`boolean` values
2141
2142### Auto Reveal Entries
2143
2144- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2145- Setting: `auto_reveal_entries`
2146- Default: `true`
2147
2148**Options**
2149
21501. Enable auto reveal entries
2151
2152```json
2153{
2154  "auto_reveal_entries": true
2155}
2156```
2157
21582. Disable auto reveal entries
2159
2160```json
2161{
2162  "auto_reveal_entries": false
2163}
2164```
2165
2166### Auto Fold Dirs
2167
2168- Description: Whether to fold directories automatically when directory has only one directory inside.
2169- Setting: `auto_fold_dirs`
2170- Default: `true`
2171
2172**Options**
2173
21741. Enable auto fold dirs
2175
2176```json
2177{
2178  "auto_fold_dirs": true
2179}
2180```
2181
21822. Disable auto fold dirs
2183
2184```json
2185{
2186  "auto_fold_dirs": false
2187}
2188```
2189
2190### Indent Size
2191
2192- Description: Amount of indentation (in pixels) for nested items.
2193- Setting: `indent_size`
2194- Default: `20`
2195
2196### Indent Guides: Show
2197
2198- Description: Whether to show indent guides in the project panel. Possible values: "always", "never".
2199- Setting: `indent_guides`
2200
2201```json
2202"indent_guides": {
2203  "show": "always"
2204}
2205```
2206
2207**Options**
2208
22091. Show indent guides in the project panel
2210
2211```json
2212{
2213  "indent_guides": {
2214    "show": "always"
2215  }
2216}
2217```
2218
22192. Hide indent guides in the project panel
2220
2221```json
2222{
2223  "indent_guides": {
2224    "show": "never"
2225  }
2226}
2227```
2228
2229### Scrollbar: Show
2230
2231- 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.
2232- Setting: `scrollbar`
2233- Default:
2234
2235```json
2236"scrollbar": {
2237  "show": null
2238}
2239```
2240
2241**Options**
2242
22431. Show scrollbar in the project panel
2244
2245```json
2246{
2247  "scrollbar": {
2248    "show": "always"
2249  }
2250}
2251```
2252
22532. Hide scrollbar in the project panel
2254
2255```json
2256{
2257  "scrollbar": {
2258    "show": "never"
2259  }
2260}
2261```
2262
2263## Assistant Panel
2264
2265- Description: Customize assistant panel
2266- Setting: `assistant`
2267- Default:
2268
2269```json
2270"assistant": {
2271  "enabled": true,
2272  "button": true,
2273  "dock": "right",
2274  "default_width": 640,
2275  "default_height": 320,
2276  "provider": "openai",
2277  "version": "1",
2278},
2279```
2280
2281## Outline Panel
2282
2283- Description: Customize outline Panel
2284- Setting: `outline_panel`
2285- Default:
2286
2287```json
2288"outline_panel": {
2289  "button": true,
2290  "default_width": 240,
2291  "dock": "left",
2292  "file_icons": true,
2293  "folder_icons": true,
2294  "git_status": true,
2295  "indent_size": 20,
2296  "auto_reveal_entries": true,
2297  "auto_fold_dirs": true,
2298  "indent_guides": {
2299    "show": "always"
2300  },
2301  "scrollbar": {
2302    "show": null
2303  }
2304}
2305```
2306
2307## Calls
2308
2309- Description: Customize behavior when participating in a call
2310- Setting: `calls`
2311- Default:
2312
2313```json
2314"calls": {
2315  // Join calls with the microphone live by default
2316  "mute_on_join": false,
2317  // Share your project when you are the first to join a channel
2318  "share_on_join": false
2319},
2320```
2321
2322## Unnecessary Code Fade
2323
2324- Description: How much to fade out unused code.
2325- Setting: `unnecessary_code_fade`
2326- Default: `0.3`
2327
2328**Options**
2329
2330Float values between `0.0` and `0.9`, where:
2331
2332- `0.0` means no fading (unused code looks the same as used code)
2333- `0.9` means maximum fading (unused code is very faint but still visible)
2334
2335**Example**
2336
2337```json
2338{
2339  "unnecessary_code_fade": 0.5
2340}
2341```
2342
2343## UI Font Family
2344
2345- Description: The name of the font to use for text in the UI.
2346- Setting: `ui_font_family`
2347- Default: `Zed Plex Sans`
2348
2349**Options**
2350
2351The name of any font family installed on the system.
2352
2353## UI Font Features
2354
2355- Description: The OpenType features to enable for text in the UI.
2356- Setting: `ui_font_features`
2357- Default: `null`
2358- Platform: macOS and Windows.
2359
2360**Options**
2361
2362Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
2363
2364For example, to disable font ligatures, add the following to your settings:
2365
2366```json
2367{
2368  "ui_font_features": {
2369    "calt": false
2370  }
2371}
2372```
2373
2374You can also set other OpenType features, like setting `cv01` to `7`:
2375
2376```json
2377{
2378  "ui_font_features": {
2379    "cv01": 7
2380  }
2381}
2382```
2383
2384## UI Font Fallbacks
2385
2386- Description: The font fallbacks to use for text in the UI.
2387- Setting: `ui_font_fallbacks`
2388- Default: `null`
2389- Platform: macOS and Windows.
2390
2391**Options**
2392
2393For example, to use `Nerd Font` as a fallback, add the following to your settings:
2394
2395```json
2396{
2397  "ui_font_fallbacks": ["Nerd Font"]
2398}
2399```
2400
2401## UI Font Size
2402
2403- Description: The default font size for text in the UI.
2404- Setting: `ui_font_size`
2405- Default: `16`
2406
2407**Options**
2408
2409`integer` values from `6` to `100` pixels (inclusive)
2410
2411## UI Font Weight
2412
2413- Description: The default font weight for text in the UI.
2414- Setting: `ui_font_weight`
2415- Default: `400`
2416
2417**Options**
2418
2419`integer` values between `100` and `900`
2420
2421## An example configuration:
2422
2423```json
2424// ~/.config/zed/settings.json
2425{
2426  "theme": "cave-light",
2427  "tab_size": 2,
2428  "preferred_line_length": 80,
2429  "soft_wrap": "none",
2430
2431  "buffer_font_size": 18,
2432  "buffer_font_family": "Zed Plex Mono",
2433
2434  "autosave": "on_focus_change",
2435  "format_on_save": "off",
2436  "vim_mode": false,
2437  "projects_online_by_default": true,
2438  "terminal": {
2439    "font_family": "FiraCode Nerd Font Mono",
2440    "blinking": "off"
2441  },
2442  "languages": {
2443    "C": {
2444      "format_on_save": "language_server",
2445      "preferred_line_length": 64,
2446      "soft_wrap": "preferred_line_length"
2447    }
2448  }
2449}
2450```