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
  34- Description: Styling settings applied to the active pane.
  35- Setting: `active_pane_modifiers`
  36- Default:
  37
  38```json
  39{
  40  "active_pane_modifiers": {
  41    "magnification": 1.0,
  42    "border_size": 0.0,
  43    "inactive_opacity": 1.0
  44  }
  45}
  46```
  47
  48### Magnification
  49
  50- 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.
  51- Setting: `magnification`
  52- Default: `1.0`
  53
  54**Options**
  55
  56`float` values
  57
  58### Border size
  59
  60- 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.
  61- Setting: `border_size`
  62- Default: `0.0`
  63
  64**Options**
  65
  66Non-negative `float` values
  67
  68### Inactive Opacity
  69
  70- 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.
  71- Setting: `inactive_opacity`
  72- Default: `1.0`
  73
  74**Options**
  75
  76`float` values
  77
  78## Bottom Dock Layout
  79
  80- Description: Control the layout of the bottom dock, relative to the left and right docks
  81- Setting: `bottom_dock_layout`
  82- Default: `"contained"`
  83
  84**Options**
  85
  861. Contain the bottom dock, giving the full height of the window to the left and right docks
  87
  88```json
  89{
  90  "bottom_dock_layout": "contained"
  91}
  92```
  93
  942. Give the bottom dock the full width of the window, truncating the left and right docks
  95
  96```json
  97{
  98  "bottom_dock_layout": "full"
  99}
 100```
 101
 1023. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window
 103
 104```json
 105{
 106  "bottom_dock_layout": "left_aligned"
 107}
 108```
 109
 1103. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
 111
 112```json
 113{
 114  "bottom_dock_layout": "right_aligned"
 115}
 116```
 117
 118## Auto Install extensions
 119
 120- Description: Define extensions to be autoinstalled or never be installed.
 121- Setting: `auto_install_extension`
 122- Default: `{ "html": true }`
 123
 124**Options**
 125
 126You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions#installation-location):
 127
 128On MacOS:
 129
 130```sh
 131ls ~/Library/Application\ Support/Zed/extensions/installed/
 132```
 133
 134On Linux:
 135
 136```sh
 137ls ~/.local/share/zed/extensions/installed
 138```
 139
 140Define extensions which should be installed (`true`) or never installed (`false`).
 141
 142```json
 143{
 144  "auto_install_extensions": {
 145    "html": true,
 146    "dockerfile": true,
 147    "docker-compose": false
 148  }
 149}
 150```
 151
 152## Autosave
 153
 154- Description: When to automatically save edited buffers.
 155- Setting: `autosave`
 156- Default: `off`
 157
 158**Options**
 159
 1601. To disable autosave, set it to `off`:
 161
 162```json
 163{
 164  "autosave": "off"
 165}
 166```
 167
 1682. To autosave when focus changes, use `on_focus_change`:
 169
 170```json
 171{
 172  "autosave": "on_focus_change"
 173}
 174```
 175
 1763. To autosave when the active window changes, use `on_window_change`:
 177
 178```json
 179{
 180  "autosave": "on_window_change"
 181}
 182```
 183
 1844. To autosave after an inactivity period, use `after_delay`:
 185
 186```json
 187{
 188  "autosave": {
 189    "after_delay": {
 190      "milliseconds": 1000
 191    }
 192  }
 193}
 194```
 195
 196## Restore on Startup
 197
 198- Description: Controls session restoration on startup.
 199- Setting: `restore_on_startup`
 200- Default: `last_session`
 201
 202**Options**
 203
 2041. Restore all workspaces that were open when quitting Zed:
 205
 206```json
 207{
 208  "restore_on_startup": "last_session"
 209}
 210```
 211
 2122. Restore the workspace that was closed last:
 213
 214```json
 215{
 216  "restore_on_startup": "last_workspace"
 217}
 218```
 219
 2203. Always start with an empty editor:
 221
 222```json
 223{
 224  "restore_on_startup": "none"
 225}
 226```
 227
 228## Autoscroll on Clicks
 229
 230- Description: Whether to scroll when clicking near the edge of the visible text area.
 231- Setting: `autoscroll_on_clicks`
 232- Default: `false`
 233
 234**Options**
 235
 236`boolean` values
 237
 238## Auto Update
 239
 240- Description: Whether or not to automatically check for updates.
 241- Setting: `auto_update`
 242- Default: `true`
 243
 244**Options**
 245
 246`boolean` values
 247
 248## Base Keymap
 249
 250- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
 251- Setting: `base_keymap`
 252- Default: `VSCode`
 253
 254**Options**
 255
 2561. VSCode
 257
 258```json
 259{
 260  "base_keymap": "VSCode"
 261}
 262```
 263
 2642. Atom
 265
 266```json
 267{
 268  "base_keymap": "Atom"
 269}
 270```
 271
 2723. JetBrains
 273
 274```json
 275{
 276  "base_keymap": "JetBrains"
 277}
 278```
 279
 2804. None
 281
 282```json
 283{
 284  "base_keymap": "None"
 285}
 286```
 287
 2885. SublimeText
 289
 290```json
 291{
 292  "base_keymap": "SublimeText"
 293}
 294```
 295
 2966. TextMate
 297
 298```json
 299{
 300  "base_keymap": "TextMate"
 301}
 302```
 303
 304## Buffer Font Family
 305
 306- Description: The name of a font to use for rendering text in the editor.
 307- Setting: `buffer_font_family`
 308- Default: `Zed Plex Mono`
 309
 310**Options**
 311
 312The name of any font family installed on the user's system
 313
 314## Buffer Font Features
 315
 316- Description: The OpenType features to enable for text in the editor.
 317- Setting: `buffer_font_features`
 318- Default: `null`
 319- Platform: macOS and Windows.
 320
 321**Options**
 322
 323Zed 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.
 324
 325For example, to disable font ligatures, add the following to your settings:
 326
 327```json
 328{
 329  "buffer_font_features": {
 330    "calt": false
 331  }
 332}
 333```
 334
 335You can also set other OpenType features, like setting `cv01` to `7`:
 336
 337```json
 338{
 339  "buffer_font_features": {
 340    "cv01": 7
 341  }
 342}
 343```
 344
 345## Buffer Font Fallbacks
 346
 347- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
 348- Setting: `buffer_font_fallbacks`
 349- Default: `null`
 350- Platform: macOS and Windows.
 351
 352**Options**
 353
 354For example, to use `Nerd Font` as a fallback, add the following to your settings:
 355
 356```json
 357{
 358  "buffer_font_fallbacks": ["Nerd Font"]
 359}
 360```
 361
 362## Buffer Font Size
 363
 364- Description: The default font size for text in the editor.
 365- Setting: `buffer_font_size`
 366- Default: `15`
 367
 368**Options**
 369
 370`integer` values from `6` to `100` pixels (inclusive)
 371
 372## Buffer Font Weight
 373
 374- Description: The default font weight for text in the editor.
 375- Setting: `buffer_font_weight`
 376- Default: `400`
 377
 378**Options**
 379
 380`integer` values between `100` and `900`
 381
 382## Buffer Line Height
 383
 384- Description: The default line height for text in the editor.
 385- Setting: `buffer_line_height`
 386- Default: `"comfortable"`
 387
 388**Options**
 389
 390`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
 391
 392## Confirm Quit
 393
 394- Description: Whether or not to prompt the user to confirm before closing the application.
 395- Setting: `confirm_quit`
 396- Default: `false`
 397
 398**Options**
 399
 400`boolean` values
 401
 402## Centered Layout
 403
 404- Description: Configuration for the centered layout mode.
 405- Setting: `centered_layout`
 406- Default:
 407
 408```json
 409"centered_layout": {
 410  "left_padding": 0.2,
 411  "right_padding": 0.2,
 412}
 413```
 414
 415**Options**
 416
 417The `left_padding` and `right_padding` options define the relative width of the
 418left 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`.
 419
 420## Direnv Integration
 421
 422- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
 423  `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.
 424  It also allows for those environment variables to be used in tasks.
 425- Setting: `load_direnv`
 426- Default: `"direct"`
 427
 428**Options**
 429
 430There are two options to choose from:
 431
 4321. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 4332. `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.
 434
 435## Edit Predictions
 436
 437- Description: Settings for edit predictions.
 438- Setting: `edit_predictions`
 439- Default:
 440
 441```json
 442  "edit_predictions": {
 443    "disabled_globs": [
 444      "**/.env*",
 445      "**/*.pem",
 446      "**/*.key",
 447      "**/*.cert",
 448      "**/*.crt",
 449      "**/.dev.vars",
 450      "**/secrets.yml"
 451    ]
 452  }
 453```
 454
 455**Options**
 456
 457### Disabled Globs
 458
 459- Description: A list of globs for which edit predictions should be disabled for. This list adds to a pre-existing, sensible default set of globs. Any additional ones you add are combined with them.
 460- Setting: `disabled_globs`
 461- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 462
 463**Options**
 464
 465List of `string` values.
 466
 467## Edit Predictions Disabled in
 468
 469- Description: A list of language scopes in which edit predictions should be disabled.
 470- Setting: `edit_predictions_disabled_in`
 471- Default: `[]`
 472
 473**Options**
 474
 475List of `string` values
 476
 4771. Don't show edit predictions in comments:
 478
 479```json
 480"disabled_in": ["comment"]
 481```
 482
 4832. Don't show edit predictions in strings and comments:
 484
 485```json
 486"disabled_in": ["comment", "string"]
 487```
 488
 4893. Only in Go, don't show edit predictions in strings and comments:
 490
 491```json
 492{
 493  "languages": {
 494    "Go": {
 495      "edit_predictions_disabled_in": ["comment", "string"]
 496    }
 497  }
 498}
 499```
 500
 501## Current Line Highlight
 502
 503- Description: How to highlight the current line in the editor.
 504- Setting: `current_line_highlight`
 505- Default: `all`
 506
 507**Options**
 508
 5091. Don't highlight the current line:
 510
 511```json
 512"current_line_highlight": "none"
 513```
 514
 5152. Highlight the gutter area:
 516
 517```json
 518"current_line_highlight": "gutter"
 519```
 520
 5213. Highlight the editor area:
 522
 523```json
 524"current_line_highlight": "line"
 525```
 526
 5274. Highlight the full line:
 528
 529```json
 530"current_line_highlight": "all"
 531```
 532
 533## Selection Highlight
 534
 535- Description: Whether to highlight all occurrences of the selected text in an editor.
 536- Setting: `selection_highlight`
 537- Default: `true`
 538
 539## LSP Highlight Debounce
 540
 541- Description: The debounce delay before querying highlights from the language server based on the current cursor location.
 542- Setting: `lsp_highlight_debounce`
 543- Default: `75`
 544
 545## Cursor Blink
 546
 547- Description: Whether or not the cursor blinks.
 548- Setting: `cursor_blink`
 549- Default: `true`
 550
 551**Options**
 552
 553`boolean` values
 554
 555## Cursor Shape
 556
 557- Description: Cursor shape for the default editor.
 558- Setting: `cursor_shape`
 559- Default: `bar`
 560
 561**Options**
 562
 5631. A vertical bar:
 564
 565```json
 566"cursor_shape": "bar"
 567```
 568
 5692. A block that surrounds the following character:
 570
 571```json
 572"cursor_shape": "block"
 573```
 574
 5753. An underline / underscore that runs along the following character:
 576
 577```json
 578"cursor_shape": "underline"
 579```
 580
 5814. An box drawn around the following character:
 582
 583```json
 584"cursor_shape": "hollow"
 585```
 586
 587## Hide Mouse
 588
 589- Description: Determines when the mouse cursor should be hidden in an editor or input box.
 590- Setting: `hide_mouse`
 591- Default: `on_typing_and_movement`
 592
 593**Options**
 594
 5951. Never hide the mouse cursor:
 596
 597```json
 598"hide_mouse": "never"
 599```
 600
 6012. Hide only when typing:
 602
 603```json
 604"hide_mouse": "on_typing"
 605```
 606
 6073. Hide on both typing and cursor movement:
 608
 609```json
 610"hide_mouse": "on_typing_and_movement"
 611```
 612
 613## Snippet Sort Order
 614
 615- Description: Determines how snippets are sorted relative to other completion items.
 616- Setting: `snippet_sort_order`
 617- Default: `inline`
 618
 619**Options**
 620
 6211. Place snippets at the top of the completion list:
 622
 623```json
 624"snippet_sort_order": "top"
 625```
 626
 6272. Place snippets normally without any preference:
 628
 629```json
 630"snippet_sort_order": "inline"
 631```
 632
 6333. Place snippets at the bottom of the completion list:
 634
 635```json
 636"snippet_sort_order": "bottom"
 637```
 638
 639## Editor Scrollbar
 640
 641- Description: Whether or not to show the editor scrollbar and various elements in it.
 642- Setting: `scrollbar`
 643- Default:
 644
 645```json
 646"scrollbar": {
 647  "show": "auto",
 648  "cursors": true,
 649  "git_diff": true,
 650  "search_results": true,
 651  "selected_text": true,
 652  "selected_symbol": true,
 653  "diagnostics": "all",
 654  "axes": {
 655    "horizontal": true,
 656    "vertical": true,
 657  },
 658},
 659```
 660
 661### Show Mode
 662
 663- Description: When to show the editor scrollbar.
 664- Setting: `show`
 665- Default: `auto`
 666
 667**Options**
 668
 6691. Show the scrollbar if there's important information or follow the system's configured behavior:
 670
 671```json
 672"scrollbar": {
 673  "show": "auto"
 674}
 675```
 676
 6772. Match the system's configured behavior:
 678
 679```json
 680"scrollbar": {
 681  "show": "system"
 682}
 683```
 684
 6853. Always show the scrollbar:
 686
 687```json
 688"scrollbar": {
 689  "show": "always"
 690}
 691```
 692
 6934. Never show the scrollbar:
 694
 695```json
 696"scrollbar": {
 697  "show": "never"
 698}
 699```
 700
 701### Cursor Indicators
 702
 703- Description: Whether to show cursor positions in the scrollbar.
 704- Setting: `cursors`
 705- Default: `true`
 706
 707**Options**
 708
 709`boolean` values
 710
 711### Git Diff Indicators
 712
 713- Description: Whether to show git diff indicators in the scrollbar.
 714- Setting: `git_diff`
 715- Default: `true`
 716
 717**Options**
 718
 719`boolean` values
 720
 721### Search Results Indicators
 722
 723- Description: Whether to show buffer search results in the scrollbar.
 724- Setting: `search_results`
 725- Default: `true`
 726
 727**Options**
 728
 729`boolean` values
 730
 731### Selected Text Indicators
 732
 733- Description: Whether to show selected text occurrences in the scrollbar.
 734- Setting: `selected_text`
 735- Default: `true`
 736
 737**Options**
 738
 739`boolean` values
 740
 741### Selected Symbols Indicators
 742
 743- Description: Whether to show selected symbol occurrences in the scrollbar.
 744- Setting: `selected_symbol`
 745- Default: `true`
 746
 747**Options**
 748
 749`boolean` values
 750
 751### Diagnostics
 752
 753- Description: Which diagnostic indicators to show in the scrollbar.
 754- Setting: `diagnostics`
 755- Default: `all`
 756
 757**Options**
 758
 7591. Show all diagnostics:
 760
 761```json
 762{
 763  "diagnostics": "all"
 764}
 765```
 766
 7672. Do not show any diagnostics:
 768
 769```json
 770{
 771  "diagnostics": "none"
 772}
 773```
 774
 7753. Show only errors:
 776
 777```json
 778{
 779  "diagnostics": "error"
 780}
 781```
 782
 7834. Show only errors and warnings:
 784
 785```json
 786{
 787  "diagnostics": "warning"
 788}
 789```
 790
 7915. Show only errors, warnings, and information:
 792
 793```json
 794{
 795  "diagnostics": "information"
 796}
 797```
 798
 799### Axes
 800
 801- Description: Forcefully enable or disable the scrollbar for each axis
 802- Setting: `axes`
 803- Default:
 804
 805```json
 806"scrollbar": {
 807  "axes": {
 808    "horizontal": true,
 809    "vertical": true,
 810  },
 811}
 812```
 813
 814#### Horizontal
 815
 816- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
 817- Setting: `horizontal`
 818- Default: `true`
 819
 820**Options**
 821
 822`boolean` values
 823
 824#### Vertical
 825
 826- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
 827- Setting: `vertical`
 828- Default: `true`
 829
 830**Options**
 831
 832`boolean` values
 833
 834## Minimap
 835
 836- Description: Settings related to the editor's minimap, which provides an overview of your document.
 837- Setting: `minimap`
 838- Default:
 839
 840```json
 841{
 842  "minimap": {
 843    "show": "never",
 844    "thumb": "always",
 845    "thumb_border": "left_open",
 846    "current_line_highlight": null
 847  }
 848}
 849```
 850
 851### Show Mode
 852
 853- Description: When to show the minimap in the editor.
 854- Setting: `show`
 855- Default: `never`
 856
 857**Options**
 858
 8591. Always show the minimap:
 860
 861```json
 862{
 863  "show": "always"
 864}
 865```
 866
 8672. Show the minimap if the editor's scrollbars are visible:
 868
 869```json
 870{
 871  "show": "auto"
 872}
 873```
 874
 8753. Never show the minimap:
 876
 877```json
 878{
 879  "show": "never"
 880}
 881```
 882
 883### Thumb Display
 884
 885- Description: When to show the minimap thumb (the visible editor area) in the minimap.
 886- Setting: `thumb`
 887- Default: `always`
 888
 889**Options**
 890
 8911. Show the minimap thumb when hovering over the minimap:
 892
 893```json
 894{
 895  "thumb": "hover"
 896}
 897```
 898
 8992. Always show the minimap thumb:
 900
 901```json
 902{
 903  "thumb": "always"
 904}
 905```
 906
 907### Thumb Border
 908
 909- Description: How the minimap thumb border should look.
 910- Setting: `thumb_border`
 911- Default: `left_open`
 912
 913**Options**
 914
 9151. Display a border on all sides of the thumb:
 916
 917```json
 918{
 919  "thumb_border": "full"
 920}
 921```
 922
 9232. Display a border on all sides except the left side:
 924
 925```json
 926{
 927  "thumb_border": "left_open"
 928}
 929```
 930
 9313. Display a border on all sides except the right side:
 932
 933```json
 934{
 935  "thumb_border": "right_open"
 936}
 937```
 938
 9394. Display a border only on the left side:
 940
 941```json
 942{
 943  "thumb_border": "left_only"
 944}
 945```
 946
 9475. Display the thumb without any border:
 948
 949```json
 950{
 951  "thumb_border": "none"
 952}
 953```
 954
 955### Current Line Highlight
 956
 957- Description: How to highlight the current line in the minimap.
 958- Setting: `current_line_highlight`
 959- Default: `null`
 960
 961**Options**
 962
 9631. Inherit the editor's current line highlight setting:
 964
 965```json
 966{
 967  "minimap": {
 968    "current_line_highlight": null
 969  }
 970}
 971```
 972
 9732. Highlight the current line in the minimap:
 974
 975```json
 976{
 977  "minimap": {
 978    "current_line_highlight": "line"
 979  }
 980}
 981```
 982
 983or
 984
 985```json
 986{
 987  "minimap": {
 988    "current_line_highlight": "all"
 989  }
 990}
 991```
 992
 9933. Do not highlight the current line in the minimap:
 994
 995```json
 996{
 997  "minimap": {
 998    "current_line_highlight": "gutter"
 999  }
1000}
1001```
1002
1003or
1004
1005```json
1006{
1007  "minimap": {
1008    "current_line_highlight": "none"
1009  }
1010}
1011```
1012
1013## Editor Tab Bar
1014
1015- Description: Settings related to the editor's tab bar.
1016- Settings: `tab_bar`
1017- Default:
1018
1019```json
1020"tab_bar": {
1021  "show": true,
1022  "show_nav_history_buttons": true,
1023  "show_tab_bar_buttons": true
1024}
1025```
1026
1027### Show
1028
1029- Description: Whether or not to show the tab bar in the editor.
1030- Setting: `show`
1031- Default: `true`
1032
1033**Options**
1034
1035`boolean` values
1036
1037### Navigation History Buttons
1038
1039- Description: Whether or not to show the navigation history buttons.
1040- Setting: `show_nav_history_buttons`
1041- Default: `true`
1042
1043**Options**
1044
1045`boolean` values
1046
1047### Tab Bar Buttons
1048
1049- Description: Whether or not to show the tab bar buttons.
1050- Setting: `show_tab_bar_buttons`
1051- Default: `true`
1052
1053**Options**
1054
1055`boolean` values
1056
1057## Editor Tabs
1058
1059- Description: Configuration for the editor tabs.
1060- Setting: `tabs`
1061- Default:
1062
1063```json
1064"tabs": {
1065  "close_position": "right",
1066  "file_icons": false,
1067  "git_status": false,
1068  "activate_on_close": "history",
1069  "show_close_button": "hover",
1070  "show_diagnostics": "off"
1071},
1072```
1073
1074### Close Position
1075
1076- Description: Where to display close button within a tab.
1077- Setting: `close_position`
1078- Default: `right`
1079
1080**Options**
1081
10821. Display the close button on the right:
1083
1084```json
1085{
1086  "close_position": "right"
1087}
1088```
1089
10902. Display the close button on the left:
1091
1092```json
1093{
1094  "close_position": "left"
1095}
1096```
1097
1098### File Icons
1099
1100- Description: Whether to show the file icon for a tab.
1101- Setting: `file_icons`
1102- Default: `false`
1103
1104### Git Status
1105
1106- Description: Whether or not to show Git file status in tab.
1107- Setting: `git_status`
1108- Default: `false`
1109
1110### Activate on close
1111
1112- Description: What to do after closing the current tab.
1113- Setting: `activate_on_close`
1114- Default: `history`
1115
1116**Options**
1117
11181.  Activate the tab that was open previously:
1119
1120```json
1121{
1122  "activate_on_close": "history"
1123}
1124```
1125
11262. Activate the right neighbour tab if present:
1127
1128```json
1129{
1130  "activate_on_close": "neighbour"
1131}
1132```
1133
11343. Activate the left neighbour tab if present:
1135
1136```json
1137{
1138  "activate_on_close": "left_neighbour"
1139}
1140```
1141
1142### Show close button
1143
1144- Description: Controls the appearance behavior of the tab's close button.
1145- Setting: `show_close_button`
1146- Default: `hover`
1147
1148**Options**
1149
11501.  Show it just upon hovering the tab:
1151
1152```json
1153{
1154  "show_close_button": "hover"
1155}
1156```
1157
11582. Show it persistently:
1159
1160```json
1161{
1162  "show_close_button": "always"
1163}
1164```
1165
11663. Never show it, even if hovering it:
1167
1168```json
1169{
1170  "show_close_button": "hidden"
1171}
1172```
1173
1174### Show Diagnostics
1175
1176- Description: Whether to show diagnostics indicators in tabs. This setting only works when file icons are active and controls which files with diagnostic issues to mark.
1177- Setting: `show_diagnostics`
1178- Default: `off`
1179
1180**Options**
1181
11821. Do not mark any files:
1183
1184```json
1185{
1186  "show_diagnostics": "off"
1187}
1188```
1189
11902. Only mark files with errors:
1191
1192```json
1193{
1194  "show_diagnostics": "errors"
1195}
1196```
1197
11983. Mark files with errors and warnings:
1199
1200```json
1201{
1202  "show_diagnostics": "all"
1203}
1204```
1205
1206## Editor Toolbar
1207
1208- Description: Whether or not to show various elements in the editor toolbar.
1209- Setting: `toolbar`
1210- Default:
1211
1212```json
1213"toolbar": {
1214  "breadcrumbs": true,
1215  "quick_actions": true,
1216  "selections_menu": true,
1217  "agent_review": true
1218},
1219```
1220
1221**Options**
1222
1223Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1224
1225## Enable Language Server
1226
1227- Description: Whether or not to use language servers to provide code intelligence.
1228- Setting: `enable_language_server`
1229- Default: `true`
1230
1231**Options**
1232
1233`boolean` values
1234
1235## Ensure Final Newline On Save
1236
1237- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1238- Setting: `ensure_final_newline_on_save`
1239- Default: `true`
1240
1241**Options**
1242
1243`boolean` values
1244
1245## LSP
1246
1247- Description: Configuration for language servers.
1248- Setting: `lsp`
1249- Default: `null`
1250
1251**Options**
1252
1253The following settings can be overridden for specific language servers:
1254
1255- `initialization_options`
1256- `settings`
1257
1258To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1259
1260Some 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.
1261
1262For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1263
1264```json
1265"lsp": {
1266  "rust-analyzer": {
1267    "initialization_options": {
1268      "check": {
1269        "command": "clippy" // rust-analyzer.check.command (default: "check")
1270      }
1271    }
1272  }
1273}
1274```
1275
1276While other options may be changed at a runtime and should be placed under `settings`:
1277
1278```json
1279"lsp": {
1280  "yaml-language-server": {
1281    "settings": {
1282      "yaml": {
1283        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1284      }
1285    }
1286  }
1287}
1288```
1289
1290## LSP Highlight Debounce
1291
1292- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1293- Setting: `lsp_highlight_debounce`
1294- Default: `75`
1295
1296**Options**
1297
1298`integer` values representing milliseconds
1299
1300## Format On Save
1301
1302- Description: Whether or not to perform a buffer format before saving.
1303- Setting: `format_on_save`
1304- Default: `on`
1305
1306**Options**
1307
13081. `on`, enables format on save obeying `formatter` setting:
1309
1310```json
1311{
1312  "format_on_save": "on"
1313}
1314```
1315
13162. `off`, disables format on save:
1317
1318```json
1319{
1320  "format_on_save": "off"
1321}
1322```
1323
1324## Formatter
1325
1326- Description: How to perform a buffer format.
1327- Setting: `formatter`
1328- Default: `auto`
1329
1330**Options**
1331
13321. To use the current language server, use `"language_server"`:
1333
1334```json
1335{
1336  "formatter": "language_server"
1337}
1338```
1339
13402. 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):
1341
1342```json
1343{
1344  "formatter": {
1345    "external": {
1346      "command": "sed",
1347      "arguments": ["-e", "s/ *$//"]
1348    }
1349  }
1350}
1351```
1352
13533. 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.
1354
1355WARNING: `{buffer_path}` should not be used to direct your formatter to read from a filename. Your formatter should only read from standard input and should not read or write files directly.
1356
1357```json
1358  "formatter": {
1359    "external": {
1360      "command": "prettier",
1361      "arguments": ["--stdin-filepath", "{buffer_path}"]
1362    }
1363  }
1364```
1365
13664. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1367
1368```json
1369{
1370  "formatter": {
1371    "code_actions": {
1372      // Use ESLint's --fix:
1373      "source.fixAll.eslint": true,
1374      // Organize imports on save:
1375      "source.organizeImports": true
1376    }
1377  }
1378}
1379```
1380
13815. Or to use multiple formatters consecutively, use an array of formatters:
1382
1383```json
1384{
1385  "formatter": [
1386    { "language_server": { "name": "rust-analyzer" } },
1387    {
1388      "external": {
1389        "command": "sed",
1390        "arguments": ["-e", "s/ *$//"]
1391      }
1392    }
1393  ]
1394}
1395```
1396
1397Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1398If any of the formatters fails, the subsequent ones will still be executed.
1399
1400## Code Actions On Format
1401
1402- Description: The code actions to perform with the primary language server when formatting the buffer.
1403- Setting: `code_actions_on_format`
1404- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
1405
1406**Examples**
1407
1408<!--
1409TBD: Add Python Ruff source.organizeImports example
1410-->
1411
14121. Organize imports on format in TypeScript and TSX buffers:
1413
1414```json
1415{
1416  "languages": {
1417    "TypeScript": {
1418      "code_actions_on_format": {
1419        "source.organizeImports": true
1420      }
1421    },
1422    "TSX": {
1423      "code_actions_on_format": {
1424        "source.organizeImports": true
1425      }
1426    }
1427  }
1428}
1429```
1430
14312. Run ESLint `fixAll` code action when formatting:
1432
1433```json
1434{
1435  "languages": {
1436    "JavaScript": {
1437      "code_actions_on_format": {
1438        "source.fixAll.eslint": true
1439      }
1440    }
1441  }
1442}
1443```
1444
14453. Run only a single ESLint rule when using `fixAll`:
1446
1447```json
1448{
1449  "languages": {
1450    "JavaScript": {
1451      "code_actions_on_format": {
1452        "source.fixAll.eslint": true
1453      }
1454    }
1455  },
1456  "lsp": {
1457    "eslint": {
1458      "settings": {
1459        "codeActionOnSave": {
1460          "rules": ["import/order"]
1461        }
1462      }
1463    }
1464  }
1465}
1466```
1467
1468## Auto close
1469
1470- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1471- Setting: `use_autoclose`
1472- Default: `true`
1473
1474**Options**
1475
1476`boolean` values
1477
1478## Always Treat Brackets As Autoclosed
1479
1480- Description: Controls how the editor handles the autoclosed characters.
1481- Setting: `always_treat_brackets_as_autoclosed`
1482- Default: `false`
1483
1484**Options**
1485
1486`boolean` values
1487
1488**Example**
1489
1490If the setting is set to `true`:
1491
14921. Enter in the editor: `)))`
14932. Move the cursor to the start: `^)))`
14943. Enter again: `)))`
1495
1496The result is still `)))` and not `))))))`, which is what it would be by default.
1497
1498## File Scan Exclusions
1499
1500- Setting: `file_scan_exclusions`
1501- Description: Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Overrides `file_scan_inclusions`.
1502- Default:
1503
1504```json
1505"file_scan_exclusions": [
1506  "**/.git",
1507  "**/.svn",
1508  "**/.hg",
1509  "**/.jj",
1510  "**/CVS",
1511  "**/.DS_Store",
1512  "**/Thumbs.db",
1513  "**/.classpath",
1514  "**/.settings"
1515],
1516```
1517
1518Note, 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.
1519
1520## File Scan Inclusions
1521
1522- Setting: `file_scan_inclusions`
1523- Description: Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. `file_scan_exclusions` takes precedence over these inclusions.
1524- Default:
1525
1526```json
1527"file_scan_inclusions": [".env*"],
1528```
1529
1530## File Types
1531
1532- Setting: `file_types`
1533- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1534- Default:
1535
1536```json
1537"file_types": {
1538  "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1539  "Shell Script": [".env.*"]
1540}
1541```
1542
1543**Examples**
1544
1545To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1546
1547```json
1548{
1549  "file_types": {
1550    "C++": ["c"],
1551    "TOML": ["MyLockFile"],
1552    "Dockerfile": ["Dockerfile*"]
1553  }
1554}
1555```
1556
1557## Diagnostics
1558
1559- Description: Configuration for diagnostics-related features.
1560- Setting: `diagnostics`
1561- Default:
1562
1563```json
1564{
1565  "diagnostics": {
1566    "include_warnings": true,
1567    "inline": {
1568      "enabled": false
1569    },
1570    "update_with_cursor": false,
1571    "primary_only": false,
1572    "use_rendered": false
1573  }
1574}
1575```
1576
1577### Inline Diagnostics
1578
1579- Description: Whether or not to show diagnostics information inline.
1580- Setting: `inline`
1581- Default:
1582
1583```json
1584{
1585  "diagnostics": {
1586    "inline": {
1587      "enabled": false,
1588      "update_debounce_ms": 150,
1589      "padding": 4,
1590      "min_column": 0,
1591      "max_severity": null
1592    }
1593  }
1594}
1595```
1596
1597**Options**
1598
15991. Enable inline diagnostics.
1600
1601```json
1602{
1603  "diagnostics": {
1604    "inline": {
1605      "enabled": true
1606    }
1607  }
1608}
1609```
1610
16112. Delay diagnostic updates until some time after the last diagnostic update.
1612
1613```json
1614{
1615  "diagnostics": {
1616    "inline": {
1617      "enabled": true,
1618      "update_debounce_ms": 150
1619    }
1620  }
1621}
1622```
1623
16243. Set padding between the end of the source line and the start of the diagnostic.
1625
1626```json
1627{
1628  "diagnostics": {
1629    "inline": {
1630      "enabled": true,
1631      "padding": 4
1632    }
1633  }
1634}
1635```
1636
16374. Horizontally align inline diagnostics at the given column.
1638
1639```json
1640{
1641  "diagnostics": {
1642    "inline": {
1643      "enabled": true,
1644      "min_column": 80
1645    }
1646  }
1647}
1648```
1649
16505. Show only warning and error diagnostics.
1651
1652```json
1653{
1654  "diagnostics": {
1655    "inline": {
1656      "enabled": true,
1657      "max_severity": "warning"
1658    }
1659  }
1660}
1661```
1662
1663## Git
1664
1665- Description: Configuration for git-related features.
1666- Setting: `git`
1667- Default:
1668
1669```json
1670{
1671  "git": {
1672    "git_gutter": "tracked_files",
1673    "inline_blame": {
1674      "enabled": true
1675    },
1676    "hunk_style": "staged_hollow"
1677  }
1678}
1679```
1680
1681### Git Gutter
1682
1683- Description: Whether or not to show the git gutter.
1684- Setting: `git_gutter`
1685- Default: `tracked_files`
1686
1687**Options**
1688
16891. Show git gutter in tracked files
1690
1691```json
1692{
1693  "git": {
1694    "git_gutter": "tracked_files"
1695  }
1696}
1697```
1698
16992. Hide git gutter
1700
1701```json
1702{
1703  "git": {
1704    "git_gutter": "hide"
1705  }
1706}
1707```
1708
1709### Gutter Debounce
1710
1711- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1712- Setting: `gutter_debounce`
1713- Default: `null`
1714
1715**Options**
1716
1717`integer` values representing milliseconds
1718
1719Example:
1720
1721```json
1722{
1723  "git": {
1724    "gutter_debounce": 100
1725  }
1726}
1727```
1728
1729### Inline Git Blame
1730
1731- Description: Whether or not to show git blame information inline, on the currently focused line.
1732- Setting: `inline_blame`
1733- Default:
1734
1735```json
1736{
1737  "git": {
1738    "inline_blame": {
1739      "enabled": true
1740    }
1741  }
1742}
1743```
1744
1745### Hunk Style
1746
1747- Description: What styling we should use for the diff hunks.
1748- Setting: `hunk_style`
1749- Default:
1750
1751```json
1752{
1753  "git": {
1754    "hunk_style": "staged_hollow"
1755  }
1756}
1757```
1758
1759**Options**
1760
17611. Show the staged hunks faded out and with a border:
1762
1763```json
1764{
1765  "git": {
1766    "hunk_style": "staged_hollow"
1767  }
1768}
1769```
1770
17712. Show unstaged hunks faded out and with a border:
1772
1773```json
1774{
1775  "git": {
1776    "hunk_style": "unstaged_hollow"
1777  }
1778}
1779```
1780
1781**Options**
1782
17831. Disable inline git blame:
1784
1785```json
1786{
1787  "git": {
1788    "inline_blame": {
1789      "enabled": false
1790    }
1791  }
1792}
1793```
1794
17952. Only show inline git blame after a delay (that starts after cursor stops moving):
1796
1797```json
1798{
1799  "git": {
1800    "inline_blame": {
1801      "enabled": true,
1802      "delay_ms": 500
1803    }
1804  }
1805}
1806```
1807
18083. Show a commit summary next to the commit date and author:
1809
1810```json
1811{
1812  "git": {
1813    "inline_blame": {
1814      "enabled": true,
1815      "show_commit_summary": true
1816    }
1817  }
1818}
1819```
1820
18214. Use this as the minimum column at which to display inline blame information:
1822
1823```json
1824{
1825  "git": {
1826    "inline_blame": {
1827      "enabled": true,
1828      "min_column": 80
1829    }
1830  }
1831}
1832```
1833
1834## Indent Guides
1835
1836- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1837- Setting: `indent_guides`
1838- Default:
1839
1840```json
1841{
1842  "indent_guides": {
1843    "enabled": true,
1844    "line_width": 1,
1845    "active_line_width": 1,
1846    "coloring": "fixed",
1847    "background_coloring": "disabled"
1848  }
1849}
1850```
1851
1852**Options**
1853
18541. Disable indent guides
1855
1856```json
1857{
1858  "indent_guides": {
1859    "enabled": false
1860  }
1861}
1862```
1863
18642. Enable indent guides for a specific language.
1865
1866```json
1867{
1868  "languages": {
1869    "Python": {
1870      "indent_guides": {
1871        "enabled": true
1872      }
1873    }
1874  }
1875}
1876```
1877
18783. Enable indent aware coloring ("rainbow indentation").
1879   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.
1880
1881```json
1882{
1883  "indent_guides": {
1884    "enabled": true,
1885    "coloring": "indent_aware"
1886  }
1887}
1888```
1889
18904. Enable indent aware background coloring ("rainbow indentation").
1891   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.
1892
1893```json
1894{
1895  "indent_guides": {
1896    "enabled": true,
1897    "coloring": "indent_aware",
1898    "background_coloring": "indent_aware"
1899  }
1900}
1901```
1902
1903## Hard Tabs
1904
1905- Description: Whether to indent lines using tab characters or multiple spaces.
1906- Setting: `hard_tabs`
1907- Default: `false`
1908
1909**Options**
1910
1911`boolean` values
1912
1913## Hover Popover Enabled
1914
1915- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1916- Setting: `hover_popover_enabled`
1917- Default: `true`
1918
1919**Options**
1920
1921`boolean` values
1922
1923## Hover Popover Delay
1924
1925- Description: Time to wait in milliseconds before showing the informational hover box.
1926- Setting: `hover_popover_delay`
1927- Default: `300`
1928
1929**Options**
1930
1931`integer` values representing milliseconds
1932
1933## Icon Theme
1934
1935- Description: The icon theme setting can be specified in two forms - either as the name of an icon theme or as an object containing the `mode`, `dark`, and `light` icon themes for files/folders inside Zed.
1936- Setting: `icon_theme`
1937- Default: `Zed (Default)`
1938
1939### Icon Theme Object
1940
1941- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1942- Setting: `icon_theme`
1943- Default:
1944
1945```json
1946"icon_theme": {
1947  "mode": "system",
1948  "dark": "Zed (Default)",
1949  "light": "Zed (Default)"
1950},
1951```
1952
1953### Mode
1954
1955- Description: Specify the icon theme mode.
1956- Setting: `mode`
1957- Default: `system`
1958
1959**Options**
1960
19611. Set the icon theme to dark mode
1962
1963```json
1964{
1965  "mode": "dark"
1966}
1967```
1968
19692. Set the icon theme to light mode
1970
1971```json
1972{
1973  "mode": "light"
1974}
1975```
1976
19773. Set the icon theme to system mode
1978
1979```json
1980{
1981  "mode": "system"
1982}
1983```
1984
1985### Dark
1986
1987- Description: The name of the dark icon theme.
1988- Setting: `dark`
1989- Default: `Zed (Default)`
1990
1991**Options**
1992
1993Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
1994
1995### Light
1996
1997- Description: The name of the light icon theme.
1998- Setting: `light`
1999- Default: `Zed (Default)`
2000
2001**Options**
2002
2003Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
2004
2005## Inlay hints
2006
2007- Description: Configuration for displaying extra text with hints in the editor.
2008- Setting: `inlay_hints`
2009- Default:
2010
2011```json
2012"inlay_hints": {
2013  "enabled": false,
2014  "show_type_hints": true,
2015  "show_parameter_hints": true,
2016  "show_other_hints": true,
2017  "show_background": false,
2018  "edit_debounce_ms": 700,
2019  "scroll_debounce_ms": 50,
2020  "toggle_on_modifiers_press": null
2021}
2022```
2023
2024**Options**
2025
2026Inlay hints querying consists of two parts: editor (client) and LSP server.
2027With 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.
2028At 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.
2029
2030The following languages have inlay hints preconfigured by Zed:
2031
2032- [Go](https://docs.zed.dev/languages/go)
2033- [Rust](https://docs.zed.dev/languages/rust)
2034- [Svelte](https://docs.zed.dev/languages/svelte)
2035- [Typescript](https://docs.zed.dev/languages/typescript)
2036
2037Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2038
2039Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2040Settings-related hint updates are not debounced.
2041
2042All possible config values for `toggle_on_modifiers_press` are:
2043
2044```json
2045"inlay_hints": {
2046  "toggle_on_modifiers_press": {
2047    "control": true,
2048    "shift": true,
2049    "alt": true,
2050    "platform": true,
2051    "function": true
2052  }
2053}
2054```
2055
2056Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2057
2058## Journal
2059
2060- Description: Configuration for the journal.
2061- Setting: `journal`
2062- Default:
2063
2064```json
2065"journal": {
2066  "path": "~",
2067  "hour_format": "hour12"
2068}
2069```
2070
2071### Path
2072
2073- Description: The path of the directory where journal entries are stored.
2074- Setting: `path`
2075- Default: `~`
2076
2077**Options**
2078
2079`string` values
2080
2081### Hour Format
2082
2083- Description: The format to use for displaying hours in the journal.
2084- Setting: `hour_format`
2085- Default: `hour12`
2086
2087**Options**
2088
20891. 12-hour format:
2090
2091```json
2092{
2093  "hour_format": "hour12"
2094}
2095```
2096
20972. 24-hour format:
2098
2099```json
2100{
2101  "hour_format": "hour24"
2102}
2103```
2104
2105## Languages
2106
2107- Description: Configuration for specific languages.
2108- Setting: `languages`
2109- Default: `null`
2110
2111**Options**
2112
2113To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2114
2115```json
2116"languages": {
2117  "C": {
2118    "format_on_save": "off",
2119    "preferred_line_length": 64,
2120    "soft_wrap": "preferred_line_length"
2121  },
2122  "JSON": {
2123    "tab_size": 4
2124  }
2125}
2126```
2127
2128The following settings can be overridden for each specific language:
2129
2130- [`enable_language_server`](#enable-language-server)
2131- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2132- [`format_on_save`](#format-on-save)
2133- [`formatter`](#formatter)
2134- [`hard_tabs`](#hard-tabs)
2135- [`preferred_line_length`](#preferred-line-length)
2136- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2137- [`show_edit_predictions`](#show-edit-predictions)
2138- [`show_whitespaces`](#show-whitespaces)
2139- [`soft_wrap`](#soft-wrap)
2140- [`tab_size`](#tab-size)
2141- [`use_autoclose`](#use-autoclose)
2142- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2143
2144These values take in the same options as the root-level settings with the same name.
2145
2146## Network Proxy
2147
2148- Description: Configure a network proxy for Zed.
2149- Setting: `proxy`
2150- Default: `null`
2151
2152**Options**
2153
2154The proxy setting must contain a URL to the proxy.
2155
2156The following URI schemes are supported:
2157
2158- `http`
2159- `https`
2160- `socks4` - SOCKS4 proxy with local DNS
2161- `socks4a` - SOCKS4 proxy with remote DNS
2162- `socks5` - SOCKS5 proxy with local DNS
2163- `socks5h` - SOCKS5 proxy with remote DNS
2164
2165`http` will be used when no scheme is specified.
2166
2167By 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`.
2168
2169For example, to set an `http` proxy, add the following to your settings:
2170
2171```json
2172{
2173  "proxy": "http://127.0.0.1:10809"
2174}
2175```
2176
2177Or to set a `socks5` proxy:
2178
2179```json
2180{
2181  "proxy": "socks5h://localhost:10808"
2182}
2183```
2184
2185## Preview tabs
2186
2187- Description:
2188  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. \
2189   There are several ways to convert a preview tab into a regular tab:
2190
2191  - Double-clicking on the file
2192  - Double-clicking on the tab header
2193  - Using the `project_panel::OpenPermanent` action
2194  - Editing the file
2195  - Dragging the file to a different pane
2196
2197- Setting: `preview_tabs`
2198- Default:
2199
2200```json
2201"preview_tabs": {
2202  "enabled": true,
2203  "enable_preview_from_file_finder": false,
2204  "enable_preview_from_code_navigation": false,
2205}
2206```
2207
2208### Enable preview from file finder
2209
2210- Description: Determines whether to open files in preview mode when selected from the file finder.
2211- Setting: `enable_preview_from_file_finder`
2212- Default: `false`
2213
2214**Options**
2215
2216`boolean` values
2217
2218### Enable preview from code navigation
2219
2220- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2221- Setting: `enable_preview_from_code_navigation`
2222- Default: `false`
2223
2224**Options**
2225
2226`boolean` values
2227
2228## File Finder
2229
2230### File Icons
2231
2232- Description: Whether to show file icons in the file finder.
2233- Setting: `file_icons`
2234- Default: `true`
2235
2236### Modal Max Width
2237
2238- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2239- Setting: `modal_max_width`
2240- Default: `small`
2241
2242### Skip Focus For Active In Search
2243
2244- Description: Determines whether the file finder should skip focus for the active file in search results.
2245- Setting: `skip_focus_for_active_in_search`
2246- Default: `true`
2247
2248## Preferred Line Length
2249
2250- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2251- Setting: `preferred_line_length`
2252- Default: `80`
2253
2254**Options**
2255
2256`integer` values
2257
2258## Projects Online By Default
2259
2260- Description: Whether or not to show the online projects view by default.
2261- Setting: `projects_online_by_default`
2262- Default: `true`
2263
2264**Options**
2265
2266`boolean` values
2267
2268## Remove Trailing Whitespace On Save
2269
2270- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2271- Setting: `remove_trailing_whitespace_on_save`
2272- Default: `true`
2273
2274**Options**
2275
2276`boolean` values
2277
2278## Search
2279
2280- Description: Search options to enable by default when opening new project and buffer searches.
2281- Setting: `search`
2282- Default:
2283
2284```json
2285"search": {
2286  "whole_word": false,
2287  "case_sensitive": false,
2288  "include_ignored": false,
2289  "regex": false
2290},
2291```
2292
2293## Seed Search Query From Cursor
2294
2295- Description: When to populate a new search's query based on the text under the cursor.
2296- Setting: `seed_search_query_from_cursor`
2297- Default: `always`
2298
2299**Options**
2300
23011. `always` always populate the search query with the word under the cursor
23022. `selection` only populate the search query when there is text selected
23033. `never` never populate the search query
2304
2305## Use Smartcase Search
2306
2307- Description: When enabled, automatically adjusts search case sensitivity based on your query. If your search query contains any uppercase letters, the search becomes case-sensitive; if it contains only lowercase letters, the search becomes case-insensitive. \
2308  This applies to both in-file searches and project-wide searches.
2309- Setting: `use_smartcase_search`
2310- Default: `false`
2311
2312**Options**
2313
2314`boolean` values
2315
2316Examples:
2317
2318- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2319- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2320
2321## Show Call Status Icon
2322
2323- Description: Whether or not to show the call status icon in the status bar.
2324- Setting: `show_call_status_icon`
2325- Default: `true`
2326
2327**Options**
2328
2329`boolean` values
2330
2331## Completions
2332
2333- Description: Controls how completions are processed for this language.
2334- Setting: `completions`
2335- Default:
2336
2337```json
2338{
2339  "completions": {
2340    "words": "fallback",
2341    "lsp": true,
2342    "lsp_fetch_timeout_ms": 0,
2343    "lsp_insert_mode": "replace_suffix"
2344  }
2345}
2346```
2347
2348### Words
2349
2350- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2351- Setting: `words`
2352- Default: `fallback`
2353
2354**Options**
2355
23561. `enabled` - Always fetch document's words for completions along with LSP completions
23572. `fallback` - Only if LSP response errors or times out, use document's words to show completions
23583. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2359
2360### LSP
2361
2362- Description: Whether to fetch LSP completions or not.
2363- Setting: `lsp`
2364- Default: `true`
2365
2366**Options**
2367
2368`boolean` values
2369
2370### LSP Fetch Timeout (ms)
2371
2372- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2373- Setting: `lsp_fetch_timeout_ms`
2374- Default: `0`
2375
2376**Options**
2377
2378`integer` values representing milliseconds
2379
2380### LSP Insert Mode
2381
2382- Description: Controls what range to replace when accepting LSP completions.
2383- Setting: `lsp_insert_mode`
2384- Default: `replace_suffix`
2385
2386**Options**
2387
23881. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
23892. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
23903. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
23914. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2392
2393## Show Completions On Input
2394
2395- Description: Whether or not to show completions as you type.
2396- Setting: `show_completions_on_input`
2397- Default: `true`
2398
2399**Options**
2400
2401`boolean` values
2402
2403## Show Completion Documentation
2404
2405- Description: Whether to display inline and alongside documentation for items in the completions menu.
2406- Setting: `show_completion_documentation`
2407- Default: `true`
2408
2409**Options**
2410
2411`boolean` values
2412
2413## Show Edit Predictions
2414
2415- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2416- Setting: `show_edit_predictions`
2417- Default: `true`
2418
2419**Options**
2420
2421`boolean` values
2422
2423## Show Whitespaces
2424
2425- Description: Whether or not to render whitespace characters in the editor.
2426- Setting: `show_whitespaces`
2427- Default: `selection`
2428
2429**Options**
2430
24311. `all`
24322. `selection`
24333. `none`
24344. `boundary`
2435
2436## Soft Wrap
2437
2438- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2439- Setting: `soft_wrap`
2440- Default: `none`
2441
2442**Options**
2443
24441. `none` to avoid wrapping generally, unless the line is too long
24452. `prefer_line` (deprecated, same as `none`)
24463. `editor_width` to wrap lines that overflow the editor width
24474. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
24485. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2449
2450## Wrap Guides (Vertical Rulers)
2451
2452- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2453- Setting: `wrap_guides`
2454- Default: []
2455
2456**Options**
2457
2458List of `integer` column numbers
2459
2460## Tab Size
2461
2462- Description: The number of spaces to use for each tab character.
2463- Setting: `tab_size`
2464- Default: `4`
2465
2466**Options**
2467
2468`integer` values
2469
2470## Telemetry
2471
2472- Description: Control what info is collected by Zed.
2473- Setting: `telemetry`
2474- Default:
2475
2476```json
2477"telemetry": {
2478  "diagnostics": true,
2479  "metrics": true
2480},
2481```
2482
2483**Options**
2484
2485### Diagnostics
2486
2487- Description: Setting for sending debug-related data, such as crash reports.
2488- Setting: `diagnostics`
2489- Default: `true`
2490
2491**Options**
2492
2493`boolean` values
2494
2495### Metrics
2496
2497- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2498- Setting: `metrics`
2499- Default: `true`
2500
2501**Options**
2502
2503`boolean` values
2504
2505## Terminal
2506
2507- Description: Configuration for the terminal.
2508- Setting: `terminal`
2509- Default:
2510
2511```json
2512{
2513  "terminal": {
2514    "alternate_scroll": "off",
2515    "blinking": "terminal_controlled",
2516    "copy_on_select": false,
2517    "dock": "bottom",
2518    "default_width": 640,
2519    "default_height": 320,
2520    "detect_venv": {
2521      "on": {
2522        "directories": [".env", "env", ".venv", "venv"],
2523        "activate_script": "default"
2524      }
2525    },
2526    "env": {},
2527    "font_family": null,
2528    "font_features": null,
2529    "font_size": null,
2530    "line_height": "comfortable",
2531    "option_as_meta": false,
2532    "button": true,
2533    "shell": "system",
2534    "toolbar": {
2535      "breadcrumbs": true
2536    },
2537    "working_directory": "current_project_directory",
2538    "scrollbar": {
2539      "show": null
2540    }
2541  }
2542}
2543```
2544
2545### Terminal: Dock
2546
2547- Description: Control the position of the dock
2548- Setting: `dock`
2549- Default: `bottom`
2550
2551**Options**
2552
2553`"bottom"`, `"left"` or `"right"`
2554
2555### Terminal: Alternate Scroll
2556
2557- 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.
2558- Setting: `alternate_scroll`
2559- Default: `off`
2560
2561**Options**
2562
25631. Default alternate scroll mode to off
2564
2565```json
2566{
2567  "terminal": {
2568    "alternate_scroll": "off"
2569  }
2570}
2571```
2572
25732. Default alternate scroll mode to on
2574
2575```json
2576{
2577  "terminal": {
2578    "alternate_scroll": "on"
2579  }
2580}
2581```
2582
2583### Terminal: Blinking
2584
2585- Description: Set the cursor blinking behavior in the terminal
2586- Setting: `blinking`
2587- Default: `terminal_controlled`
2588
2589**Options**
2590
25911. Never blink the cursor, ignore the terminal mode
2592
2593```json
2594{
2595  "terminal": {
2596    "blinking": "off"
2597  }
2598}
2599```
2600
26012. Default the cursor blink to off, but allow the terminal to turn blinking on
2602
2603```json
2604{
2605  "terminal": {
2606    "blinking": "terminal_controlled"
2607  }
2608}
2609```
2610
26113. Always blink the cursor, ignore the terminal mode
2612
2613```json
2614{
2615  "terminal": {
2616    "blinking": "on"
2617  }
2618}
2619```
2620
2621### Terminal: Copy On Select
2622
2623- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2624- Setting: `copy_on_select`
2625- Default: `false`
2626
2627**Options**
2628
2629`boolean` values
2630
2631**Example**
2632
2633```json
2634{
2635  "terminal": {
2636    "copy_on_select": true
2637  }
2638}
2639```
2640
2641### Terminal: Env
2642
2643- 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
2644- Setting: `env`
2645- Default: `{}`
2646
2647**Example**
2648
2649```json
2650{
2651  "terminal": {
2652    "env": {
2653      "ZED": "1",
2654      "KEY": "value1:value2"
2655    }
2656  }
2657}
2658```
2659
2660### Terminal: Font Size
2661
2662- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2663- Setting: `font_size`
2664- Default: `null`
2665
2666**Options**
2667
2668`integer` values
2669
2670```json
2671{
2672  "terminal": {
2673    "font_size": 15
2674  }
2675}
2676```
2677
2678### Terminal: Font Family
2679
2680- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
2681- Setting: `font_family`
2682- Default: `null`
2683
2684**Options**
2685
2686The name of any font family installed on the user's system
2687
2688```json
2689{
2690  "terminal": {
2691    "font_family": "Berkeley Mono"
2692  }
2693}
2694```
2695
2696### Terminal: Font Features
2697
2698- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
2699- Setting: `font_features`
2700- Default: `null`
2701- Platform: macOS and Windows.
2702
2703**Options**
2704
2705See Buffer Font Features
2706
2707```json
2708{
2709  "terminal": {
2710    "font_features": {
2711      "calt": false
2712      // See Buffer Font Features for more features
2713    }
2714  }
2715}
2716```
2717
2718### Terminal: Line Height
2719
2720- Description: Set the terminal's line height.
2721- Setting: `line_height`
2722- Default: `comfortable`
2723
2724**Options**
2725
27261. Use a line height that's `comfortable` for reading, 1.618. (default)
2727
2728```json
2729{
2730  "terminal": {
2731    "line_height": "comfortable"
2732  }
2733}
2734```
2735
27362. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
2737
2738```json
2739{
2740  "terminal": {
2741    "line_height": "standard"
2742  }
2743}
2744```
2745
27463.  Use a custom line height.
2747
2748```json
2749{
2750  "terminal": {
2751    "line_height": {
2752      "custom": 2
2753    }
2754  }
2755}
2756```
2757
2758### Terminal: Option As Meta
2759
2760- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
2761- Setting: `option_as_meta`
2762- Default: `false`
2763
2764**Options**
2765
2766`boolean` values
2767
2768```json
2769{
2770  "terminal": {
2771    "option_as_meta": true
2772  }
2773}
2774```
2775
2776### Terminal: Shell
2777
2778- Description: What shell to use when launching the terminal.
2779- Setting: `shell`
2780- Default: `system`
2781
2782**Options**
2783
27841. Use the system's default terminal configuration (usually the `/etc/passwd` file).
2785
2786```json
2787{
2788  "terminal": {
2789    "shell": "system"
2790  }
2791}
2792```
2793
27942. A program to launch:
2795
2796```json
2797{
2798  "terminal": {
2799    "shell": {
2800      "program": "sh"
2801    }
2802  }
2803}
2804```
2805
28063. A program with arguments:
2807
2808```json
2809{
2810  "terminal": {
2811    "shell": {
2812      "with_arguments": {
2813        "program": "/bin/bash",
2814        "args": ["--login"]
2815      }
2816    }
2817  }
2818}
2819```
2820
2821## Terminal: Detect Virtual Environments {#terminal-detect_venv}
2822
2823- 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.
2824- Setting: `detect_venv`
2825- Default:
2826
2827```json
2828{
2829  "terminal": {
2830    "detect_venv": {
2831      "on": {
2832        // Default directories to search for virtual environments, relative
2833        // to the current working directory. We recommend overriding this
2834        // in your project's settings, rather than globally.
2835        "directories": [".env", "env", ".venv", "venv"],
2836        // Can also be `csh`, `fish`, and `nushell`
2837        "activate_script": "default"
2838      }
2839    }
2840  }
2841}
2842```
2843
2844Disable with:
2845
2846```json
2847{
2848  "terminal": {
2849    "detect_venv": "off"
2850  }
2851}
2852```
2853
2854## Terminal: Toolbar
2855
2856- Description: Whether or not to show various elements in the terminal toolbar.
2857- Setting: `toolbar`
2858- Default:
2859
2860```json
2861{
2862  "terminal": {
2863    "toolbar": {
2864      "breadcrumbs": true
2865    }
2866  }
2867}
2868```
2869
2870**Options**
2871
2872At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
2873
2874If the terminal title is empty, the breadcrumbs won't be shown.
2875
2876The shell running in the terminal needs to be configured to emit the title.
2877
2878Example command to set the title: `echo -e "\e]2;New Title\007";`
2879
2880### Terminal: Button
2881
2882- Description: Control to show or hide the terminal button in the status bar
2883- Setting: `button`
2884- Default: `true`
2885
2886**Options**
2887
2888`boolean` values
2889
2890```json
2891{
2892  "terminal": {
2893    "button": false
2894  }
2895}
2896```
2897
2898### Terminal: Working Directory
2899
2900- Description: What working directory to use when launching the terminal.
2901- Setting: `working_directory`
2902- Default: `"current_project_directory"`
2903
2904**Options**
2905
29061. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
2907
2908```json
2909{
2910  "terminal": {
2911    "working_directory": "current_project_directory"
2912  }
2913}
2914```
2915
29162. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
2917
2918```json
2919{
2920  "terminal": {
2921    "working_directory": "first_project_directory"
2922  }
2923}
2924```
2925
29263. Always use this platform's home directory (if we can find it)
2927
2928```json
2929{
2930  "terminal": {
2931    "working_directory": "always_home"
2932  }
2933}
2934```
2935
29364. 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.
2937
2938```json
2939{
2940  "terminal": {
2941    "working_directory": {
2942      "always": {
2943        "directory": "~/zed/projects/"
2944      }
2945    }
2946  }
2947}
2948```
2949
2950## Theme
2951
2952- 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.
2953- Setting: `theme`
2954- Default: `One Dark`
2955
2956### Theme Object
2957
2958- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
2959- Setting: `theme`
2960- Default:
2961
2962```json
2963"theme": {
2964  "mode": "system",
2965  "dark": "One Dark",
2966  "light": "One Light"
2967},
2968```
2969
2970### Mode
2971
2972- Description: Specify theme mode.
2973- Setting: `mode`
2974- Default: `system`
2975
2976**Options**
2977
29781. Set the theme to dark mode
2979
2980```json
2981{
2982  "mode": "dark"
2983}
2984```
2985
29862. Set the theme to light mode
2987
2988```json
2989{
2990  "mode": "light"
2991}
2992```
2993
29943. Set the theme to system mode
2995
2996```json
2997{
2998  "mode": "system"
2999}
3000```
3001
3002### Dark
3003
3004- Description: The name of the dark Zed theme to use for the UI.
3005- Setting: `dark`
3006- Default: `One Dark`
3007
3008**Options**
3009
3010Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
3011
3012### Light
3013
3014- Description: The name of the light Zed theme to use for the UI.
3015- Setting: `light`
3016- Default: `One Light`
3017
3018**Options**
3019
3020Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
3021
3022## Vim
3023
3024- Description: Whether or not to enable vim mode (work in progress).
3025- Setting: `vim_mode`
3026- Default: `false`
3027
3028## Project Panel
3029
3030- Description: Customize project panel
3031- Setting: `project_panel`
3032- Default:
3033
3034```json
3035{
3036  "project_panel": {
3037    "button": true,
3038    "default_width": 240,
3039    "dock": "left",
3040    "entry_spacing": "comfortable",
3041    "file_icons": true,
3042    "folder_icons": true,
3043    "git_status": true,
3044    "indent_size": 20,
3045    "auto_reveal_entries": true,
3046    "auto_fold_dirs": true,
3047    "scrollbar": {
3048      "show": null
3049    },
3050    "show_diagnostics": "all",
3051    "indent_guides": {
3052      "show": "always"
3053    }
3054  }
3055}
3056```
3057
3058### Dock
3059
3060- Description: Control the position of the dock
3061- Setting: `dock`
3062- Default: `left`
3063
3064**Options**
3065
30661. Default dock position to left
3067
3068```json
3069{
3070  "dock": "left"
3071}
3072```
3073
30742. Default dock position to right
3075
3076```json
3077{
3078  "dock": "right"
3079}
3080```
3081
3082### Entry Spacing
3083
3084- Description: Spacing between worktree entries
3085- Setting: `entry_spacing`
3086- Default: `comfortable`
3087
3088**Options**
3089
30901. Comfortable entry spacing
3091
3092```json
3093{
3094  "entry_spacing": "comfortable"
3095}
3096```
3097
30982. Standard entry spacing
3099
3100```json
3101{
3102  "entry_spacing": "standard"
3103}
3104```
3105
3106### Git Status
3107
3108- Description: Indicates newly created and updated files
3109- Setting: `git_status`
3110- Default: `true`
3111
3112**Options**
3113
31141. Default enable git status
3115
3116```json
3117{
3118  "git_status": true
3119}
3120```
3121
31222. Default disable git status
3123
3124```json
3125{
3126  "git_status": false
3127}
3128```
3129
3130### Default Width
3131
3132- Description: Customize default width taken by project panel
3133- Setting: `default_width`
3134- Default: `240`
3135
3136**Options**
3137
3138`float` values
3139
3140### Auto Reveal Entries
3141
3142- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
3143- Setting: `auto_reveal_entries`
3144- Default: `true`
3145
3146**Options**
3147
31481. Enable auto reveal entries
3149
3150```json
3151{
3152  "auto_reveal_entries": true
3153}
3154```
3155
31562. Disable auto reveal entries
3157
3158```json
3159{
3160  "auto_reveal_entries": false
3161}
3162```
3163
3164### Auto Fold Dirs
3165
3166- Description: Whether to fold directories automatically when directory has only one directory inside.
3167- Setting: `auto_fold_dirs`
3168- Default: `true`
3169
3170**Options**
3171
31721. Enable auto fold dirs
3173
3174```json
3175{
3176  "auto_fold_dirs": true
3177}
3178```
3179
31802. Disable auto fold dirs
3181
3182```json
3183{
3184  "auto_fold_dirs": false
3185}
3186```
3187
3188### Indent Size
3189
3190- Description: Amount of indentation (in pixels) for nested items.
3191- Setting: `indent_size`
3192- Default: `20`
3193
3194### Indent Guides: Show
3195
3196- Description: Whether to show indent guides in the project panel.
3197- Setting: `indent_guides`
3198- Default:
3199
3200```json
3201"indent_guides": {
3202  "show": "always"
3203}
3204```
3205
3206**Options**
3207
32081. Show indent guides in the project panel
3209
3210```json
3211{
3212  "indent_guides": {
3213    "show": "always"
3214  }
3215}
3216```
3217
32182. Hide indent guides in the project panel
3219
3220```json
3221{
3222  "indent_guides": {
3223    "show": "never"
3224  }
3225}
3226```
3227
3228### Scrollbar: Show
3229
3230- 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.
3231- Setting: `scrollbar`
3232- Default:
3233
3234```json
3235"scrollbar": {
3236  "show": null
3237}
3238```
3239
3240**Options**
3241
32421. Show scrollbar in the project panel
3243
3244```json
3245{
3246  "scrollbar": {
3247    "show": "always"
3248  }
3249}
3250```
3251
32522. Hide scrollbar in the project panel
3253
3254```json
3255{
3256  "scrollbar": {
3257    "show": "never"
3258  }
3259}
3260```
3261
3262## Agent
3263
3264- Description: Customize agent behavior
3265- Setting: `agent`
3266- Default:
3267
3268```json
3269"agent": {
3270  "version": "2",
3271  "enabled": true,
3272  "button": true,
3273  "dock": "right",
3274  "default_width": 640,
3275  "default_height": 320,
3276  "default_model": {
3277    "provider": "zed.dev",
3278    "model": "claude-3-7-sonnet-latest"
3279  },
3280  "editor_model": {
3281    "provider": "zed.dev",
3282    "model": "claude-3-7-sonnet-latest"
3283  },
3284  "single_file_review": true,
3285}
3286```
3287
3288## Outline Panel
3289
3290- Description: Customize outline Panel
3291- Setting: `outline_panel`
3292- Default:
3293
3294```json
3295"outline_panel": {
3296  "button": true,
3297  "default_width": 300,
3298  "dock": "left",
3299  "file_icons": true,
3300  "folder_icons": true,
3301  "git_status": true,
3302  "indent_size": 20,
3303  "auto_reveal_entries": true,
3304  "auto_fold_dirs": true,
3305  "indent_guides": {
3306    "show": "always"
3307  },
3308  "scrollbar": {
3309    "show": null
3310  }
3311}
3312```
3313
3314## Calls
3315
3316- Description: Customize behavior when participating in a call
3317- Setting: `calls`
3318- Default:
3319
3320```json
3321"calls": {
3322  // Join calls with the microphone live by default
3323  "mute_on_join": false,
3324  // Share your project when you are the first to join a channel
3325  "share_on_join": false
3326},
3327```
3328
3329## Unnecessary Code Fade
3330
3331- Description: How much to fade out unused code.
3332- Setting: `unnecessary_code_fade`
3333- Default: `0.3`
3334
3335**Options**
3336
3337Float values between `0.0` and `0.9`, where:
3338
3339- `0.0` means no fading (unused code looks the same as used code)
3340- `0.9` means maximum fading (unused code is very faint but still visible)
3341
3342**Example**
3343
3344```json
3345{
3346  "unnecessary_code_fade": 0.5
3347}
3348```
3349
3350## UI Font Family
3351
3352- Description: The name of the font to use for text in the UI.
3353- Setting: `ui_font_family`
3354- Default: `Zed Plex Sans`
3355
3356**Options**
3357
3358The name of any font family installed on the system.
3359
3360## UI Font Features
3361
3362- Description: The OpenType features to enable for text in the UI.
3363- Setting: `ui_font_features`
3364- Default:
3365
3366```json
3367"ui_font_features": {
3368  "calt": false
3369}
3370```
3371
3372- Platform: macOS and Windows.
3373
3374**Options**
3375
3376Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3377
3378For example, to disable font ligatures, add the following to your settings:
3379
3380```json
3381{
3382  "ui_font_features": {
3383    "calt": false
3384  }
3385}
3386```
3387
3388You can also set other OpenType features, like setting `cv01` to `7`:
3389
3390```json
3391{
3392  "ui_font_features": {
3393    "cv01": 7
3394  }
3395}
3396```
3397
3398## UI Font Fallbacks
3399
3400- Description: The font fallbacks to use for text in the UI.
3401- Setting: `ui_font_fallbacks`
3402- Default: `null`
3403- Platform: macOS and Windows.
3404
3405**Options**
3406
3407For example, to use `Nerd Font` as a fallback, add the following to your settings:
3408
3409```json
3410{
3411  "ui_font_fallbacks": ["Nerd Font"]
3412}
3413```
3414
3415## UI Font Size
3416
3417- Description: The default font size for text in the UI.
3418- Setting: `ui_font_size`
3419- Default: `16`
3420
3421**Options**
3422
3423`integer` values from `6` to `100` pixels (inclusive)
3424
3425## UI Font Weight
3426
3427- Description: The default font weight for text in the UI.
3428- Setting: `ui_font_weight`
3429- Default: `400`
3430
3431**Options**
3432
3433`integer` values between `100` and `900`
3434
3435## An example configuration:
3436
3437```json
3438// ~/.config/zed/settings.json
3439{
3440  "theme": "cave-light",
3441  "tab_size": 2,
3442  "preferred_line_length": 80,
3443  "soft_wrap": "none",
3444
3445  "buffer_font_size": 18,
3446  "buffer_font_family": "Zed Plex Mono",
3447
3448  "autosave": "on_focus_change",
3449  "format_on_save": "off",
3450  "vim_mode": false,
3451  "projects_online_by_default": true,
3452  "terminal": {
3453    "font_family": "FiraCode Nerd Font Mono",
3454    "blinking": "off"
3455  },
3456  "languages": {
3457    "C": {
3458      "format_on_save": "language_server",
3459      "preferred_line_length": 64,
3460      "soft_wrap": "preferred_line_length"
3461    }
3462  }
3463}
3464```