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## Inline Completions Disabled in
 363
 364- Description: A list of language scopes in which inline completions should be disabled.
 365- Setting: `inline_completions_disabled_in`
 366- Default: `[]`
 367
 368**Options**
 369
 370List of `string` values
 371
 3721. Don't show inline completions in comments:
 373
 374```json
 375"disabled_in": ["comment"]
 376```
 377
 3782. Don't show inline completions in strings and comments:
 379
 380```json
 381"disabled_in": ["comment", "string"]
 382```
 383
 3843. Only in Go, don't show inline completions in strings and comments:
 385
 386```json
 387{
 388  "languages": {
 389    "Go": {
 390      "inline_completions_disabled_in": ["comment", "string"]
 391    }
 392  }
 393}
 394```
 395
 396## Current Line Highlight
 397
 398- Description: How to highlight the current line in the editor.
 399- Setting: `current_line_highlight`
 400- Default: `all`
 401
 402**Options**
 403
 4041. Don't highlight the current line:
 405
 406```json
 407"current_line_highlight": "none"
 408```
 409
 4102. Highlight the gutter area:
 411
 412```json
 413"current_line_highlight": "gutter"
 414```
 415
 4163. Highlight the editor area:
 417
 418```json
 419"current_line_highlight": "line"
 420```
 421
 4224. Highlight the full line:
 423
 424```json
 425"current_line_highlight": "all"
 426```
 427
 428## Cursor Blink
 429
 430- Description: Whether or not the cursor blinks.
 431- Setting: `cursor_blink`
 432- Default: `true`
 433
 434**Options**
 435
 436`boolean` values
 437
 438## Cursor Shape
 439
 440- Description: Cursor shape for the default editor.
 441- Setting: `cursor_shape`
 442- Default: `bar`
 443
 444**Options**
 445
 4461. A vertical bar:
 447
 448```json
 449"cursor_shape": "bar"
 450```
 451
 4522. A block that surrounds the following character:
 453
 454```json
 455"cursor_shape": "block"
 456```
 457
 4583. An underline / underscore that runs along the following character:
 459
 460```json
 461"cursor_shape": "underline"
 462```
 463
 4644. An box drawn around the following character:
 465
 466```json
 467"cursor_shape": "hollow"
 468```
 469
 470**Options**
 471
 4721. Position the dock attached to the bottom of the workspace: `bottom`
 4732. Position the dock to the right of the workspace like a side panel: `right`
 4743. Position the dock full screen over the entire workspace: `expanded`
 475
 476## Editor Scrollbar
 477
 478- Description: Whether or not to show the editor scrollbar and various elements in it.
 479- Setting: `scrollbar`
 480- Default:
 481
 482```json
 483"scrollbar": {
 484  "show": "auto",
 485  "cursors": true,
 486  "git_diff": true,
 487  "search_results": true,
 488  "selected_symbol": true,
 489  "diagnostics": true
 490},
 491```
 492
 493### Show Mode
 494
 495- Description: When to show the editor scrollbar.
 496- Setting: `show`
 497- Default: `auto`
 498
 499**Options**
 500
 5011. Show the scrollbar if there's important information or follow the system's configured behavior:
 502
 503```json
 504"scrollbar": {
 505  "show": "auto"
 506}
 507```
 508
 5092. Match the system's configured behavior:
 510
 511```json
 512"scrollbar": {
 513  "show": "system"
 514}
 515```
 516
 5173. Always show the scrollbar:
 518
 519```json
 520"scrollbar": {
 521  "show": "always"
 522}
 523```
 524
 5254. Never show the scrollbar:
 526
 527```json
 528"scrollbar": {
 529  "show": "never"
 530}
 531```
 532
 533### Cursor Indicators
 534
 535- Description: Whether to show cursor positions in the scrollbar.
 536- Setting: `cursors`
 537- Default: `true`
 538
 539**Options**
 540
 541`boolean` values
 542
 543### Git Diff Indicators
 544
 545- Description: Whether to show git diff indicators in the scrollbar.
 546- Setting: `git_diff`
 547- Default: `true`
 548
 549**Options**
 550
 551`boolean` values
 552
 553### Search Results Indicators
 554
 555- Description: Whether to show buffer search results in the scrollbar.
 556- Setting: `search_results`
 557- Default: `true`
 558
 559**Options**
 560
 561`boolean` values
 562
 563### Selected Symbols Indicators
 564
 565- Description: Whether to show selected symbol occurrences in the scrollbar.
 566- Setting: `selected_symbol`
 567- Default: `true`
 568
 569**Options**
 570
 571`boolean` values
 572
 573### Diagnostics
 574
 575- Description: Whether to show diagnostic indicators in the scrollbar.
 576- Setting: `diagnostics`
 577- Default: `true`
 578
 579**Options**
 580
 581`boolean` values
 582
 583## Editor Tab Bar
 584
 585- Description: Settings related to the editor's tab bar.
 586- Settings: `tab_bar`
 587- Default:
 588
 589```json
 590"tab_bar": {
 591  "show": true,
 592  "show_nav_history_buttons": true
 593}
 594```
 595
 596### Show
 597
 598- Description: Whether or not to show the tab bar in the editor.
 599- Setting: `show`
 600- Default: `true`
 601
 602**Options**
 603
 604`boolean` values
 605
 606### Navigation History Buttons
 607
 608- Description: Whether or not to show the navigation history buttons.
 609- Setting: `show_nav_history_buttons`
 610- Default: `true`
 611
 612**Options**
 613
 614`boolean` values
 615
 616## Editor Tabs
 617
 618- Description: Configuration for the editor tabs.
 619- Setting: `tabs`
 620- Default:
 621
 622```json
 623"tabs": {
 624  "close_position": "right",
 625  "file_icons": false,
 626  "git_status": false,
 627  "activate_on_close": "history"
 628},
 629```
 630
 631### Close Position
 632
 633- Description: Where to display close button within a tab.
 634- Setting: `close_position`
 635- Default: `right`
 636
 637**Options**
 638
 6391. Display the close button on the right:
 640
 641```json
 642{
 643  "close_position": "right"
 644}
 645```
 646
 6472. Display the close button on the left:
 648
 649```json
 650{
 651  "close_position": "left"
 652}
 653```
 654
 655### File Icons
 656
 657- Description: Whether to show the file icon for a tab.
 658- Setting: `file_icons`
 659- Default: `false`
 660
 661### Git Status
 662
 663- Description: Whether or not to show Git file status in tab.
 664- Setting: `git_status`
 665- Default: `false`
 666
 667### Activate on close
 668
 669- Description: What to do after closing the current tab.
 670- Setting: `activate_on_close`
 671- Default: `history`
 672
 673**Options**
 674
 6751.  Activate the tab that was open previously:
 676
 677```json
 678{
 679  "activate_on_close": "history"
 680}
 681```
 682
 6832. Activate the neighbour tab (prefers the right one, if present):
 684
 685```json
 686{
 687  "activate_on_close": "neighbour"
 688}
 689```
 690
 691## Editor Toolbar
 692
 693- Description: Whether or not to show various elements in the editor toolbar.
 694- Setting: `toolbar`
 695- Default:
 696
 697```json
 698"toolbar": {
 699  "breadcrumbs": true,
 700  "quick_actions": true
 701},
 702```
 703
 704**Options**
 705
 706Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
 707
 708## Enable Language Server
 709
 710- Description: Whether or not to use language servers to provide code intelligence.
 711- Setting: `enable_language_server`
 712- Default: `true`
 713
 714**Options**
 715
 716`boolean` values
 717
 718## Ensure Final Newline On Save
 719
 720- Description: Whether or not to ensure there's a single newline at the end of a buffer when saving it.
 721- Setting: `ensure_final_newline_on_save`
 722- Default: `true`
 723
 724**Options**
 725
 726`boolean` values
 727
 728## LSP
 729
 730- Description: Configuration for language servers.
 731- Setting: `lsp`
 732- Default: `null`
 733
 734**Options**
 735
 736The following settings can be overridden for specific language servers:
 737
 738- `initialization_options`
 739- `settings`
 740
 741To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
 742
 743Some 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.
 744
 745For example to pass the `check` option to `rust-analyzer`, use the following configuration:
 746
 747```json
 748"lsp": {
 749  "rust-analyzer": {
 750    "initialization_options": {
 751      "check": {
 752        "command": "clippy" // rust-analyzer.check.command (default: "check")
 753      }
 754    }
 755  }
 756}
 757```
 758
 759While other options may be changed at a runtime and should be placed under `settings`:
 760
 761```json
 762"lsp": {
 763  "yaml-language-server": {
 764    "settings": {
 765      "yaml": {
 766        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
 767      }
 768    }
 769  }
 770}
 771```
 772
 773## Format On Save
 774
 775- Description: Whether or not to perform a buffer format before saving.
 776- Setting: `format_on_save`
 777- Default: `on`
 778
 779**Options**
 780
 7811. `on`, enables format on save obeying `formatter` setting:
 782
 783```json
 784{
 785  "format_on_save": "on"
 786}
 787```
 788
 7892. `off`, disables format on save:
 790
 791```json
 792{
 793  "format_on_save": "off"
 794}
 795```
 796
 797## Formatter
 798
 799- Description: How to perform a buffer format.
 800- Setting: `formatter`
 801- Default: `auto`
 802
 803**Options**
 804
 8051. To use the current language server, use `"language_server"`:
 806
 807```json
 808{
 809  "formatter": "language_server"
 810}
 811```
 812
 8132. 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):
 814
 815```json
 816{
 817  "formatter": {
 818    "external": {
 819      "command": "sed",
 820      "arguments": ["-e", "s/ *$//"]
 821    }
 822  }
 823}
 824```
 825
 8263. 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.
 827
 828```json
 829  "formatter": {
 830    "external": {
 831      "command": "prettier",
 832      "arguments": ["--stdin-filepath", "{buffer_path}"]
 833    }
 834  }
 835```
 836
 8374. Or to use code actions provided by the connected language servers, use `"code_actions"`:
 838
 839```json
 840{
 841  "formatter": {
 842    "code_actions": {
 843      // Use ESLint's --fix:
 844      "source.fixAll.eslint": true,
 845      // Organize imports on save:
 846      "source.organizeImports": true
 847    }
 848  }
 849}
 850```
 851
 8525. Or to use multiple formatters consecutively, use an array of formatters:
 853
 854```json
 855{
 856  "formatter": [
 857    {"language_server": {"name": "rust-analyzer"}},
 858    {"external": {
 859      "command": "sed",
 860      "arguments": ["-e", "s/ *$//"]
 861    }
 862  ]
 863}
 864```
 865
 866Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
 867If any of the formatters fails, the subsequent ones will still be executed.
 868
 869## Code Actions On Format
 870
 871- Description: The code actions to perform with the primary language server when formatting the buffer.
 872- Setting: `code_actions_on_format`
 873- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
 874
 875**Examples**
 876
 877<!--
 878TBD: Add Python Ruff source.organizeImports example
 879-->
 880
 8811. Organize imports on format in TypeScript and TSX buffers:
 882
 883```json
 884{
 885  "languages": {
 886    "TypeScript": {
 887      "code_actions_on_format": {
 888        "source.organizeImports": true
 889      }
 890    },
 891    "TSX": {
 892      "code_actions_on_format": {
 893        "source.organizeImports": true
 894      }
 895    }
 896  }
 897}
 898```
 899
 9002. Run ESLint `fixAll` code action when formatting:
 901
 902```json
 903{
 904  "languages": {
 905    "JavaScript": {
 906      "code_actions_on_format": {
 907        "source.fixAll.eslint": true
 908      }
 909    }
 910  }
 911}
 912```
 913
 9143. Run only a single ESLint rule when using `fixAll`:
 915
 916```json
 917{
 918  "languages": {
 919    "JavaScript": {
 920      "code_actions_on_format": {
 921        "source.fixAll.eslint": true
 922      }
 923    }
 924  },
 925  "lsp": {
 926    "eslint": {
 927      "settings": {
 928        "codeActionOnSave": {
 929          "rules": ["import/order"]
 930        }
 931      }
 932    }
 933  }
 934}
 935```
 936
 937## Auto close
 938
 939- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
 940- Setting: `use_autoclose`
 941- Default: `true`
 942
 943**Options**
 944
 945`boolean` values
 946
 947## Always Treat Brackets As Autoclosed
 948
 949- Description: Controls how the editor handles the autoclosed characters.
 950- Setting: `always_treat_brackets_as_autoclosed`
 951- Default: `false`
 952
 953**Options**
 954
 955`boolean` values
 956
 957**Example**
 958
 959If the setting is set to `true`:
 960
 9611. Enter in the editor: `)))`
 9622. Move the cursor to the start: `^)))`
 9633. Enter again: `)))`
 964
 965The result is still `)))` and not `))))))`, which is what it would be by default.
 966
 967## File Scan Exclusions
 968
 969- Setting: `file_scan_exclusions`
 970- 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.
 971- Default:
 972
 973```json
 974"file_scan_exclusions": [
 975  "**/.git",
 976  "**/.svn",
 977  "**/.hg",
 978  "**/CVS",
 979  "**/.DS_Store",
 980  "**/Thumbs.db",
 981  "**/.classpath",
 982  "**/.settings"
 983],
 984```
 985
 986Note, 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.
 987
 988## File Types
 989
 990- Setting: `file_types`
 991- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
 992- Default: `{}`
 993
 994**Examples**
 995
 996To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
 997
 998```json
 999{
1000  "file_types": {
1001    "C++": ["c"],
1002    "TOML": ["MyLockFile"],
1003    "Dockerfile": ["Dockerfile*"]
1004  }
1005}
1006```
1007
1008## Git
1009
1010- Description: Configuration for git-related features.
1011- Setting: `git`
1012- Default:
1013
1014```json
1015{
1016  "git": {
1017    "git_gutter": "tracked_files",
1018    "inline_blame": {
1019      "enabled": true
1020    }
1021  }
1022}
1023```
1024
1025### Git Gutter
1026
1027- Description: Whether or not to show the git gutter.
1028- Setting: `git_gutter`
1029- Default: `tracked_files`
1030
1031**Options**
1032
10331. Show git gutter in tracked files
1034
1035```json
1036{
1037  "git": {
1038    "git_gutter": "tracked_files"
1039  }
1040}
1041```
1042
10432. Hide git gutter
1044
1045```json
1046{
1047  "git": {
1048    "git_gutter": "hide"
1049  }
1050}
1051```
1052
1053### Inline Git Blame
1054
1055- Description: Whether or not to show git blame information inline, on the currently focused line.
1056- Setting: `inline_blame`
1057- Default:
1058
1059```json
1060{
1061  "git": {
1062    "inline_blame": {
1063      "enabled": true
1064    }
1065  }
1066}
1067```
1068
1069**Options**
1070
10711. Disable inline git blame:
1072
1073```json
1074{
1075  "git": {
1076    "inline_blame": {
1077      "enabled": false
1078    }
1079  }
1080}
1081```
1082
10832. Only show inline git blame after a delay (that starts after cursor stops moving):
1084
1085```json
1086{
1087  "git": {
1088    "inline_blame": {
1089      "enabled": true,
1090      "delay_ms": 500
1091    }
1092  }
1093}
1094```
1095
10963. Show a commit summary next to the commit date and author:
1097
1098```json
1099{
1100  "git": {
1101    "inline_blame": {
1102      "enabled": true,
1103      "show_commit_summary": true
1104    }
1105  }
1106}
1107```
1108
11094. Use this as the minimum column at which to display inline blame information:
1110
1111```json
1112{
1113  "git": {
1114    "inline_blame": {
1115      "enabled": true,
1116      "min_column": 80
1117    }
1118  }
1119}
1120```
1121
1122## Indent Guides
1123
1124- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1125- Setting: `indent_guides`
1126- Default:
1127
1128```json
1129{
1130  "indent_guides": {
1131    "enabled": true,
1132    "line_width": 1,
1133    "active_line_width": 1,
1134    "coloring": "fixed",
1135    "background_coloring": "disabled"
1136  }
1137}
1138```
1139
1140**Options**
1141
11421. Disable indent guides
1143
1144```json
1145{
1146  "indent_guides": {
1147    "enabled": false
1148  }
1149}
1150```
1151
11522. Enable indent guides for a specific language.
1153
1154```json
1155{
1156  "languages": {
1157    "Python": {
1158      "indent_guides": {
1159        "enabled": true
1160      }
1161    }
1162  }
1163}
1164```
1165
11663. Enable indent aware coloring ("rainbow indentation").
1167   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.
1168
1169```json
1170{
1171  "indent_guides": {
1172    "enabled": true,
1173    "coloring": "indent_aware"
1174  }
1175}
1176```
1177
11784. Enable indent aware background coloring ("rainbow indentation").
1179   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.
1180
1181```json
1182{
1183  "indent_guides": {
1184    "enabled": true,
1185    "coloring": "indent_aware",
1186    "background_coloring": "indent_aware"
1187  }
1188}
1189```
1190
1191## Hard Tabs
1192
1193- Description: Whether to indent lines using tab characters or multiple spaces.
1194- Setting: `hard_tabs`
1195- Default: `false`
1196
1197**Options**
1198
1199`boolean` values
1200
1201## Hover Popover Enabled
1202
1203- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1204- Setting: `hover_popover_enabled`
1205- Default: `true`
1206
1207**Options**
1208
1209`boolean` values
1210
1211## Inlay hints
1212
1213- Description: Configuration for displaying extra text with hints in the editor.
1214- Setting: `inlay_hints`
1215- Default:
1216
1217```json
1218"inlay_hints": {
1219  "enabled": false,
1220  "show_type_hints": true,
1221  "show_parameter_hints": true,
1222  "show_other_hints": true,
1223  "show_background": false,
1224  "edit_debounce_ms": 700,
1225  "scroll_debounce_ms": 50
1226}
1227```
1228
1229**Options**
1230
1231Inlay hints querying consists of two parts: editor (client) and LSP server.
1232With 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.
1233At 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.
1234
1235The following languages have inlay hints preconfigured by Zed:
1236
1237- [Go](https://docs.zed.dev/languages/go)
1238- [Rust](https://docs.zed.dev/languages/rust)
1239- [Svelte](https://docs.zed.dev/languages/svelte)
1240- [Typescript](https://docs.zed.dev/languages/typescript)
1241
1242Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
1243
1244Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
1245Settings-related hint updates are not debounced.
1246
1247## Journal
1248
1249- Description: Configuration for the journal.
1250- Setting: `journal`
1251- Default:
1252
1253```json
1254"journal": {
1255  "path": "~",
1256  "hour_format": "hour12"
1257}
1258```
1259
1260### Path
1261
1262- Description: The path of the directory where journal entries are stored.
1263- Setting: `path`
1264- Default: `~`
1265
1266**Options**
1267
1268`string` values
1269
1270### Hour Format
1271
1272- Description: The format to use for displaying hours in the journal.
1273- Setting: `hour_format`
1274- Default: `hour12`
1275
1276**Options**
1277
12781. 12-hour format:
1279
1280```json
1281{
1282  "hour_format": "hour12"
1283}
1284```
1285
12862. 24-hour format:
1287
1288```json
1289{
1290  "hour_format": "hour24"
1291}
1292```
1293
1294## Languages
1295
1296- Description: Configuration for specific languages.
1297- Setting: `languages`
1298- Default: `null`
1299
1300**Options**
1301
1302To override settings for a language, add an entry for that languages name to the `languages` value. Example:
1303
1304```json
1305"languages": {
1306  "C": {
1307    "format_on_save": "off",
1308    "preferred_line_length": 64,
1309    "soft_wrap": "preferred_line_length"
1310  },
1311  "JSON": {
1312    "tab_size": 4
1313  }
1314}
1315```
1316
1317The following settings can be overridden for each specific language:
1318
1319- `enable_language_server`
1320- `ensure_final_newline_on_save`
1321- `format_on_save`
1322- `formatter`
1323- `hard_tabs`
1324- `preferred_line_length`
1325- `remove_trailing_whitespace_on_save`
1326- `show_inline_completions`
1327- `show_whitespaces`
1328- `soft_wrap`
1329- `tab_size`
1330- `use_autoclose`
1331- `always_treat_brackets_as_autoclosed`
1332
1333These values take in the same options as the root-level settings with the same name.
1334
1335## Network Proxy
1336
1337- Description: Configure a network proxy for Zed.
1338- Setting: `proxy`
1339- Default: `null`
1340
1341**Options**
1342
1343The proxy setting must contain a URL to the proxy.
1344
1345The following URI schemes are supported:
1346
1347- `http`
1348- `https`
1349- `socks4` - SOCKS4 proxy with local DNS
1350- `socks4a` - SOCKS4 proxy with remote DNS
1351- `socks5` - SOCKS5 proxy with local DNS
1352- `socks5h` - SOCKS5 proxy with remote DNS
1353
1354`http` will be used when no scheme is specified.
1355
1356By 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`.
1357
1358For example, to set an `http` proxy, add the following to your settings:
1359
1360```json
1361{
1362  "proxy": "http://127.0.0.1:10809"
1363}
1364```
1365
1366Or to set a `socks5` proxy:
1367
1368```json
1369{
1370  "proxy": "socks5h://localhost:10808"
1371}
1372```
1373
1374## Preview tabs
1375
1376- Description:
1377  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. \
1378   There are several ways to convert a preview tab into a regular tab:
1379
1380  - Double-clicking on the file
1381  - Double-clicking on the tab header
1382  - Using the `project_panel::OpenPermanent` action
1383  - Editing the file
1384  - Dragging the file to a different pane
1385
1386- Setting: `preview_tabs`
1387- Default:
1388
1389```json
1390"preview_tabs": {
1391  "enabled": true,
1392  "enable_preview_from_file_finder": false,
1393  "enable_preview_from_code_navigation": false,
1394}
1395```
1396
1397### Enable preview from file finder
1398
1399- Description: Determines whether to open files in preview mode when selected from the file finder.
1400- Setting: `enable_preview_from_file_finder`
1401- Default: `false`
1402
1403**Options**
1404
1405`boolean` values
1406
1407### Enable preview from code navigation
1408
1409- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
1410- Setting: `enable_preview_from_code_navigation`
1411- Default: `false`
1412
1413**Options**
1414
1415`boolean` values
1416
1417## Preferred Line Length
1418
1419- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
1420- Setting: `preferred_line_length`
1421- Default: `80`
1422
1423**Options**
1424
1425`integer` values
1426
1427## Projects Online By Default
1428
1429- Description: Whether or not to show the online projects view by default.
1430- Setting: `projects_online_by_default`
1431- Default: `true`
1432
1433**Options**
1434
1435`boolean` values
1436
1437## Remove Trailing Whitespace On Save
1438
1439- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
1440- Setting: `remove_trailing_whitespace_on_save`
1441- Default: `true`
1442
1443**Options**
1444
1445`boolean` values
1446
1447## Search
1448
1449- Description: Search options to enable by default when opening new project and buffer searches.
1450- Setting: `search`
1451- Default:
1452
1453```json
1454"search": {
1455  "whole_word": false,
1456  "case_sensitive": false,
1457  "include_ignored": false,
1458  "regex": false
1459},
1460```
1461
1462## Show Call Status Icon
1463
1464- Description: Whether or not to show the call status icon in the status bar.
1465- Setting: `show_call_status_icon`
1466- Default: `true`
1467
1468**Options**
1469
1470`boolean` values
1471
1472## Show Completions On Input
1473
1474- Description: Whether or not to show completions as you type.
1475- Setting: `show_completions_on_input`
1476- Default: `true`
1477
1478**Options**
1479
1480`boolean` values
1481
1482## Show Completion Documentation
1483
1484- Description: Whether to display inline and alongside documentation for items in the completions menu.
1485- Setting: `show_completion_documentation`
1486- Default: `true`
1487
1488**Options**
1489
1490`boolean` values
1491
1492## Completion Documentation Debounce Delay
1493
1494- Description: The debounce delay before re-querying the language server for completion documentation when not included in original completion list.
1495- Setting: `completion_documentation_secondary_query_debounce`
1496- Default: `300` ms
1497
1498**Options**
1499
1500`integer` values
1501
1502## Show Inline Completions
1503
1504- Description: Whether to show inline completions as you type or manually by triggering `editor::ShowInlineCompletion`.
1505- Setting: `show_inline_completions`
1506- Default: `true`
1507
1508**Options**
1509
1510`boolean` values
1511
1512## Show Whitespaces
1513
1514- Description: Whether or not to show render whitespace characters in the editor.
1515- Setting: `show_whitespaces`
1516- Default: `selection`
1517
1518**Options**
1519
15201. `all`
15212. `selection`
15223. `none`
15234. `boundary`
1524
1525## Soft Wrap
1526
1527- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
1528- Setting: `soft_wrap`
1529- Default: `none`
1530
1531**Options**
1532
15331. `none` to avoid wrapping generally, unless the line is too long
15342. `prefer_line` (deprecated, same as `none`)
15353. `editor_width` to wrap lines that overflow the editor width
15364. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
1537
1538## Wrap Guides (Vertical Rulers)
1539
1540- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
1541- Setting: `wrap_guides`
1542- Default: []
1543
1544**Options**
1545
1546List of `integer` column numbers
1547
1548## Tab Size
1549
1550- Description: The number of spaces to use for each tab character.
1551- Setting: `tab_size`
1552- Default: `4`
1553
1554**Options**
1555
1556`integer` values
1557
1558## Telemetry
1559
1560- Description: Control what info is collected by Zed.
1561- Setting: `telemetry`
1562- Default:
1563
1564```json
1565"telemetry": {
1566  "diagnostics": true,
1567  "metrics": true
1568},
1569```
1570
1571**Options**
1572
1573### Diagnostics
1574
1575- Description: Setting for sending debug-related data, such as crash reports.
1576- Setting: `diagnostics`
1577- Default: `true`
1578
1579**Options**
1580
1581`boolean` values
1582
1583### Metrics
1584
1585- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
1586- Setting: `metrics`
1587- Default: `true`
1588
1589**Options**
1590
1591`boolean` values
1592
1593## Terminal
1594
1595- Description: Configuration for the terminal.
1596- Setting: `terminal`
1597- Default:
1598
1599```json
1600{
1601  "terminal": {
1602    "alternate_scroll": "off",
1603    "blinking": "terminal_controlled",
1604    "copy_on_select": false,
1605    "dock": "bottom",
1606    "detect_venv": {
1607      "on": {
1608        "directories": [".env", "env", ".venv", "venv"],
1609        "activate_script": "default"
1610      }
1611    },
1612    "env": {},
1613    "font_family": null,
1614    "font_features": null,
1615    "font_size": null,
1616    "line_height": "comfortable",
1617    "option_as_meta": false,
1618    "button": false,
1619    "shell": {},
1620    "toolbar": {
1621      "title": true
1622    },
1623    "working_directory": "current_project_directory"
1624  }
1625}
1626```
1627
1628### Terminal: Dock
1629
1630- Description: Control the position of the dock
1631- Setting: `dock`
1632- Default: `bottom`
1633
1634**Options**
1635
1636`"bottom"`, `"left"` or `"right"`
1637
1638### Terminal: Alternate Scroll
1639
1640- 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.
1641- Setting: `alternate_scroll`
1642- Default: `off`
1643
1644**Options**
1645
16461. Default alternate scroll mode to on
1647
1648```json
1649{
1650  "terminal": {
1651    "alternate_scroll": "on"
1652  }
1653}
1654```
1655
16562. Default alternate scroll mode to off
1657
1658```json
1659{
1660  "terminal": {
1661    "alternate_scroll": "off"
1662  }
1663}
1664```
1665
1666### Terminal: Blinking
1667
1668- Description: Set the cursor blinking behavior in the terminal
1669- Setting: `blinking`
1670- Default: `terminal_controlled`
1671
1672**Options**
1673
16741. Never blink the cursor, ignore the terminal mode
1675
1676```json
1677{
1678  "terminal": {
1679    "blinking": "off"
1680  }
1681}
1682```
1683
16842. Default the cursor blink to off, but allow the terminal to turn blinking on
1685
1686```json
1687{
1688  "terminal": {
1689    "blinking": "terminal_controlled"
1690  }
1691}
1692```
1693
16943. Always blink the cursor, ignore the terminal mode
1695
1696```json
1697{
1698  "terminal": {
1699    "blinking": "on"
1700  }
1701}
1702```
1703
1704### Terminal: Copy On Select
1705
1706- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
1707- Setting: `copy_on_select`
1708- Default: `false`
1709
1710**Options**
1711
1712`boolean` values
1713
1714**Example**
1715
1716```json
1717{
1718  "terminal": {
1719    "copy_on_select": true
1720  }
1721}
1722```
1723
1724### Terminal: Env
1725
1726- 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
1727- Setting: `env`
1728- Default: `{}`
1729
1730**Example**
1731
1732```json
1733{
1734  "terminal": {
1735    "env": {
1736      "ZED": "1",
1737      "KEY": "value1:value2"
1738    }
1739  }
1740}
1741```
1742
1743### Terminal: Font Size
1744
1745- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
1746- Setting: `font_size`
1747- Default: `null`
1748
1749**Options**
1750
1751`integer` values
1752
1753```json
1754{
1755  "terminal": {
1756    "font_size": 15
1757  }
1758}
1759```
1760
1761### Terminal: Font Family
1762
1763- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
1764- Setting: `font_family`
1765- Default: `null`
1766
1767**Options**
1768
1769The name of any font family installed on the user's system
1770
1771```json
1772{
1773  "terminal": {
1774    "font_family": "Berkeley Mono"
1775  }
1776}
1777```
1778
1779### Terminal: Font Features
1780
1781- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
1782- Setting: `font_features`
1783- Default: `null`
1784- Platform: macOS and Windows.
1785
1786**Options**
1787
1788See Buffer Font Features
1789
1790```json
1791{
1792  "terminal": {
1793    "font_features": {
1794      "calt": false
1795      // See Buffer Font Features for more features
1796    }
1797  }
1798}
1799```
1800
1801### Terminal: Line Height
1802
1803- Description: Set the terminal's line height.
1804- Setting: `line_height`
1805- Default: `comfortable`
1806
1807**Options**
1808
18091. Use a line height that's `comfortable` for reading, 1.618. (default)
1810
1811```json
1812{
1813  "terminal": {
1814    "line_height": "comfortable"
1815  }
1816}
1817```
1818
18192. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
1820
1821```json
1822{
1823  "terminal": {
1824    "line_height": "standard"
1825  }
1826}
1827```
1828
18293.  Use a custom line height.
1830
1831```json
1832{
1833  "terminal": {
1834    "line_height": {
1835      "custom": 2
1836    }
1837  }
1838}
1839```
1840
1841### Terminal: Option As Meta
1842
1843- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
1844- Setting: `option_as_meta`
1845- Default: `false`
1846
1847**Options**
1848
1849`boolean` values
1850
1851```json
1852{
1853  "terminal": {
1854    "option_as_meta": true
1855  }
1856}
1857```
1858
1859### Terminal: Shell
1860
1861- Description: What shell to use when launching the terminal.
1862- Setting: `shell`
1863- Default: `system`
1864
1865**Options**
1866
18671. Use the system's default terminal configuration (usually the `/etc/passwd` file).
1868
1869```json
1870{
1871  "terminal": {
1872    "shell": "system"
1873  }
1874}
1875```
1876
18772. A program to launch:
1878
1879```json
1880{
1881  "terminal": {
1882    "shell": {
1883      "program": "sh"
1884    }
1885  }
1886}
1887```
1888
18893. A program with arguments:
1890
1891```json
1892{
1893  "terminal": {
1894    "shell": {
1895      "with_arguments": {
1896        "program": "/bin/bash",
1897        "args": ["--login"]
1898      }
1899    }
1900  }
1901}
1902```
1903
1904## Terminal: Detect Virtual Environments {#terminal-detect_venv}
1905
1906- 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.
1907- Setting: `detect_venv`
1908- Default:
1909
1910```json
1911{
1912  "terminal": {
1913    "detect_venv": {
1914      "on": {
1915        // Default directories to search for virtual environments, relative
1916        // to the current working directory. We recommend overriding this
1917        // in your project's settings, rather than globally.
1918        "directories": [".venv", "venv"],
1919        // Can also be `csh`, `fish`, and `nushell`
1920        "activate_script": "default"
1921      }
1922    }
1923  }
1924}
1925```
1926
1927Disable with:
1928
1929```json
1930{
1931  "terminal": {
1932    "detect_venv": "off"
1933  }
1934}
1935```
1936
1937## Terminal: Toolbar
1938
1939- Description: Whether or not to show various elements in the terminal toolbar. It only affects terminals placed in the editor pane.
1940- Setting: `toolbar`
1941- Default:
1942
1943```json
1944{
1945  "terminal": {
1946    "toolbar": {
1947      "title": true
1948    }
1949  }
1950}
1951```
1952
1953**Options**
1954
1955At 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.
1956
1957### Terminal: Button
1958
1959- Description: Control to show or hide the terminal button in the status bar
1960- Setting: `button`
1961- Default: `true`
1962
1963**Options**
1964
1965`boolean` values
1966
1967```json
1968{
1969  "terminal": {
1970    "button": false
1971  }
1972}
1973```
1974
1975### Terminal: Working Directory
1976
1977- Description: What working directory to use when launching the terminal.
1978- Setting: `working_directory`
1979- Default: `"current_project_directory"`
1980
1981**Options**
1982
19831. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
1984
1985```json
1986{
1987  "terminal": {
1988    "working_directory": "current_project_directory"
1989  }
1990}
1991```
1992
19932. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
1994
1995```json
1996{
1997  "terminal": {
1998    "working_directory": "first_project_directory"
1999  }
2000}
2001```
2002
20033. Always use this platform's home directory (if we can find it)
2004
2005```json
2006{
2007  "terminal": {
2008    "working_directory": "always_home"
2009  }
2010}
2011```
2012
20134. 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.
2014
2015```json
2016{
2017  "terminal": {
2018    "working_directory": {
2019      "always": {
2020        "directory": "~/zed/projects/"
2021      }
2022    }
2023  }
2024}
2025```
2026
2027## Theme
2028
2029- 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.
2030- Setting: `theme`
2031- Default: `One Dark`
2032
2033### Theme Object
2034
2035- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2036- Setting: `theme`
2037- Default:
2038
2039```json
2040"theme": {
2041  "mode": "system",
2042  "dark": "One Dark",
2043  "light": "One Light"
2044},
2045```
2046
2047### Mode
2048
2049- Description: Specify theme mode.
2050- Setting: `mode`
2051- Default: `system`
2052
2053**Options**
2054
20551. Set the theme to dark mode
2056
2057```json
2058{
2059  "mode": "dark"
2060}
2061```
2062
20632. Set the theme to light mode
2064
2065```json
2066{
2067  "mode": "light"
2068}
2069```
2070
20713. Set the theme to system mode
2072
2073```json
2074{
2075  "mode": "system"
2076}
2077```
2078
2079### Dark
2080
2081- Description: The name of the dark Zed theme to use for the UI.
2082- Setting: `dark`
2083- Default: `One Dark`
2084
2085**Options**
2086
2087Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2088
2089### Light
2090
2091- Description: The name of the light Zed theme to use for the UI.
2092- Setting: `light`
2093- Default: `One Light`
2094
2095**Options**
2096
2097Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
2098
2099## Vim
2100
2101- Description: Whether or not to enable vim mode (work in progress).
2102- Setting: `vim_mode`
2103- Default: `false`
2104
2105## Project Panel
2106
2107- Description: Customize project panel
2108- Setting: `project_panel`
2109- Default:
2110
2111```json
2112{
2113  "project_panel": {
2114    "button": true,
2115    "default_width": 240,
2116    "dock": "left",
2117    "file_icons": true,
2118    "folder_icons": true,
2119    "git_status": true,
2120    "indent_size": 20,
2121    "indent_guides": true,
2122    "auto_reveal_entries": true,
2123    "auto_fold_dirs": true,
2124    "scrollbar": {
2125      "show": null
2126    },
2127    "indent_guides": {
2128      "show": "always"
2129    }
2130  }
2131}
2132```
2133
2134### Dock
2135
2136- Description: Control the position of the dock
2137- Setting: `dock`
2138- Default: `left`
2139
2140**Options**
2141
21421. Default dock position to left
2143
2144```json
2145{
2146  "dock": "left"
2147}
2148```
2149
21502. Default dock position to right
2151
2152```json
2153{
2154  "dock": "right"
2155}
2156```
2157
2158### Git Status
2159
2160- Description: Indicates newly created and updated files
2161- Setting: `git_status`
2162- Default: `true`
2163
2164**Options**
2165
21661. Default enable git status
2167
2168```json
2169{
2170  "git_status": true
2171}
2172```
2173
21742. Default disable git status
2175
2176```json
2177{
2178  "git_status": false
2179}
2180```
2181
2182### Default Width
2183
2184- Description: Customize default width taken by project panel
2185- Setting: `default_width`
2186- Default: N/A width in pixels (eg: 420)
2187
2188**Options**
2189
2190`boolean` values
2191
2192### Auto Reveal Entries
2193
2194- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
2195- Setting: `auto_reveal_entries`
2196- Default: `true`
2197
2198**Options**
2199
22001. Enable auto reveal entries
2201
2202```json
2203{
2204  "auto_reveal_entries": true
2205}
2206```
2207
22082. Disable auto reveal entries
2209
2210```json
2211{
2212  "auto_reveal_entries": false
2213}
2214```
2215
2216### Auto Fold Dirs
2217
2218- Description: Whether to fold directories automatically when directory has only one directory inside.
2219- Setting: `auto_fold_dirs`
2220- Default: `true`
2221
2222**Options**
2223
22241. Enable auto fold dirs
2225
2226```json
2227{
2228  "auto_fold_dirs": true
2229}
2230```
2231
22322. Disable auto fold dirs
2233
2234```json
2235{
2236  "auto_fold_dirs": false
2237}
2238```
2239
2240### Indent Size
2241
2242- Description: Amount of indentation (in pixels) for nested items.
2243- Setting: `indent_size`
2244- Default: `20`
2245
2246### Indent Guides: Show
2247
2248- Description: Whether to show indent guides in the project panel. Possible values: "always", "never".
2249- Setting: `indent_guides`
2250
2251```json
2252"indent_guides": {
2253  "show": "always"
2254}
2255```
2256
2257**Options**
2258
22591. Show indent guides in the project panel
2260
2261```json
2262{
2263  "indent_guides": {
2264    "show": "always"
2265  }
2266}
2267```
2268
22692. Hide indent guides in the project panel
2270
2271```json
2272{
2273  "indent_guides": {
2274    "show": "never"
2275  }
2276}
2277```
2278
2279### Scrollbar: Show
2280
2281- 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.
2282- Setting: `scrollbar`
2283- Default:
2284
2285```json
2286"scrollbar": {
2287  "show": null
2288}
2289```
2290
2291**Options**
2292
22931. Show scrollbar in the project panel
2294
2295```json
2296{
2297  "scrollbar": {
2298    "show": "always"
2299  }
2300}
2301```
2302
23032. Hide scrollbar in the project panel
2304
2305```json
2306{
2307  "scrollbar": {
2308    "show": "never"
2309  }
2310}
2311```
2312
2313## Assistant Panel
2314
2315- Description: Customize assistant panel
2316- Setting: `assistant`
2317- Default:
2318
2319```json
2320"assistant": {
2321  "enabled": true,
2322  "button": true,
2323  "dock": "right",
2324  "default_width": 640,
2325  "default_height": 320,
2326  "provider": "openai",
2327  "version": "1",
2328},
2329```
2330
2331## Outline Panel
2332
2333- Description: Customize outline Panel
2334- Setting: `outline_panel`
2335- Default:
2336
2337```json
2338"outline_panel": {
2339  "button": true,
2340  "default_width": 240,
2341  "dock": "left",
2342  "file_icons": true,
2343  "folder_icons": true,
2344  "git_status": true,
2345  "indent_size": 20,
2346  "auto_reveal_entries": true,
2347  "auto_fold_dirs": true,
2348  "indent_guides": {
2349    "show": "always"
2350  },
2351  "scrollbar": {
2352    "show": null
2353  }
2354}
2355```
2356
2357## Calls
2358
2359- Description: Customize behavior when participating in a call
2360- Setting: `calls`
2361- Default:
2362
2363```json
2364"calls": {
2365  // Join calls with the microphone live by default
2366  "mute_on_join": false,
2367  // Share your project when you are the first to join a channel
2368  "share_on_join": false
2369},
2370```
2371
2372## Unnecessary Code Fade
2373
2374- Description: How much to fade out unused code.
2375- Setting: `unnecessary_code_fade`
2376- Default: `0.3`
2377
2378**Options**
2379
2380Float values between `0.0` and `0.9`, where:
2381
2382- `0.0` means no fading (unused code looks the same as used code)
2383- `0.9` means maximum fading (unused code is very faint but still visible)
2384
2385**Example**
2386
2387```json
2388{
2389  "unnecessary_code_fade": 0.5
2390}
2391```
2392
2393## UI Font Family
2394
2395- Description: The name of the font to use for text in the UI.
2396- Setting: `ui_font_family`
2397- Default: `Zed Plex Sans`
2398
2399**Options**
2400
2401The name of any font family installed on the system.
2402
2403## UI Font Features
2404
2405- Description: The OpenType features to enable for text in the UI.
2406- Setting: `ui_font_features`
2407- Default: `null`
2408- Platform: macOS and Windows.
2409
2410**Options**
2411
2412Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
2413
2414For example, to disable font ligatures, add the following to your settings:
2415
2416```json
2417{
2418  "ui_font_features": {
2419    "calt": false
2420  }
2421}
2422```
2423
2424You can also set other OpenType features, like setting `cv01` to `7`:
2425
2426```json
2427{
2428  "ui_font_features": {
2429    "cv01": 7
2430  }
2431}
2432```
2433
2434## UI Font Fallbacks
2435
2436- Description: The font fallbacks to use for text in the UI.
2437- Setting: `ui_font_fallbacks`
2438- Default: `null`
2439- Platform: macOS and Windows.
2440
2441**Options**
2442
2443For example, to use `Nerd Font` as a fallback, add the following to your settings:
2444
2445```json
2446{
2447  "ui_font_fallbacks": ["Nerd Font"]
2448}
2449```
2450
2451## UI Font Size
2452
2453- Description: The default font size for text in the UI.
2454- Setting: `ui_font_size`
2455- Default: `16`
2456
2457**Options**
2458
2459`integer` values from `6` to `100` pixels (inclusive)
2460
2461## UI Font Weight
2462
2463- Description: The default font weight for text in the UI.
2464- Setting: `ui_font_weight`
2465- Default: `400`
2466
2467**Options**
2468
2469`integer` values between `100` and `900`
2470
2471## An example configuration:
2472
2473```json
2474// ~/.config/zed/settings.json
2475{
2476  "theme": "cave-light",
2477  "tab_size": 2,
2478  "preferred_line_length": 80,
2479  "soft_wrap": "none",
2480
2481  "buffer_font_size": 18,
2482  "buffer_font_family": "Zed Plex Mono",
2483
2484  "autosave": "on_focus_change",
2485  "format_on_save": "off",
2486  "vim_mode": false,
2487  "projects_online_by_default": true,
2488  "terminal": {
2489    "font_family": "FiraCode Nerd Font Mono",
2490    "blinking": "off"
2491  },
2492  "languages": {
2493    "C": {
2494      "format_on_save": "language_server",
2495      "preferred_line_length": 64,
2496      "soft_wrap": "preferred_line_length"
2497    }
2498  }
2499}
2500```