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## User Settings
   8
   9These are your personal settings that will apply to any Zed instance you open, and they'll apply to every instance of Zed you open.
  10
  11You can access user settings via:
  12- Command Palette {#kb zed::OpenSettings}
  13- Shortcut `cmd+,`
  14
  15You can also edit settings directly in the JSON via {#kb zed::OpenSettingsFile} or with `opt+cmd+,`.
  16
  17
  18<!--
  19TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
  20Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
  21
  22TBD: 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.
  23-->
  24## Project Settings
  25Project settings will override your user settings, and apply specifically to one project. Project settings can be viewed in the Settings Editor next to the user settings.
  26
  27Although 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.
  28
  29# Settings
  30
  31## Active Pane Modifiers
  32This setting applies stying to the active pane in your editor.
  33
  34- Border size: 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.
  35  - Default: 0.0
  36- Inactive opacity: 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.
  37  - Default: 1.0
  38
  39**How to change:**
  40
  41Settings Editor (`cmd+,`) > Appearance & Behavior > Window.
  42
  43**Sample JSON**
  44```json [settings]
  45{
  46  "active_pane_modifiers": {
  47    "border_size": 0.0,
  48    "inactive_opacity": 1.0
  49  }
  50}
  51```
  52
  53## Bottom Dock Layout
  54
  55Controls the layout of the bottom dock, relative to the left and right docks. The dock can be contained, full, left aligned, or right aligned.
  56By default, the bottom dock is contained, giving the full height of the window to the left and right docks.
  57
  58**How to change:**
  59
  60Settings Editor (`cmd+,`) > Appearance & Behavior > Layout.
  61
  62**Sample JSON**
  63
  64```json [settings]
  65{
  66  "bottom_dock_layout": "contained"
  67}
  68```
  69
  70## Agent Font Size
  71
  72Controls the font size for text in the agent panel. By default, it inherits the UI font size.
  73
  74## Allow Rewrap
  75
  76Controls where the {#action editor::Rewrap} action is allowed in the current language scope. It can be allowed in comments, selections, or anywhere. By default, it is allowed in comments only.
  77
  78Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
  79
  80**Sample JSON**
  81
  82```json [settings]
  83{
  84  "allow_rewrap": "in_comments"
  85}
  86```
  87
  88## Auto Indent
  89
  90Manages whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis. By default, it's enabled.
  91
  92## Auto Indent On Paste
  93
  94Manages whether indentation of pasted content should be adjusted based on the context. By default, it's enabled.
  95
  96## Auto Install extensions
  97
  98Define extensions to be autoinstalled or never be installed. By default, HTML is auto-installed.
  99
 100**Options**
 101
 102You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions.md#installation-location):
 103
 104On macOS:
 105
 106```sh
 107ls ~/Library/Application\ Support/Zed/extensions/installed/
 108```
 109
 110On Linux:
 111
 112```sh
 113ls ~/.local/share/zed/extensions/installed
 114```
 115
 116Define extensions which should be installed (`true`) or never installed (`false`).
 117
 118```json [settings]
 119{
 120  "auto_install_extensions": {
 121    "html": true,
 122    "dockerfile": true,
 123    "docker-compose": false
 124  }
 125}
 126```
 127
 128## Autosave
 129
 130Determines when to automatically save edited buffers. Autosave is off by default.
 131
 132**Options**
 133- Off
 134- On focus change
 135- On window change
 136- After a period of inactivity (Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.)
 137
 138**Sample JSON**
 139
 140```json [settings]
 141{
 142  "autosave": {
 143    "after_delay": {
 144      "milliseconds": 1000
 145    }
 146  }
 147}
 148```
 149
 150## Autoscroll on Clicks
 151
 152Whether to scroll when clicking near the edge of the visible text area. By default, it's disabled.
 153
 154## Auto Signature Help
 155
 156Shows method signatures in the editor, when inside parentheses. By default, it's disabled.
 157
 158### Show Signature Help After Edits
 159
 160Determines whether to show the signature help after completion or a bracket pair inserted. If `auto_signature_help` is enabled, this setting will be treated as enabled also. By default, this setting is disabled.
 161
 162## Auto Update
 163
 164Determines whether or not to automatically check for updates. By default, it's enabled.
 165
 166## Base Keymap
 167
 168Base key bindings scheme. Base keymaps can be overridden with user keymaps. The default is VS Code.
 169
 170**Options**
 171- VS Code
 172- Atom
 173- JetBrains
 174- SublimeText
 175- TextMate
 176- None
 177
 178## Buffer Font Family
 179
 180The name of a font to use for rendering text in the editor. The default is ZedMono, but it can be updated to any font family installed on the user's system.
 181
 182## Buffer Font Features
 183
 184Zed 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.
 185
 186For example, to disable font ligatures, add the following to your settings:
 187
 188```json [settings]
 189{
 190  "buffer_font_features": {
 191    "calt": false
 192  }
 193}
 194```
 195
 196You can also set other OpenType features, like setting `cv01` to `7`:
 197
 198```json [settings]
 199{
 200  "buffer_font_features": {
 201    "cv01": 7
 202  }
 203}
 204```
 205
 206## Buffer Font Fallbacks
 207
 208Set the buffer text's font fallbacks, which will be merged with the platform's default fallbacks. This is not set by default.
 209
 210**Sample JSON**
 211
 212```json [settings]
 213{
 214  "buffer_font_fallbacks": ["Nerd Font"]
 215}
 216```
 217
 218## Buffer Font Size
 219
 220The default font size for text in the editor. A font size can range from `6` to `100` pixels (inclusive), and the default size is 15.
 221
 222## Buffer Font Weight
 223
 224The default font weight for text in the editor. The weight can range between `100` adn `900`, and the default is `400`.
 225
 226## Buffer Line Height
 227
 228The default line height for text in the editor. The default is Comfortable, though it can be updated to standard, or a custom value.
 229
 230## Centered Layout
 231
 232Congiuure the padding for when the editor is in  centered layout mode.
 233
 234## Close on File Delete
 235
 236Determines whether to automatically close editor tabs when their corresponding files are deleted from disk. By default, it's disabled.
 237
 238When enabled, this setting will automatically close tabs for files that have been deleted from the file system. This is particularly useful for workflows involving temporary or scratch files that are frequently created and deleted. When disabled (default), deleted files remain open with a strikethrough through their tab title.
 239
 240Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
 241
 242## Confirm Quit
 243
 244Whether or not to prompt the user to confirm before closing the application. By default, it's disabled.
 245
 246## Diagnostics Max Severity
 247
 248Controls which level to use to filter out diagnostics displayed in the editor.
 249
 250**Options**
 2511. Allow all diagnostics (default)
 2522. Show only errors
 2533. Show errors and warnings
 2544. Show errors, warnings, and information
 2555. Show all, including hints
 256
 257## Disable AI
 258
 259Controls whether to disable all AI features in Zed. By default, it's disabled.
 260
 261## Direnv Integration
 262
 263Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed. By default, it uses loads `"direct"`.
 264  `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.
 265  It also allows for those environment variables to be used in tasks.
 266
 267**Options**
 268
 269There are two options to choose from:
 270
 2711. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 2722. `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.
 273
 274## Double Click In Multibuffer
 275
 276What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers). By default, it behaves as a regular buffer and selects the whole word.
 277
 278**Options**
 2791. Behave as a regular buffer and select the whole word (default):
 2802. Open the excerpt clicked as a new buffer in the new tab:
 281
 282For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
 283
 284## Drop Target Size
 285
 286Controls the relative size of the drop target in the editor that will open dropped files as a split pane (0-0.5). For example, 0.25 means if you drop onto the top/bottom quarter of the pane a new vertical split will be used, if you drop onto the left/right quarter of the pane a new horizontal split will be used. By default, the size is `0.2`, but can be customized between `0` and `0.5`.
 287
 288## Edit Predictions
 289
 290- Description: Settings for edit predictions.
 291- Setting: `edit_predictions`
 292- Default:
 293
 294```json [settings]
 295  "edit_predictions": {
 296    "disabled_globs": [
 297      "**/.env*",
 298      "**/*.pem",
 299      "**/*.key",
 300      "**/*.cert",
 301      "**/*.crt",
 302      "**/.dev.vars",
 303      "**/secrets.yml"
 304    ]
 305  }
 306```
 307
 308**Options**
 309
 310### Disabled Globs
 311
 312- 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.
 313- Setting: `disabled_globs`
 314- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 315
 316**Options**
 317
 318List of `string` values.
 319
 320## Edit Predictions Disabled in
 321
 322- Description: A list of language scopes in which edit predictions should be disabled.
 323- Setting: `edit_predictions_disabled_in`
 324- Default: `[]`
 325
 326**Options**
 327
 328List of `string` values
 329
 3301. Don't show edit predictions in comments:
 331
 332```json [settings]
 333"disabled_in": ["comment"]
 334```
 335
 3362. Don't show edit predictions in strings and comments:
 337
 338```json [settings]
 339"disabled_in": ["comment", "string"]
 340```
 341
 3423. Only in Go, don't show edit predictions in strings and comments:
 343
 344```json [settings]
 345{
 346  "languages": {
 347    "Go": {
 348      "edit_predictions_disabled_in": ["comment", "string"]
 349    }
 350  }
 351}
 352```
 353
 354## Current Line Highlight
 355
 356- Description: How to highlight the current line in the editor.
 357- Setting: `current_line_highlight`
 358- Default: `all`
 359
 360**Options**
 361
 3621. Don't highlight the current line:
 363
 364```json [settings]
 365"current_line_highlight": "none"
 366```
 367
 3682. Highlight the gutter area:
 369
 370```json [settings]
 371"current_line_highlight": "gutter"
 372```
 373
 3743. Highlight the editor area:
 375
 376```json [settings]
 377"current_line_highlight": "line"
 378```
 379
 3804. Highlight the full line:
 381
 382```json [settings]
 383"current_line_highlight": "all"
 384```
 385
 386## Selection Highlight
 387
 388- Description: Whether to highlight all occurrences of the selected text in an editor.
 389- Setting: `selection_highlight`
 390- Default: `true`
 391
 392## Rounded Selection
 393
 394- Description: Whether the text selection should have rounded corners.
 395- Setting: `rounded_selection`
 396- Default: `true`
 397
 398## Cursor Blink
 399
 400- Description: Whether or not the cursor blinks.
 401- Setting: `cursor_blink`
 402- Default: `true`
 403
 404**Options**
 405
 406`boolean` values
 407
 408## Cursor Shape
 409
 410- Description: Cursor shape for the default editor.
 411- Setting: `cursor_shape`
 412- Default: `bar`
 413
 414**Options**
 415
 4161. A vertical bar:
 417
 418```json [settings]
 419"cursor_shape": "bar"
 420```
 421
 4222. A block that surrounds the following character:
 423
 424```json [settings]
 425"cursor_shape": "block"
 426```
 427
 4283. An underline / underscore that runs along the following character:
 429
 430```json [settings]
 431"cursor_shape": "underline"
 432```
 433
 4344. An box drawn around the following character:
 435
 436```json [settings]
 437"cursor_shape": "hollow"
 438```
 439
 440## Gutter
 441
 442- Description: Settings for the editor gutter
 443- Setting: `gutter`
 444- Default:
 445
 446```json [settings]
 447{
 448  "gutter": {
 449    "line_numbers": true,
 450    "runnables": true,
 451    "breakpoints": true,
 452    "folds": true,
 453    "min_line_number_digits": 4
 454  }
 455}
 456```
 457
 458**Options**
 459
 460- `line_numbers`: Whether to show line numbers in the gutter
 461- `runnables`: Whether to show runnable buttons in the gutter
 462- `breakpoints`: Whether to show breakpoints in the gutter
 463- `folds`: Whether to show fold buttons in the gutter
 464- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
 465
 466## Hide Mouse
 467
 468- Description: Determines when the mouse cursor should be hidden in an editor or input box.
 469- Setting: `hide_mouse`
 470- Default: `on_typing_and_movement`
 471
 472**Options**
 473
 4741. Never hide the mouse cursor:
 475
 476```json [settings]
 477"hide_mouse": "never"
 478```
 479
 4802. Hide only when typing:
 481
 482```json [settings]
 483"hide_mouse": "on_typing"
 484```
 485
 4863. Hide on both typing and cursor movement:
 487
 488```json [settings]
 489"hide_mouse": "on_typing_and_movement"
 490```
 491
 492## Snippet Sort Order
 493
 494- Description: Determines how snippets are sorted relative to other completion items.
 495- Setting: `snippet_sort_order`
 496- Default: `inline`
 497
 498**Options**
 499
 5001. Place snippets at the top of the completion list:
 501
 502```json [settings]
 503"snippet_sort_order": "top"
 504```
 505
 5062. Place snippets normally without any preference:
 507
 508```json [settings]
 509"snippet_sort_order": "inline"
 510```
 511
 5123. Place snippets at the bottom of the completion list:
 513
 514```json [settings]
 515"snippet_sort_order": "bottom"
 516```
 517
 5184. Do not show snippets in the completion list at all:
 519
 520```json [settings]
 521"snippet_sort_order": "none"
 522```
 523
 524## Editor Scrollbar
 525
 526- Description: Whether or not to show the editor scrollbar and various elements in it.
 527- Setting: `scrollbar`
 528- Default:
 529
 530```json [settings]
 531"scrollbar": {
 532  "show": "auto",
 533  "cursors": true,
 534  "git_diff": true,
 535  "search_results": true,
 536  "selected_text": true,
 537  "selected_symbol": true,
 538  "diagnostics": "all",
 539  "axes": {
 540    "horizontal": true,
 541    "vertical": true,
 542  },
 543},
 544```
 545
 546### Show Mode
 547
 548- Description: When to show the editor scrollbar.
 549- Setting: `show`
 550- Default: `auto`
 551
 552**Options**
 553
 5541. Show the scrollbar if there's important information or follow the system's configured behavior:
 555
 556```json [settings]
 557"scrollbar": {
 558  "show": "auto"
 559}
 560```
 561
 5622. Match the system's configured behavior:
 563
 564```json [settings]
 565"scrollbar": {
 566  "show": "system"
 567}
 568```
 569
 5703. Always show the scrollbar:
 571
 572```json [settings]
 573"scrollbar": {
 574  "show": "always"
 575}
 576```
 577
 5784. Never show the scrollbar:
 579
 580```json [settings]
 581"scrollbar": {
 582  "show": "never"
 583}
 584```
 585
 586### Cursor Indicators
 587
 588- Description: Whether to show cursor positions in the scrollbar.
 589- Setting: `cursors`
 590- Default: `true`
 591
 592**Options**
 593
 594`boolean` values
 595
 596### Git Diff Indicators
 597
 598- Description: Whether to show git diff indicators in the scrollbar.
 599- Setting: `git_diff`
 600- Default: `true`
 601
 602**Options**
 603
 604`boolean` values
 605
 606### Search Results Indicators
 607
 608- Description: Whether to show buffer search results in the scrollbar.
 609- Setting: `search_results`
 610- Default: `true`
 611
 612**Options**
 613
 614`boolean` values
 615
 616### Selected Text Indicators
 617
 618- Description: Whether to show selected text occurrences in the scrollbar.
 619- Setting: `selected_text`
 620- Default: `true`
 621
 622**Options**
 623
 624`boolean` values
 625
 626### Selected Symbols Indicators
 627
 628- Description: Whether to show selected symbol occurrences in the scrollbar.
 629- Setting: `selected_symbol`
 630- Default: `true`
 631
 632**Options**
 633
 634`boolean` values
 635
 636### Diagnostics
 637
 638- Description: Which diagnostic indicators to show in the scrollbar.
 639- Setting: `diagnostics`
 640- Default: `all`
 641
 642**Options**
 643
 6441. Show all diagnostics:
 645
 646```json [settings]
 647{
 648  "show_diagnostics": "all"
 649}
 650```
 651
 6522. Do not show any diagnostics:
 653
 654```json [settings]
 655{
 656  "show_diagnostics": "off"
 657}
 658```
 659
 6603. Show only errors:
 661
 662```json [settings]
 663{
 664  "show_diagnostics": "error"
 665}
 666```
 667
 6684. Show only errors and warnings:
 669
 670```json [settings]
 671{
 672  "show_diagnostics": "warning"
 673}
 674```
 675
 6765. Show only errors, warnings, and information:
 677
 678```json [settings]
 679{
 680  "show_diagnostics": "info"
 681}
 682```
 683
 684### Axes
 685
 686- Description: Forcefully enable or disable the scrollbar for each axis
 687- Setting: `axes`
 688- Default:
 689
 690```json [settings]
 691"scrollbar": {
 692  "axes": {
 693    "horizontal": true,
 694    "vertical": true,
 695  },
 696}
 697```
 698
 699#### Horizontal
 700
 701- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
 702- Setting: `horizontal`
 703- Default: `true`
 704
 705**Options**
 706
 707`boolean` values
 708
 709#### Vertical
 710
 711- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
 712- Setting: `vertical`
 713- Default: `true`
 714
 715**Options**
 716
 717`boolean` values
 718
 719## Minimap
 720
 721- Description: Settings related to the editor's minimap, which provides an overview of your document.
 722- Setting: `minimap`
 723- Default:
 724
 725```json [settings]
 726{
 727  "minimap": {
 728    "show": "never",
 729    "thumb": "always",
 730    "thumb_border": "left_open",
 731    "current_line_highlight": null
 732  }
 733}
 734```
 735
 736### Show Mode
 737
 738- Description: When to show the minimap in the editor.
 739- Setting: `show`
 740- Default: `never`
 741
 742**Options**
 743
 7441. Always show the minimap:
 745
 746```json [settings]
 747{
 748  "show": "always"
 749}
 750```
 751
 7522. Show the minimap if the editor's scrollbars are visible:
 753
 754```json [settings]
 755{
 756  "show": "auto"
 757}
 758```
 759
 7603. Never show the minimap:
 761
 762```json [settings]
 763{
 764  "show": "never"
 765}
 766```
 767
 768### Thumb Display
 769
 770- Description: When to show the minimap thumb (the visible editor area) in the minimap.
 771- Setting: `thumb`
 772- Default: `always`
 773
 774**Options**
 775
 7761. Show the minimap thumb when hovering over the minimap:
 777
 778```json [settings]
 779{
 780  "thumb": "hover"
 781}
 782```
 783
 7842. Always show the minimap thumb:
 785
 786```json [settings]
 787{
 788  "thumb": "always"
 789}
 790```
 791
 792### Thumb Border
 793
 794- Description: How the minimap thumb border should look.
 795- Setting: `thumb_border`
 796- Default: `left_open`
 797
 798**Options**
 799
 8001. Display a border on all sides of the thumb:
 801
 802```json [settings]
 803{
 804  "thumb_border": "full"
 805}
 806```
 807
 8082. Display a border on all sides except the left side:
 809
 810```json [settings]
 811{
 812  "thumb_border": "left_open"
 813}
 814```
 815
 8163. Display a border on all sides except the right side:
 817
 818```json [settings]
 819{
 820  "thumb_border": "right_open"
 821}
 822```
 823
 8244. Display a border only on the left side:
 825
 826```json [settings]
 827{
 828  "thumb_border": "left_only"
 829}
 830```
 831
 8325. Display the thumb without any border:
 833
 834```json [settings]
 835{
 836  "thumb_border": "none"
 837}
 838```
 839
 840### Current Line Highlight
 841
 842- Description: How to highlight the current line in the minimap.
 843- Setting: `current_line_highlight`
 844- Default: `null`
 845
 846**Options**
 847
 8481. Inherit the editor's current line highlight setting:
 849
 850```json [settings]
 851{
 852  "minimap": {
 853    "current_line_highlight": null
 854  }
 855}
 856```
 857
 8582. Highlight the current line in the minimap:
 859
 860```json [settings]
 861{
 862  "minimap": {
 863    "current_line_highlight": "line"
 864  }
 865}
 866```
 867
 868or
 869
 870```json [settings]
 871{
 872  "minimap": {
 873    "current_line_highlight": "all"
 874  }
 875}
 876```
 877
 8783. Do not highlight the current line in the minimap:
 879
 880```json [settings]
 881{
 882  "minimap": {
 883    "current_line_highlight": "gutter"
 884  }
 885}
 886```
 887
 888or
 889
 890```json [settings]
 891{
 892  "minimap": {
 893    "current_line_highlight": "none"
 894  }
 895}
 896```
 897
 898## Editor Tab Bar
 899
 900- Description: Settings related to the editor's tab bar.
 901- Settings: `tab_bar`
 902- Default:
 903
 904```json [settings]
 905"tab_bar": {
 906  "show": true,
 907  "show_nav_history_buttons": true,
 908  "show_tab_bar_buttons": true
 909}
 910```
 911
 912### Show
 913
 914- Description: Whether or not to show the tab bar in the editor.
 915- Setting: `show`
 916- Default: `true`
 917
 918**Options**
 919
 920`boolean` values
 921
 922### Navigation History Buttons
 923
 924- Description: Whether or not to show the navigation history buttons.
 925- Setting: `show_nav_history_buttons`
 926- Default: `true`
 927
 928**Options**
 929
 930`boolean` values
 931
 932### Tab Bar Buttons
 933
 934- Description: Whether or not to show the tab bar buttons.
 935- Setting: `show_tab_bar_buttons`
 936- Default: `true`
 937
 938**Options**
 939
 940`boolean` values
 941
 942## Editor Tabs
 943
 944- Description: Configuration for the editor tabs.
 945- Setting: `tabs`
 946- Default:
 947
 948```json [settings]
 949"tabs": {
 950  "close_position": "right",
 951  "file_icons": false,
 952  "git_status": false,
 953  "activate_on_close": "history",
 954  "show_close_button": "hover",
 955  "show_diagnostics": "off"
 956},
 957```
 958
 959### Close Position
 960
 961- Description: Where to display close button within a tab.
 962- Setting: `close_position`
 963- Default: `right`
 964
 965**Options**
 966
 9671. Display the close button on the right:
 968
 969```json [settings]
 970{
 971  "close_position": "right"
 972}
 973```
 974
 9752. Display the close button on the left:
 976
 977```json [settings]
 978{
 979  "close_position": "left"
 980}
 981```
 982
 983### File Icons
 984
 985- Description: Whether to show the file icon for a tab.
 986- Setting: `file_icons`
 987- Default: `false`
 988
 989### Git Status
 990
 991- Description: Whether or not to show Git file status in tab.
 992- Setting: `git_status`
 993- Default: `false`
 994
 995### Activate on close
 996
 997- Description: What to do after closing the current tab.
 998- Setting: `activate_on_close`
 999- Default: `history`
1000
1001**Options**
1002
10031.  Activate the tab that was open previously:
1004
1005```json [settings]
1006{
1007  "activate_on_close": "history"
1008}
1009```
1010
10112. Activate the right neighbour tab if present:
1012
1013```json [settings]
1014{
1015  "activate_on_close": "neighbour"
1016}
1017```
1018
10193. Activate the left neighbour tab if present:
1020
1021```json [settings]
1022{
1023  "activate_on_close": "left_neighbour"
1024}
1025```
1026
1027### Show close button
1028
1029- Description: Controls the appearance behavior of the tab's close button.
1030- Setting: `show_close_button`
1031- Default: `hover`
1032
1033**Options**
1034
10351.  Show it just upon hovering the tab:
1036
1037```json [settings]
1038{
1039  "show_close_button": "hover"
1040}
1041```
1042
10432. Show it persistently:
1044
1045```json [settings]
1046{
1047  "show_close_button": "always"
1048}
1049```
1050
10513. Never show it, even if hovering it:
1052
1053```json [settings]
1054{
1055  "show_close_button": "hidden"
1056}
1057```
1058
1059### Show Diagnostics
1060
1061- 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.
1062- Setting: `show_diagnostics`
1063- Default: `off`
1064
1065**Options**
1066
10671. Do not mark any files:
1068
1069```json [settings]
1070{
1071  "show_diagnostics": "off"
1072}
1073```
1074
10752. Only mark files with errors:
1076
1077```json [settings]
1078{
1079  "show_diagnostics": "errors"
1080}
1081```
1082
10833. Mark files with errors and warnings:
1084
1085```json [settings]
1086{
1087  "show_diagnostics": "all"
1088}
1089```
1090
1091### Show Inline Code Actions
1092
1093- Description: Whether to show code action button at start of buffer line.
1094- Setting: `inline_code_actions`
1095- Default: `true`
1096
1097**Options**
1098
1099`boolean` values
1100
1101### Drag And Drop Selection
1102
1103- Description: Whether to allow drag and drop text selection in buffer. `delay` is the milliseconds that must elapse before drag and drop is allowed. Otherwise, a new text selection is created.
1104- Setting: `drag_and_drop_selection`
1105- Default:
1106
1107```json [settings]
1108"drag_and_drop_selection": {
1109  "enabled": true,
1110  "delay": 300
1111}
1112```
1113
1114## Editor Toolbar
1115
1116- Description: Whether or not to show various elements in the editor toolbar.
1117- Setting: `toolbar`
1118- Default:
1119
1120```json [settings]
1121"toolbar": {
1122  "breadcrumbs": true,
1123  "quick_actions": true,
1124  "selections_menu": true,
1125  "agent_review": true,
1126  "code_actions": false
1127},
1128```
1129
1130**Options**
1131
1132Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1133
1134## Use System Tabs
1135
1136- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
1137- Setting: `use_system_window_tabs`
1138- Default: `false`
1139
1140**Options**
1141
1142This setting enables integration with macOS’s native window tabbing feature. When set to `true`, Zed windows can be grouped together as tabs in a single macOS window, following the system-wide tabbing preferences set by the user (such as "Always", "In Full Screen", or "Never"). This setting is only available on macOS.
1143
1144## Enable Language Server
1145
1146- Description: Whether or not to use language servers to provide code intelligence.
1147- Setting: `enable_language_server`
1148- Default: `true`
1149
1150**Options**
1151
1152`boolean` values
1153
1154## Ensure Final Newline On Save
1155
1156- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1157- Setting: `ensure_final_newline_on_save`
1158- Default: `true`
1159
1160**Options**
1161
1162`boolean` values
1163
1164## Expand Excerpt Lines
1165
1166- Description: The default number of lines to expand excerpts in the multibuffer by
1167- Setting: `expand_excerpt_lines`
1168- Default: `5`
1169
1170**Options**
1171
1172Positive `integer` values
1173
1174## Excerpt Context Lines
1175
1176- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1177- Setting: `excerpt_context_lines`
1178- Default: `2`
1179
1180**Options**
1181
1182Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1183
1184## Extend Comment On Newline
1185
1186- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1187- Setting: `extend_comment_on_newline`
1188- Default: `true`
1189
1190**Options**
1191
1192`boolean` values
1193
1194## Status Bar
1195
1196- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1197- Setting: `status_bar`
1198- Default:
1199
1200```json [settings]
1201"status_bar": {
1202  "active_language_button": true,
1203  "cursor_position_button": true
1204},
1205```
1206
1207There is an experimental setting that completely hides the status bar. This causes major usability problems (you will be unable to use many of Zed's features), but is provided for those who value screen real-estate above all else.
1208
1209```json
1210"status_bar": {
1211  "experimental.show": false
1212}
1213```
1214
1215## LSP
1216
1217- Description: Configuration for language servers.
1218- Setting: `lsp`
1219- Default: `null`
1220
1221**Options**
1222
1223The following settings can be overridden for specific language servers:
1224
1225- `initialization_options`
1226- `settings`
1227
1228To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1229
1230Some 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.
1231
1232For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1233
1234```json [settings]
1235"lsp": {
1236  "rust-analyzer": {
1237    "initialization_options": {
1238      "check": {
1239        "command": "clippy" // rust-analyzer.check.command (default: "check")
1240      }
1241    }
1242  }
1243}
1244```
1245
1246While other options may be changed at a runtime and should be placed under `settings`:
1247
1248```json [settings]
1249"lsp": {
1250  "yaml-language-server": {
1251    "settings": {
1252      "yaml": {
1253        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1254      }
1255    }
1256  }
1257}
1258```
1259
1260## Global LSP Settings
1261
1262- Description: Configuration for global LSP settings that apply to all language servers
1263- Setting: `global_lsp_settings`
1264- Default:
1265
1266```json [settings]
1267{
1268  "global_lsp_settings": {
1269    "button": true
1270  }
1271}
1272```
1273
1274**Options**
1275
1276- `button`: Whether to show the LSP status button in the status bar
1277
1278## LSP Highlight Debounce
1279
1280- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1281- Setting: `lsp_highlight_debounce`
1282- Default: `75`
1283
1284**Options**
1285
1286`integer` values representing milliseconds
1287
1288## Features
1289
1290- Description: Features that can be globally enabled or disabled
1291- Setting: `features`
1292- Default:
1293
1294```json [settings]
1295{
1296  "features": {
1297    "edit_prediction_provider": "zed"
1298  }
1299}
1300```
1301
1302### Edit Prediction Provider
1303
1304- Description: Which edit prediction provider to use
1305- Setting: `edit_prediction_provider`
1306- Default: `"zed"`
1307
1308**Options**
1309
13101. Use Zeta as the edit prediction provider:
1311
1312```json [settings]
1313{
1314  "features": {
1315    "edit_prediction_provider": "zed"
1316  }
1317}
1318```
1319
13202. Use Copilot as the edit prediction provider:
1321
1322```json [settings]
1323{
1324  "features": {
1325    "edit_prediction_provider": "copilot"
1326  }
1327}
1328```
1329
13303. Use Supermaven as the edit prediction provider:
1331
1332```json [settings]
1333{
1334  "features": {
1335    "edit_prediction_provider": "supermaven"
1336  }
1337}
1338```
1339
13404. Turn off edit predictions across all providers
1341
1342```json [settings]
1343{
1344  "features": {
1345    "edit_prediction_provider": "none"
1346  }
1347}
1348```
1349
1350## Format On Save
1351
1352- Description: Whether or not to perform a buffer format before saving.
1353- Setting: `format_on_save`
1354- Default: `on`
1355
1356**Options**
1357
13581. `on`, enables format on save obeying `formatter` setting:
1359
1360```json [settings]
1361{
1362  "format_on_save": "on"
1363}
1364```
1365
13662. `off`, disables format on save:
1367
1368```json [settings]
1369{
1370  "format_on_save": "off"
1371}
1372```
1373
1374## Formatter
1375
1376- Description: How to perform a buffer format.
1377- Setting: `formatter`
1378- Default: `auto`
1379
1380**Options**
1381
13821. To use the current language server, use `"language_server"`:
1383
1384```json [settings]
1385{
1386  "formatter": "language_server"
1387}
1388```
1389
13902. 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):
1391
1392```json [settings]
1393{
1394  "formatter": {
1395    "external": {
1396      "command": "sed",
1397      "arguments": ["-e", "s/ *$//"]
1398    }
1399  }
1400}
1401```
1402
14033. 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.
1404
1405WARNING: `{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.
1406
1407```json [settings]
1408  "formatter": {
1409    "external": {
1410      "command": "prettier",
1411      "arguments": ["--stdin-filepath", "{buffer_path}"]
1412    }
1413  }
1414```
1415
14164. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1417
1418```json [settings]
1419{
1420  "formatter": [
1421    // Use ESLint's --fix:
1422    { "code_action": "source.fixAll.eslint" },
1423    // Organize imports on save:
1424    { "code_action": "source.organizeImports" }
1425  ]
1426}
1427```
1428
14295. Or to use multiple formatters consecutively, use an array of formatters:
1430
1431```json [settings]
1432{
1433  "formatter": [
1434    { "language_server": { "name": "rust-analyzer" } },
1435    {
1436      "external": {
1437        "command": "sed",
1438        "arguments": ["-e", "s/ *$//"]
1439      }
1440    }
1441  ]
1442}
1443```
1444
1445Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1446If any of the formatters fails, the subsequent ones will still be executed.
1447
1448## Auto close
1449
1450- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1451- Setting: `use_autoclose`
1452- Default: `true`
1453
1454**Options**
1455
1456`boolean` values
1457
1458## Always Treat Brackets As Autoclosed
1459
1460- Description: Controls how the editor handles the autoclosed characters.
1461- Setting: `always_treat_brackets_as_autoclosed`
1462- Default: `false`
1463
1464**Options**
1465
1466`boolean` values
1467
1468**Example**
1469
1470If the setting is set to `true`:
1471
14721. Enter in the editor: `)))`
14732. Move the cursor to the start: `^)))`
14743. Enter again: `)))`
1475
1476The result is still `)))` and not `))))))`, which is what it would be by default.
1477
1478## File Scan Exclusions
1479
1480- Setting: `file_scan_exclusions`
1481- 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`.
1482- Default:
1483
1484```json [settings]
1485"file_scan_exclusions": [
1486  "**/.git",
1487  "**/.svn",
1488  "**/.hg",
1489  "**/.jj",
1490  "**/CVS",
1491  "**/.DS_Store",
1492  "**/Thumbs.db",
1493  "**/.classpath",
1494  "**/.settings"
1495],
1496```
1497
1498Note, 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.
1499
1500## File Scan Inclusions
1501
1502- Setting: `file_scan_inclusions`
1503- 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.
1504- Default:
1505
1506```json [settings]
1507"file_scan_inclusions": [".env*"],
1508```
1509
1510## File Types
1511
1512- Setting: `file_types`
1513- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1514- Default:
1515
1516```json [settings]
1517"file_types": {
1518  "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1519  "Shell Script": [".env.*"]
1520}
1521```
1522
1523**Examples**
1524
1525To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1526
1527```json [settings]
1528{
1529  "file_types": {
1530    "C++": ["c"],
1531    "TOML": ["MyLockFile"],
1532    "Dockerfile": ["Dockerfile*"]
1533  }
1534}
1535```
1536
1537## Diagnostics
1538
1539- Description: Configuration for diagnostics-related features.
1540- Setting: `diagnostics`
1541- Default:
1542
1543```json [settings]
1544{
1545  "diagnostics": {
1546    "include_warnings": true,
1547    "inline": {
1548      "enabled": false
1549    },
1550    "update_with_cursor": false,
1551    "primary_only": false,
1552    "use_rendered": false
1553  }
1554}
1555```
1556
1557### Inline Diagnostics
1558
1559- Description: Whether or not to show diagnostics information inline.
1560- Setting: `inline`
1561- Default:
1562
1563```json [settings]
1564{
1565  "diagnostics": {
1566    "inline": {
1567      "enabled": false,
1568      "update_debounce_ms": 150,
1569      "padding": 4,
1570      "min_column": 0,
1571      "max_severity": null
1572    }
1573  }
1574}
1575```
1576
1577**Options**
1578
15791. Enable inline diagnostics.
1580
1581```json [settings]
1582{
1583  "diagnostics": {
1584    "inline": {
1585      "enabled": true
1586    }
1587  }
1588}
1589```
1590
15912. Delay diagnostic updates until some time after the last diagnostic update.
1592
1593```json [settings]
1594{
1595  "diagnostics": {
1596    "inline": {
1597      "enabled": true,
1598      "update_debounce_ms": 150
1599    }
1600  }
1601}
1602```
1603
16043. Set padding between the end of the source line and the start of the diagnostic.
1605
1606```json [settings]
1607{
1608  "diagnostics": {
1609    "inline": {
1610      "enabled": true,
1611      "padding": 4
1612    }
1613  }
1614}
1615```
1616
16174. Horizontally align inline diagnostics at the given column.
1618
1619```json [settings]
1620{
1621  "diagnostics": {
1622    "inline": {
1623      "enabled": true,
1624      "min_column": 80
1625    }
1626  }
1627}
1628```
1629
16305. Show only warning and error diagnostics.
1631
1632```json [settings]
1633{
1634  "diagnostics": {
1635    "inline": {
1636      "enabled": true,
1637      "max_severity": "warning"
1638    }
1639  }
1640}
1641```
1642
1643## Git
1644
1645- Description: Configuration for git-related features.
1646- Setting: `git`
1647- Default:
1648
1649```json [settings]
1650{
1651  "git": {
1652    "git_gutter": "tracked_files",
1653    "inline_blame": {
1654      "enabled": true
1655    },
1656    "branch_picker": {
1657      "show_author_name": true
1658    },
1659    "hunk_style": "staged_hollow"
1660  }
1661}
1662```
1663
1664### Git Gutter
1665
1666- Description: Whether or not to show the git gutter.
1667- Setting: `git_gutter`
1668- Default: `tracked_files`
1669
1670**Options**
1671
16721. Show git gutter in tracked files
1673
1674```json [settings]
1675{
1676  "git": {
1677    "git_gutter": "tracked_files"
1678  }
1679}
1680```
1681
16822. Hide git gutter
1683
1684```json [settings]
1685{
1686  "git": {
1687    "git_gutter": "hide"
1688  }
1689}
1690```
1691
1692### Gutter Debounce
1693
1694- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1695- Setting: `gutter_debounce`
1696- Default: `null`
1697
1698**Options**
1699
1700`integer` values representing milliseconds
1701
1702Example:
1703
1704```json [settings]
1705{
1706  "git": {
1707    "gutter_debounce": 100
1708  }
1709}
1710```
1711
1712### Inline Git Blame
1713
1714- Description: Whether or not to show git blame information inline, on the currently focused line.
1715- Setting: `inline_blame`
1716- Default:
1717
1718```json [settings]
1719{
1720  "git": {
1721    "inline_blame": {
1722      "enabled": true
1723    }
1724  }
1725}
1726```
1727
1728**Options**
1729
17301. Disable inline git blame:
1731
1732```json [settings]
1733{
1734  "git": {
1735    "inline_blame": {
1736      "enabled": false
1737    }
1738  }
1739}
1740```
1741
17422. Only show inline git blame after a delay (that starts after cursor stops moving):
1743
1744```json [settings]
1745{
1746  "git": {
1747    "inline_blame": {
1748      "delay_ms": 500
1749    }
1750  }
1751}
1752```
1753
17543. Show a commit summary next to the commit date and author:
1755
1756```json [settings]
1757{
1758  "git": {
1759    "inline_blame": {
1760      "show_commit_summary": true
1761    }
1762  }
1763}
1764```
1765
17664. Use this as the minimum column at which to display inline blame information:
1767
1768```json [settings]
1769{
1770  "git": {
1771    "inline_blame": {
1772      "min_column": 80
1773    }
1774  }
1775}
1776```
1777
17785. Set the padding between the end of the line and the inline blame hint, in ems:
1779
1780```json [settings]
1781{
1782  "git": {
1783    "inline_blame": {
1784      "padding": 10
1785    }
1786  }
1787}
1788```
1789
1790### Branch Picker
1791
1792- Description: Configuration related to the branch picker.
1793- Setting: `branch_picker`
1794- Default:
1795
1796```json [settings]
1797{
1798  "git": {
1799    "branch_picker": {
1800      "show_author_name": false
1801    }
1802  }
1803}
1804```
1805
1806**Options**
1807
18081. Show the author name in the branch picker:
1809
1810```json [settings]
1811{
1812  "git": {
1813    "branch_picker": {
1814      "show_author_name": true
1815    }
1816  }
1817}
1818```
1819
1820### Hunk Style
1821
1822- Description: What styling we should use for the diff hunks.
1823- Setting: `hunk_style`
1824- Default:
1825
1826```json [settings]
1827{
1828  "git": {
1829    "hunk_style": "staged_hollow"
1830  }
1831}
1832```
1833
1834**Options**
1835
18361. Show the staged hunks faded out and with a border:
1837
1838```json [settings]
1839{
1840  "git": {
1841    "hunk_style": "staged_hollow"
1842  }
1843}
1844```
1845
18462. Show unstaged hunks faded out and with a border:
1847
1848```json [settings]
1849{
1850  "git": {
1851    "hunk_style": "unstaged_hollow"
1852  }
1853}
1854```
1855
1856## Go to Definition Fallback
1857
1858- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
1859- Setting: `go_to_definition_fallback`
1860- Default: `"find_all_references"`
1861
1862**Options**
1863
18641. Do nothing:
1865
1866```json [settings]
1867{
1868  "go_to_definition_fallback": "none"
1869}
1870```
1871
18722. Find references for the same symbol (default):
1873
1874```json [settings]
1875{
1876  "go_to_definition_fallback": "find_all_references"
1877}
1878```
1879
1880## Hard Tabs
1881
1882- Description: Whether to indent lines using tab characters or multiple spaces.
1883- Setting: `hard_tabs`
1884- Default: `false`
1885
1886**Options**
1887
1888`boolean` values
1889
1890## Helix Mode
1891
1892- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](./helix.md) for more details.
1893- Setting: `helix_mode`
1894- Default: `false`
1895
1896**Options**
1897
1898`boolean` values
1899
1900## Indent Guides
1901
1902- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1903- Setting: `indent_guides`
1904- Default:
1905
1906```json [settings]
1907{
1908  "indent_guides": {
1909    "enabled": true,
1910    "line_width": 1,
1911    "active_line_width": 1,
1912    "coloring": "fixed",
1913    "background_coloring": "disabled"
1914  }
1915}
1916```
1917
1918**Options**
1919
19201. Disable indent guides
1921
1922```json [settings]
1923{
1924  "indent_guides": {
1925    "enabled": false
1926  }
1927}
1928```
1929
19302. Enable indent guides for a specific language.
1931
1932```json [settings]
1933{
1934  "languages": {
1935    "Python": {
1936      "indent_guides": {
1937        "enabled": true
1938      }
1939    }
1940  }
1941}
1942```
1943
19443. Enable indent aware coloring ("rainbow indentation").
1945   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.
1946
1947```json [settings]
1948{
1949  "indent_guides": {
1950    "enabled": true,
1951    "coloring": "indent_aware"
1952  }
1953}
1954```
1955
19564. Enable indent aware background coloring ("rainbow indentation").
1957   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.
1958
1959```json [settings]
1960{
1961  "indent_guides": {
1962    "enabled": true,
1963    "coloring": "indent_aware",
1964    "background_coloring": "indent_aware"
1965  }
1966}
1967```
1968
1969## Hover Popover Enabled
1970
1971- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1972- Setting: `hover_popover_enabled`
1973- Default: `true`
1974
1975**Options**
1976
1977`boolean` values
1978
1979## Hover Popover Delay
1980
1981- Description: Time to wait in milliseconds before showing the informational hover box.
1982- Setting: `hover_popover_delay`
1983- Default: `300`
1984
1985**Options**
1986
1987`integer` values representing milliseconds
1988
1989## Icon Theme
1990
1991- 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.
1992- Setting: `icon_theme`
1993- Default: `Zed (Default)`
1994
1995### Icon Theme Object
1996
1997- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1998- Setting: `icon_theme`
1999- Default:
2000
2001```json [settings]
2002"icon_theme": {
2003  "mode": "system",
2004  "dark": "Zed (Default)",
2005  "light": "Zed (Default)"
2006},
2007```
2008
2009### Mode
2010
2011- Description: Specify the icon theme mode.
2012- Setting: `mode`
2013- Default: `system`
2014
2015**Options**
2016
20171. Set the icon theme to dark mode
2018
2019```json [settings]
2020{
2021  "mode": "dark"
2022}
2023```
2024
20252. Set the icon theme to light mode
2026
2027```json [settings]
2028{
2029  "mode": "light"
2030}
2031```
2032
20333. Set the icon theme to system mode
2034
2035```json [settings]
2036{
2037  "mode": "system"
2038}
2039```
2040
2041### Dark
2042
2043- Description: The name of the dark icon theme.
2044- Setting: `dark`
2045- Default: `Zed (Default)`
2046
2047**Options**
2048
2049Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2050
2051### Light
2052
2053- Description: The name of the light icon theme.
2054- Setting: `light`
2055- Default: `Zed (Default)`
2056
2057**Options**
2058
2059Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2060
2061## Image Viewer
2062
2063- Description: Settings for image viewer functionality
2064- Setting: `image_viewer`
2065- Default:
2066
2067```json [settings]
2068{
2069  "image_viewer": {
2070    "unit": "binary"
2071  }
2072}
2073```
2074
2075**Options**
2076
2077### Unit
2078
2079- Description: The unit for image file sizes
2080- Setting: `unit`
2081- Default: `"binary"`
2082
2083**Options**
2084
20851. Use binary units (KiB, MiB):
2086
2087```json [settings]
2088{
2089  "image_viewer": {
2090    "unit": "binary"
2091  }
2092}
2093```
2094
20952. Use decimal units (KB, MB):
2096
2097```json [settings]
2098{
2099  "image_viewer": {
2100    "unit": "decimal"
2101  }
2102}
2103```
2104
2105## Inlay hints
2106
2107- Description: Configuration for displaying extra text with hints in the editor.
2108- Setting: `inlay_hints`
2109- Default:
2110
2111```json [settings]
2112"inlay_hints": {
2113  "enabled": false,
2114  "show_type_hints": true,
2115  "show_parameter_hints": true,
2116  "show_other_hints": true,
2117  "show_background": false,
2118  "edit_debounce_ms": 700,
2119  "scroll_debounce_ms": 50,
2120  "toggle_on_modifiers_press": null
2121}
2122```
2123
2124**Options**
2125
2126Inlay hints querying consists of two parts: editor (client) and LSP server.
2127With 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.
2128At 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.
2129
2130The following languages have inlay hints preconfigured by Zed:
2131
2132- [Go](https://docs.zed.dev/languages/go)
2133- [Rust](https://docs.zed.dev/languages/rust)
2134- [Svelte](https://docs.zed.dev/languages/svelte)
2135- [TypeScript](https://docs.zed.dev/languages/typescript)
2136
2137Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2138
2139Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2140Settings-related hint updates are not debounced.
2141
2142All possible config values for `toggle_on_modifiers_press` are:
2143
2144```json [settings]
2145"inlay_hints": {
2146  "toggle_on_modifiers_press": {
2147    "control": true,
2148    "shift": true,
2149    "alt": true,
2150    "platform": true,
2151    "function": true
2152  }
2153}
2154```
2155
2156Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2157
2158## Journal
2159
2160- Description: Configuration for the journal.
2161- Setting: `journal`
2162- Default:
2163
2164```json [settings]
2165"journal": {
2166  "path": "~",
2167  "hour_format": "hour12"
2168}
2169```
2170
2171### Path
2172
2173- Description: The path of the directory where journal entries are stored.
2174- Setting: `path`
2175- Default: `~`
2176
2177**Options**
2178
2179`string` values
2180
2181### Hour Format
2182
2183- Description: The format to use for displaying hours in the journal.
2184- Setting: `hour_format`
2185- Default: `hour12`
2186
2187**Options**
2188
21891. 12-hour format:
2190
2191```json [settings]
2192{
2193  "hour_format": "hour12"
2194}
2195```
2196
21972. 24-hour format:
2198
2199```json [settings]
2200{
2201  "hour_format": "hour24"
2202}
2203```
2204
2205## JSX Tag Auto Close
2206
2207- Description: Whether to automatically close JSX tags
2208- Setting: `jsx_tag_auto_close`
2209- Default:
2210
2211```json [settings]
2212{
2213  "jsx_tag_auto_close": {
2214    "enabled": true
2215  }
2216}
2217```
2218
2219**Options**
2220
2221- `enabled`: Whether to enable automatic JSX tag closing
2222
2223## Languages
2224
2225- Description: Configuration for specific languages.
2226- Setting: `languages`
2227- Default: `null`
2228
2229**Options**
2230
2231To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2232
2233```json [settings]
2234"languages": {
2235  "C": {
2236    "format_on_save": "off",
2237    "preferred_line_length": 64,
2238    "soft_wrap": "preferred_line_length"
2239  },
2240  "JSON": {
2241    "tab_size": 4
2242  }
2243}
2244```
2245
2246The following settings can be overridden for each specific language:
2247
2248- [`enable_language_server`](#enable-language-server)
2249- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2250- [`format_on_save`](#format-on-save)
2251- [`formatter`](#formatter)
2252- [`hard_tabs`](#hard-tabs)
2253- [`preferred_line_length`](#preferred-line-length)
2254- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2255- [`show_edit_predictions`](#show-edit-predictions)
2256- [`show_whitespaces`](#show-whitespaces)
2257- [`whitespace_map`](#whitespace-map)
2258- [`soft_wrap`](#soft-wrap)
2259- [`tab_size`](#tab-size)
2260- [`use_autoclose`](#use-autoclose)
2261- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2262
2263These values take in the same options as the root-level settings with the same name.
2264
2265## Language Models
2266
2267- Description: Configuration for language model providers
2268- Setting: `language_models`
2269- Default:
2270
2271```json [settings]
2272{
2273  "language_models": {
2274    "anthropic": {
2275      "api_url": "https://api.anthropic.com"
2276    },
2277    "google": {
2278      "api_url": "https://generativelanguage.googleapis.com"
2279    },
2280    "ollama": {
2281      "api_url": "http://localhost:11434"
2282    },
2283    "openai": {
2284      "api_url": "https://api.openai.com/v1"
2285    }
2286  }
2287}
2288```
2289
2290**Options**
2291
2292Configuration for various AI model providers including API URLs and authentication settings.
2293
2294## Line Indicator Format
2295
2296- Description: Format for line indicator in the status bar
2297- Setting: `line_indicator_format`
2298- Default: `"short"`
2299
2300**Options**
2301
23021. Short format:
2303
2304```json [settings]
2305{
2306  "line_indicator_format": "short"
2307}
2308```
2309
23102. Long format:
2311
2312```json [settings]
2313{
2314  "line_indicator_format": "long"
2315}
2316```
2317
2318## Linked Edits
2319
2320- Description: Whether to perform linked edits of associated ranges, if the language server supports it. For example, when editing opening `<html>` tag, the contents of the closing `</html>` tag will be edited as well.
2321- Setting: `linked_edits`
2322- Default: `true`
2323
2324**Options**
2325
2326`boolean` values
2327
2328## LSP Document Colors
2329
2330- Description: Whether to show document color information from the language server
2331- Setting: `lsp_document_colors`
2332- Default: `true`
2333
2334**Options**
2335
2336`boolean` values
2337
2338## Max Tabs
2339
2340- Description: Maximum number of tabs to show in the tab bar
2341- Setting: `max_tabs`
2342- Default: `null`
2343
2344**Options**
2345
2346Positive `integer` values or `null` for unlimited tabs
2347
2348## Middle Click Paste (Linux only)
2349
2350- Description: Enable middle-click paste on Linux
2351- Setting: `middle_click_paste`
2352- Default: `true`
2353
2354**Options**
2355
2356`boolean` values
2357
2358## Multi Cursor Modifier
2359
2360- Description: Determines the modifier to be used to add multiple cursors with the mouse. The open hover link mouse gestures will adapt such that it do not conflict with the multicursor modifier.
2361- Setting: `multi_cursor_modifier`
2362- Default: `alt`
2363
2364**Options**
2365
23661. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2367
2368```json [settings]
2369{
2370  "multi_cursor_modifier": "alt"
2371}
2372```
2373
23742. Maps `Control` on Linux and Windows and to `Command` on macOS:
2375
2376```json [settings]
2377{
2378  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2379}
2380```
2381
2382## Node
2383
2384- Description: Configuration for Node.js integration
2385- Setting: `node`
2386- Default:
2387
2388```json [settings]
2389{
2390  "node": {
2391    "ignore_system_version": false,
2392    "path": null,
2393    "npm_path": null
2394  }
2395}
2396```
2397
2398**Options**
2399
2400- `ignore_system_version`: Whether to ignore the system Node.js version
2401- `path`: Custom path to Node.js binary
2402- `npm_path`: Custom path to npm binary
2403
2404## Network Proxy
2405
2406- Description: Configure a network proxy for Zed.
2407- Setting: `proxy`
2408- Default: `null`
2409
2410**Options**
2411
2412The proxy setting must contain a URL to the proxy.
2413
2414The following URI schemes are supported:
2415
2416- `http`
2417- `https`
2418- `socks4` - SOCKS4 proxy with local DNS
2419- `socks4a` - SOCKS4 proxy with remote DNS
2420- `socks5` - SOCKS5 proxy with local DNS
2421- `socks5h` - SOCKS5 proxy with remote DNS
2422
2423`http` will be used when no scheme is specified.
2424
2425By 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`, `no_proxy` and `NO_PROXY`.
2426
2427For example, to set an `http` proxy, add the following to your settings:
2428
2429```json [settings]
2430{
2431  "proxy": "http://127.0.0.1:10809"
2432}
2433```
2434
2435Or to set a `socks5` proxy:
2436
2437```json [settings]
2438{
2439  "proxy": "socks5h://localhost:10808"
2440}
2441```
2442
2443If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
2444
2445## On Last Window Closed
2446
2447- Description: What to do when the last window is closed
2448- Setting: `on_last_window_closed`
2449- Default: `"platform_default"`
2450
2451**Options**
2452
24531. Use platform default behavior:
2454
2455```json [settings]
2456{
2457  "on_last_window_closed": "platform_default"
2458}
2459```
2460
24612. Always quit the application:
2462
2463```json [settings]
2464{
2465  "on_last_window_closed": "quit_app"
2466}
2467```
2468
2469## Profiles
2470
2471- Description: Configuration profiles that can be applied on top of existing settings
2472- Setting: `profiles`
2473- Default: `{}`
2474
2475**Options**
2476
2477Configuration object for defining settings profiles. Example:
2478
2479```json [settings]
2480{
2481  "profiles": {
2482    "presentation": {
2483      "buffer_font_size": 20,
2484      "ui_font_size": 18,
2485      "theme": "One Light"
2486    }
2487  }
2488}
2489```
2490
2491## Preview tabs
2492
2493- Description:
2494  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. \
2495   There are several ways to convert a preview tab into a regular tab:
2496
2497  - Double-clicking on the file
2498  - Double-clicking on the tab header
2499  - Using the {#action project_panel::OpenPermanent} action
2500  - Editing the file
2501  - Dragging the file to a different pane
2502
2503- Setting: `preview_tabs`
2504- Default:
2505
2506```json [settings]
2507"preview_tabs": {
2508  "enabled": true,
2509  "enable_preview_from_file_finder": false,
2510  "enable_preview_from_code_navigation": false,
2511}
2512```
2513
2514### Enable preview from file finder
2515
2516- Description: Determines whether to open files in preview mode when selected from the file finder.
2517- Setting: `enable_preview_from_file_finder`
2518- Default: `false`
2519
2520**Options**
2521
2522`boolean` values
2523
2524### Enable preview from code navigation
2525
2526- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2527- Setting: `enable_preview_from_code_navigation`
2528- Default: `false`
2529
2530**Options**
2531
2532`boolean` values
2533
2534## File Finder
2535
2536### File Icons
2537
2538- Description: Whether to show file icons in the file finder.
2539- Setting: `file_icons`
2540- Default: `true`
2541
2542### Modal Max Width
2543
2544- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2545- Setting: `modal_max_width`
2546- Default: `small`
2547
2548### Skip Focus For Active In Search
2549
2550- Description: Determines whether the file finder should skip focus for the active file in search results.
2551- Setting: `skip_focus_for_active_in_search`
2552- Default: `true`
2553
2554## Pane Split Direction Horizontal
2555
2556- Description: The direction that you want to split panes horizontally
2557- Setting: `pane_split_direction_horizontal`
2558- Default: `"up"`
2559
2560**Options**
2561
25621. Split upward:
2563
2564```json [settings]
2565{
2566  "pane_split_direction_horizontal": "up"
2567}
2568```
2569
25702. Split downward:
2571
2572```json [settings]
2573{
2574  "pane_split_direction_horizontal": "down"
2575}
2576```
2577
2578## Pane Split Direction Vertical
2579
2580- Description: The direction that you want to split panes vertically
2581- Setting: `pane_split_direction_vertical`
2582- Default: `"left"`
2583
2584**Options**
2585
25861. Split to the left:
2587
2588```json [settings]
2589{
2590  "pane_split_direction_vertical": "left"
2591}
2592```
2593
25942. Split to the right:
2595
2596```json [settings]
2597{
2598  "pane_split_direction_vertical": "right"
2599}
2600```
2601
2602## Preferred Line Length
2603
2604- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2605- Setting: `preferred_line_length`
2606- Default: `80`
2607
2608**Options**
2609
2610`integer` values
2611
2612## Private Files
2613
2614- Description: Globs to match against file paths to determine if a file is private
2615- Setting: `private_files`
2616- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
2617
2618**Options**
2619
2620List of `string` glob patterns
2621
2622## Projects Online By Default
2623
2624- Description: Whether or not to show the online projects view by default.
2625- Setting: `projects_online_by_default`
2626- Default: `true`
2627
2628**Options**
2629
2630`boolean` values
2631
2632## Read SSH Config
2633
2634- Description: Whether to read SSH configuration files
2635- Setting: `read_ssh_config`
2636- Default: `true`
2637
2638**Options**
2639
2640`boolean` values
2641
2642## Redact Private Values
2643
2644- Description: Hide the values of variables from visual display in private files
2645- Setting: `redact_private_values`
2646- Default: `false`
2647
2648**Options**
2649
2650`boolean` values
2651
2652## Relative Line Numbers
2653
2654- Description: Whether to show relative line numbers in the gutter
2655- Setting: `relative_line_numbers`
2656- Default: `false`
2657
2658**Options**
2659
2660`boolean` values
2661
2662## Remove Trailing Whitespace On Save
2663
2664- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2665- Setting: `remove_trailing_whitespace_on_save`
2666- Default: `true`
2667
2668**Options**
2669
2670`boolean` values
2671
2672## Resize All Panels In Dock
2673
2674- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
2675- Setting: `resize_all_panels_in_dock`
2676- Default: `["left"]`
2677
2678**Options**
2679
2680List of strings containing any combination of:
2681
2682- `"left"`: Resize left dock panels together
2683- `"right"`: Resize right dock panels together
2684- `"bottom"`: Resize bottom dock panels together
2685
2686## Restore on File Reopen
2687
2688- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
2689- Setting: `restore_on_file_reopen`
2690- Default: `true`
2691
2692**Options**
2693
2694`boolean` values
2695
2696## Restore on Startup
2697
2698- Description: Controls session restoration on startup.
2699- Setting: `restore_on_startup`
2700- Default: `last_session`
2701
2702**Options**
2703
27041. Restore all workspaces that were open when quitting Zed:
2705
2706```json [settings]
2707{
2708  "restore_on_startup": "last_session"
2709}
2710```
2711
27122. Restore the workspace that was closed last:
2713
2714```json [settings]
2715{
2716  "restore_on_startup": "last_workspace"
2717}
2718```
2719
27203. Always start with an empty editor:
2721
2722```json [settings]
2723{
2724  "restore_on_startup": "none"
2725}
2726```
2727
2728## Scroll Beyond Last Line
2729
2730- Description: Whether the editor will scroll beyond the last line
2731- Setting: `scroll_beyond_last_line`
2732- Default: `"one_page"`
2733
2734**Options**
2735
27361. Scroll one page beyond the last line by one page:
2737
2738```json [settings]
2739{
2740  "scroll_beyond_last_line": "one_page"
2741}
2742```
2743
27442. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
2745
2746```json [settings]
2747{
2748  "scroll_beyond_last_line": "vertical_scroll_margin"
2749}
2750```
2751
27523. The editor will not scroll beyond the last line:
2753
2754```json [settings]
2755{
2756  "scroll_beyond_last_line": "off"
2757}
2758```
2759
2760**Options**
2761
2762`boolean` values
2763
2764## Scroll Sensitivity
2765
2766- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
2767- Setting: `scroll_sensitivity`
2768- Default: `1.0`
2769
2770**Options**
2771
2772Positive `float` values
2773
2774### Fast Scroll Sensitivity
2775
2776- Description: Scroll sensitivity multiplier for fast scrolling. This multiplier is applied to both the horizontal and vertical delta values while scrolling. Fast scrolling happens when a user holds the alt or option key while scrolling.
2777- Setting: `fast_scroll_sensitivity`
2778- Default: `4.0`
2779
2780**Options**
2781
2782Positive `float` values
2783
2784### Horizontal Scroll Margin
2785
2786- Description: The number of characters to keep on either side when scrolling with the mouse
2787- Setting: `horizontal_scroll_margin`
2788- Default: `5`
2789
2790**Options**
2791
2792Non-negative `integer` values
2793
2794### Vertical Scroll Margin
2795
2796- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
2797- Setting: `vertical_scroll_margin`
2798- Default: `3`
2799
2800**Options**
2801
2802Non-negative `integer` values
2803
2804## Search
2805
2806- Description: Search options to enable by default when opening new project and buffer searches.
2807- Setting: `search`
2808- Default:
2809
2810```json [settings]
2811"search": {
2812  "whole_word": false,
2813  "case_sensitive": false,
2814  "include_ignored": false,
2815  "regex": false
2816},
2817```
2818
2819## Search Wrap
2820
2821- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
2822- Setting: `search_wrap`
2823- Default: `true`
2824
2825## Seed Search Query From Cursor
2826
2827- Description: When to populate a new search's query based on the text under the cursor.
2828- Setting: `seed_search_query_from_cursor`
2829- Default: `always`
2830
2831**Options**
2832
28331. `always` always populate the search query with the word under the cursor
28342. `selection` only populate the search query when there is text selected
28353. `never` never populate the search query
2836
2837## Use Smartcase Search
2838
2839- 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. \
2840  This applies to both in-file searches and project-wide searches.
2841- Setting: `use_smartcase_search`
2842- Default: `false`
2843
2844**Options**
2845
2846`boolean` values
2847
2848Examples:
2849
2850- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2851- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2852
2853## Show Call Status Icon
2854
2855- Description: Whether or not to show the call status icon in the status bar.
2856- Setting: `show_call_status_icon`
2857- Default: `true`
2858
2859**Options**
2860
2861`boolean` values
2862
2863## Completions
2864
2865- Description: Controls how completions are processed for this language.
2866- Setting: `completions`
2867- Default:
2868
2869```json [settings]
2870{
2871  "completions": {
2872    "words": "fallback",
2873    "words_min_length": 3,
2874    "lsp": true,
2875    "lsp_fetch_timeout_ms": 0,
2876    "lsp_insert_mode": "replace_suffix"
2877  }
2878}
2879```
2880
2881### Words
2882
2883- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2884- Setting: `words`
2885- Default: `fallback`
2886
2887**Options**
2888
28891. `enabled` - Always fetch document's words for completions along with LSP completions
28902. `fallback` - Only if LSP response errors or times out, use document's words to show completions
28913. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2892
2893### Min Words Query Length
2894
2895- Description: Minimum number of characters required to automatically trigger word-based completions.
2896  Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
2897- Setting: `words_min_length`
2898- Default: `3`
2899
2900**Options**
2901
2902Positive integer values
2903
2904### LSP
2905
2906- Description: Whether to fetch LSP completions or not.
2907- Setting: `lsp`
2908- Default: `true`
2909
2910**Options**
2911
2912`boolean` values
2913
2914### LSP Fetch Timeout (ms)
2915
2916- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2917- Setting: `lsp_fetch_timeout_ms`
2918- Default: `0`
2919
2920**Options**
2921
2922`integer` values representing milliseconds
2923
2924### LSP Insert Mode
2925
2926- Description: Controls what range to replace when accepting LSP completions.
2927- Setting: `lsp_insert_mode`
2928- Default: `replace_suffix`
2929
2930**Options**
2931
29321. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
29332. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
29343. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
29354. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2936
2937## Show Completions On Input
2938
2939- Description: Whether or not to show completions as you type.
2940- Setting: `show_completions_on_input`
2941- Default: `true`
2942
2943**Options**
2944
2945`boolean` values
2946
2947## Show Completion Documentation
2948
2949- Description: Whether to display inline and alongside documentation for items in the completions menu.
2950- Setting: `show_completion_documentation`
2951- Default: `true`
2952
2953**Options**
2954
2955`boolean` values
2956
2957## Show Edit Predictions
2958
2959- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2960- Setting: `show_edit_predictions`
2961- Default: `true`
2962
2963**Options**
2964
2965`boolean` values
2966
2967## Show Whitespaces
2968
2969- Description: Whether or not to render whitespace characters in the editor.
2970- Setting: `show_whitespaces`
2971- Default: `selection`
2972
2973**Options**
2974
29751. `all`
29762. `selection`
29773. `none`
29784. `boundary`
2979
2980## Whitespace Map
2981
2982- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
2983- Setting: `whitespace_map`
2984- Default:
2985
2986```json [settings]
2987{
2988  "whitespace_map": {
2989    "space": "•",
2990    "tab": "→"
2991  }
2992}
2993```
2994
2995## Soft Wrap
2996
2997- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2998- Setting: `soft_wrap`
2999- Default: `none`
3000
3001**Options**
3002
30031. `none` to avoid wrapping generally, unless the line is too long
30042. `prefer_line` (deprecated, same as `none`)
30053. `editor_width` to wrap lines that overflow the editor width
30064. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
30075. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3008
3009## Show Wrap Guides
3010
3011- Description: Whether to show wrap guides (vertical rulers) in the editor. Setting this to true will show a guide at the 'preferred_line_length' value if 'soft_wrap' is set to 'preferred_line_length', and will show any additional guides as specified by the 'wrap_guides' setting.
3012- Setting: `show_wrap_guides`
3013- Default: `true`
3014
3015**Options**
3016
3017`boolean` values
3018
3019## Use On Type Format
3020
3021- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3022- Setting: `use_on_type_format`
3023- Default: `true`
3024
3025**Options**
3026
3027`boolean` values
3028
3029## Use Auto Surround
3030
3031- Description: Whether to automatically surround selected text when typing opening parenthesis, bracket, brace, single or double quote characters. For example, when you select text and type (, Zed will surround the text with ().
3032- Setting: `use_auto_surround`
3033- Default: `true`
3034
3035**Options**
3036
3037`boolean` values
3038
3039## Use System Path Prompts
3040
3041- Description: Whether to use the system provided dialogs for Open and Save As. When set to false, Zed will use the built-in keyboard-first pickers.
3042- Setting: `use_system_path_prompts`
3043- Default: `true`
3044
3045**Options**
3046
3047`boolean` values
3048
3049## Use System Prompts
3050
3051- Description: Whether to use the system provided dialogs for prompts, such as confirmation prompts. When set to false, Zed will use its built-in prompts. Note that on Linux, this option is ignored and Zed will always use the built-in prompts.
3052- Setting: `use_system_prompts`
3053- Default: `true`
3054
3055**Options**
3056
3057`boolean` values
3058
3059## Wrap Guides (Vertical Rulers)
3060
3061- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3062- Setting: `wrap_guides`
3063- Default: []
3064
3065**Options**
3066
3067List of `integer` column numbers
3068
3069## Tab Size
3070
3071- Description: The number of spaces to use for each tab character.
3072- Setting: `tab_size`
3073- Default: `4`
3074
3075**Options**
3076
3077`integer` values
3078
3079## Tasks
3080
3081- Description: Configuration for tasks that can be run within Zed
3082- Setting: `tasks`
3083- Default:
3084
3085```json [settings]
3086{
3087  "tasks": {
3088    "variables": {},
3089    "enabled": true,
3090    "prefer_lsp": false
3091  }
3092}
3093```
3094
3095**Options**
3096
3097- `variables`: Custom variables for task configuration
3098- `enabled`: Whether tasks are enabled
3099- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3100
3101## Telemetry
3102
3103- Description: Control what info is collected by Zed.
3104- Setting: `telemetry`
3105- Default:
3106
3107```json [settings]
3108"telemetry": {
3109  "diagnostics": true,
3110  "metrics": true
3111},
3112```
3113
3114**Options**
3115
3116### Diagnostics
3117
3118- Description: Setting for sending debug-related data, such as crash reports.
3119- Setting: `diagnostics`
3120- Default: `true`
3121
3122**Options**
3123
3124`boolean` values
3125
3126### Metrics
3127
3128- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3129- Setting: `metrics`
3130- Default: `true`
3131
3132**Options**
3133
3134`boolean` values
3135
3136## Terminal
3137
3138- Description: Configuration for the terminal.
3139- Setting: `terminal`
3140- Default:
3141
3142```json [settings]
3143{
3144  "terminal": {
3145    "alternate_scroll": "off",
3146    "blinking": "terminal_controlled",
3147    "copy_on_select": false,
3148    "keep_selection_on_copy": true,
3149    "dock": "bottom",
3150    "default_width": 640,
3151    "default_height": 320,
3152    "detect_venv": {
3153      "on": {
3154        "directories": [".env", "env", ".venv", "venv"],
3155        "activate_script": "default"
3156      }
3157    },
3158    "env": {},
3159    "font_family": null,
3160    "font_features": null,
3161    "font_size": null,
3162    "line_height": "comfortable",
3163    "minimum_contrast": 45,
3164    "option_as_meta": false,
3165    "button": true,
3166    "shell": "system",
3167    "toolbar": {
3168      "breadcrumbs": false
3169    },
3170    "working_directory": "current_project_directory",
3171    "scrollbar": {
3172      "show": null
3173    }
3174  }
3175}
3176```
3177
3178### Terminal: Dock
3179
3180- Description: Control the position of the dock
3181- Setting: `dock`
3182- Default: `bottom`
3183
3184**Options**
3185
3186`"bottom"`, `"left"` or `"right"`
3187
3188### Terminal: Alternate Scroll
3189
3190- 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.
3191- Setting: `alternate_scroll`
3192- Default: `off`
3193
3194**Options**
3195
31961. Default alternate scroll mode to off
3197
3198```json [settings]
3199{
3200  "terminal": {
3201    "alternate_scroll": "off"
3202  }
3203}
3204```
3205
32062. Default alternate scroll mode to on
3207
3208```json [settings]
3209{
3210  "terminal": {
3211    "alternate_scroll": "on"
3212  }
3213}
3214```
3215
3216### Terminal: Blinking
3217
3218- Description: Set the cursor blinking behavior in the terminal
3219- Setting: `blinking`
3220- Default: `terminal_controlled`
3221
3222**Options**
3223
32241. Never blink the cursor, ignore the terminal mode
3225
3226```json [settings]
3227{
3228  "terminal": {
3229    "blinking": "off"
3230  }
3231}
3232```
3233
32342. Default the cursor blink to off, but allow the terminal to turn blinking on
3235
3236```json [settings]
3237{
3238  "terminal": {
3239    "blinking": "terminal_controlled"
3240  }
3241}
3242```
3243
32443. Always blink the cursor, ignore the terminal mode
3245
3246```json [settings]
3247{
3248  "terminal": {
3249    "blinking": "on"
3250  }
3251}
3252```
3253
3254### Terminal: Copy On Select
3255
3256- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
3257- Setting: `copy_on_select`
3258- Default: `false`
3259
3260**Options**
3261
3262`boolean` values
3263
3264**Example**
3265
3266```json [settings]
3267{
3268  "terminal": {
3269    "copy_on_select": true
3270  }
3271}
3272```
3273
3274### Terminal: Cursor Shape
3275
3276- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
3277- Setting: `cursor_shape`
3278- Default: `null` (defaults to block)
3279
3280**Options**
3281
32821. A block that surrounds the following character
3283
3284```json [settings]
3285{
3286  "terminal": {
3287    "cursor_shape": "block"
3288  }
3289}
3290```
3291
32922. A vertical bar
3293
3294```json [settings]
3295{
3296  "terminal": {
3297    "cursor_shape": "bar"
3298  }
3299}
3300```
3301
33023. An underline / underscore that runs along the following character
3303
3304```json [settings]
3305{
3306  "terminal": {
3307    "cursor_shape": "underline"
3308  }
3309}
3310```
3311
33124. A box drawn around the following character
3313
3314```json [settings]
3315{
3316  "terminal": {
3317    "cursor_shape": "hollow"
3318  }
3319}
3320```
3321
3322### Terminal: Keep Selection On Copy
3323
3324- Description: Whether or not to keep the selection in the terminal after copying text.
3325- Setting: `keep_selection_on_copy`
3326- Default: `true`
3327
3328**Options**
3329
3330`boolean` values
3331
3332**Example**
3333
3334```json [settings]
3335{
3336  "terminal": {
3337    "keep_selection_on_copy": false
3338  }
3339}
3340```
3341
3342### Terminal: Env
3343
3344- 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
3345- Setting: `env`
3346- Default: `{}`
3347
3348**Example**
3349
3350```json [settings]
3351{
3352  "terminal": {
3353    "env": {
3354      "ZED": "1",
3355      "KEY": "value1:value2"
3356    }
3357  }
3358}
3359```
3360
3361### Terminal: Font Size
3362
3363- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
3364- Setting: `font_size`
3365- Default: `null`
3366
3367**Options**
3368
3369`integer` values
3370
3371```json [settings]
3372{
3373  "terminal": {
3374    "font_size": 15
3375  }
3376}
3377```
3378
3379### Terminal: Font Family
3380
3381- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
3382- Setting: `font_family`
3383- Default: `null`
3384
3385**Options**
3386
3387The name of any font family installed on the user's system
3388
3389```json [settings]
3390{
3391  "terminal": {
3392    "font_family": "Berkeley Mono"
3393  }
3394}
3395```
3396
3397### Terminal: Font Features
3398
3399- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
3400- Setting: `font_features`
3401- Default: `null`
3402- Platform: macOS and Windows.
3403
3404**Options**
3405
3406See Buffer Font Features
3407
3408```json [settings]
3409{
3410  "terminal": {
3411    "font_features": {
3412      "calt": false
3413      // See Buffer Font Features for more features
3414    }
3415  }
3416}
3417```
3418
3419### Terminal: Line Height
3420
3421- Description: Set the terminal's line height.
3422- Setting: `line_height`
3423- Default: `standard`
3424
3425**Options**
3426
34271. Use a line height that's `comfortable` for reading, 1.618.
3428
3429```json [settings]
3430{
3431  "terminal": {
3432    "line_height": "comfortable"
3433  }
3434}
3435```
3436
34372. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
3438
3439```json [settings]
3440{
3441  "terminal": {
3442    "line_height": "standard"
3443  }
3444}
3445```
3446
34473.  Use a custom line height.
3448
3449```json [settings]
3450{
3451  "terminal": {
3452    "line_height": {
3453      "custom": 2
3454    }
3455  }
3456}
3457```
3458
3459### Terminal: Minimum Contrast
3460
3461- Description: Controls the minimum contrast between foreground and background colors in the terminal. Uses the APCA (Accessible Perceptual Contrast Algorithm) for color adjustments. Set this to 0 to disable this feature.
3462- Setting: `minimum_contrast`
3463- Default: `45`
3464
3465**Options**
3466
3467`integer` values from 0 to 106. Common recommended values:
3468
3469- `0`: No contrast adjustment
3470- `45`: Minimum for large fluent text (default)
3471- `60`: Minimum for other content text
3472- `75`: Minimum for body text
3473- `90`: Preferred for body text
3474
3475```json [settings]
3476{
3477  "terminal": {
3478    "minimum_contrast": 45
3479  }
3480}
3481```
3482
3483### Terminal: Option As Meta
3484
3485- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
3486- Setting: `option_as_meta`
3487- Default: `false`
3488
3489**Options**
3490
3491`boolean` values
3492
3493```json [settings]
3494{
3495  "terminal": {
3496    "option_as_meta": true
3497  }
3498}
3499```
3500
3501### Terminal: Shell
3502
3503- Description: What shell to use when launching the terminal.
3504- Setting: `shell`
3505- Default: `system`
3506
3507**Options**
3508
35091. Use the system's default terminal configuration (usually the `/etc/passwd` file).
3510
3511```json [settings]
3512{
3513  "terminal": {
3514    "shell": "system"
3515  }
3516}
3517```
3518
35192. A program to launch:
3520
3521```json [settings]
3522{
3523  "terminal": {
3524    "shell": {
3525      "program": "sh"
3526    }
3527  }
3528}
3529```
3530
35313. A program with arguments:
3532
3533```json [settings]
3534{
3535  "terminal": {
3536    "shell": {
3537      "with_arguments": {
3538        "program": "/bin/bash",
3539        "args": ["--login"]
3540      }
3541    }
3542  }
3543}
3544```
3545
3546## Terminal: Detect Virtual Environments {#terminal-detect_venv}
3547
3548- 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.
3549- Setting: `detect_venv`
3550- Default:
3551
3552```json [settings]
3553{
3554  "terminal": {
3555    "detect_venv": {
3556      "on": {
3557        // Default directories to search for virtual environments, relative
3558        // to the current working directory. We recommend overriding this
3559        // in your project's settings, rather than globally.
3560        "directories": [".env", "env", ".venv", "venv"],
3561        // Can also be `csh`, `fish`, and `nushell`
3562        "activate_script": "default"
3563      }
3564    }
3565  }
3566}
3567```
3568
3569Disable with:
3570
3571```json [settings]
3572{
3573  "terminal": {
3574    "detect_venv": "off"
3575  }
3576}
3577```
3578
3579## Terminal: Toolbar
3580
3581- Description: Whether or not to show various elements in the terminal toolbar.
3582- Setting: `toolbar`
3583- Default:
3584
3585```json [settings]
3586{
3587  "terminal": {
3588    "toolbar": {
3589      "breadcrumbs": false
3590    }
3591  }
3592}
3593```
3594
3595**Options**
3596
3597At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
3598
3599If the terminal title is empty, the breadcrumbs won't be shown.
3600
3601The shell running in the terminal needs to be configured to emit the title.
3602
3603Example command to set the title: `echo -e "\e]2;New Title\007";`
3604
3605### Terminal: Button
3606
3607- Description: Control to show or hide the terminal button in the status bar
3608- Setting: `button`
3609- Default: `true`
3610
3611**Options**
3612
3613`boolean` values
3614
3615```json [settings]
3616{
3617  "terminal": {
3618    "button": false
3619  }
3620}
3621```
3622
3623### Terminal: Working Directory
3624
3625- Description: What working directory to use when launching the terminal.
3626- Setting: `working_directory`
3627- Default: `"current_project_directory"`
3628
3629**Options**
3630
36311. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
3632
3633```json [settings]
3634{
3635  "terminal": {
3636    "working_directory": "current_project_directory"
3637  }
3638}
3639```
3640
36412. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
3642
3643```json [settings]
3644{
3645  "terminal": {
3646    "working_directory": "first_project_directory"
3647  }
3648}
3649```
3650
36513. Always use this platform's home directory (if we can find it)
3652
3653```json [settings]
3654{
3655  "terminal": {
3656    "working_directory": "always_home"
3657  }
3658}
3659```
3660
36614. 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.
3662
3663```json [settings]
3664{
3665  "terminal": {
3666    "working_directory": {
3667      "always": {
3668        "directory": "~/zed/projects/"
3669      }
3670    }
3671  }
3672}
3673```
3674
3675## REPL
3676
3677- Description: Repl settings.
3678- Setting: `repl`
3679- Default:
3680
3681```json [settings]
3682"repl": {
3683  // Maximum number of columns to keep in REPL's scrollback buffer.
3684  // Clamped with [20, 512] range.
3685  "max_columns": 128,
3686  // Maximum number of lines to keep in REPL's scrollback buffer.
3687  // Clamped with [4, 256] range.
3688  "max_lines": 32
3689},
3690```
3691
3692## Theme
3693
3694- 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.
3695- Setting: `theme`
3696- Default: `One Dark`
3697
3698### Theme Object
3699
3700- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
3701- Setting: `theme`
3702- Default:
3703
3704```json [settings]
3705"theme": {
3706  "mode": "system",
3707  "dark": "One Dark",
3708  "light": "One Light"
3709},
3710```
3711
3712### Mode
3713
3714- Description: Specify theme mode.
3715- Setting: `mode`
3716- Default: `system`
3717
3718**Options**
3719
37201. Set the theme to dark mode
3721
3722```json [settings]
3723{
3724  "mode": "dark"
3725}
3726```
3727
37282. Set the theme to light mode
3729
3730```json [settings]
3731{
3732  "mode": "light"
3733}
3734```
3735
37363. Set the theme to system mode
3737
3738```json [settings]
3739{
3740  "mode": "system"
3741}
3742```
3743
3744### Dark
3745
3746- Description: The name of the dark Zed theme to use for the UI.
3747- Setting: `dark`
3748- Default: `One Dark`
3749
3750**Options**
3751
3752Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
3753
3754### Light
3755
3756- Description: The name of the light Zed theme to use for the UI.
3757- Setting: `light`
3758- Default: `One Light`
3759
3760**Options**
3761
3762Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
3763
3764## Title Bar
3765
3766- Description: Whether or not to show various elements in the title bar
3767- Setting: `title_bar`
3768- Default:
3769
3770```json [settings]
3771"title_bar": {
3772  "show_branch_icon": false,
3773  "show_branch_name": true,
3774  "show_project_items": true,
3775  "show_onboarding_banner": true,
3776  "show_user_picture": true,
3777  "show_sign_in": true,
3778  "show_menus": false
3779}
3780```
3781
3782**Options**
3783
3784- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
3785- `show_branch_name`: Whether to show the branch name button in the titlebar
3786- `show_project_items`: Whether to show the project host and name in the titlebar
3787- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
3788- `show_user_picture`: Whether to show user picture in the titlebar
3789- `show_sign_in`: Whether to show the sign in button in the titlebar
3790- `show_menus`: Whether to show the menus in the titlebar
3791
3792## Vim
3793
3794- Description: Whether or not to enable vim mode.
3795- Setting: `vim_mode`
3796- Default: `false`
3797
3798## When Closing With No Tabs
3799
3800- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
3801- Setting: `when_closing_with_no_tabs`
3802- Default: `"platform_default"`
3803
3804**Options**
3805
38061. Use platform default behavior:
3807
3808```json [settings]
3809{
3810  "when_closing_with_no_tabs": "platform_default"
3811}
3812```
3813
38142. Always close the window:
3815
3816```json [settings]
3817{
3818  "when_closing_with_no_tabs": "close_window"
3819}
3820```
3821
38223. Never close the window:
3823
3824```json [settings]
3825{
3826  "when_closing_with_no_tabs": "keep_window_open"
3827}
3828```
3829
3830## Project Panel
3831
3832- Description: Customize project panel
3833- Setting: `project_panel`
3834- Default:
3835
3836```json [settings]
3837{
3838  "project_panel": {
3839    "button": true,
3840    "default_width": 240,
3841    "dock": "left",
3842    "entry_spacing": "comfortable",
3843    "file_icons": true,
3844    "folder_icons": true,
3845    "git_status": true,
3846    "indent_size": 20,
3847    "auto_reveal_entries": true,
3848    "auto_fold_dirs": true,
3849    "drag_and_drop": true,
3850    "scrollbar": {
3851      "show": null
3852    },
3853    "sticky_scroll": true,
3854    "show_diagnostics": "all",
3855    "indent_guides": {
3856      "show": "always"
3857    },
3858    "hide_root": false,
3859    "hide_hidden": false,
3860    "starts_open": true
3861  }
3862}
3863```
3864
3865### Dock
3866
3867- Description: Control the position of the dock
3868- Setting: `dock`
3869- Default: `left`
3870
3871**Options**
3872
38731. Default dock position to left
3874
3875```json [settings]
3876{
3877  "dock": "left"
3878}
3879```
3880
38812. Default dock position to right
3882
3883```json [settings]
3884{
3885  "dock": "right"
3886}
3887```
3888
3889### Entry Spacing
3890
3891- Description: Spacing between worktree entries
3892- Setting: `entry_spacing`
3893- Default: `comfortable`
3894
3895**Options**
3896
38971. Comfortable entry spacing
3898
3899```json [settings]
3900{
3901  "entry_spacing": "comfortable"
3902}
3903```
3904
39052. Standard entry spacing
3906
3907```json [settings]
3908{
3909  "entry_spacing": "standard"
3910}
3911```
3912
3913### Git Status
3914
3915- Description: Indicates newly created and updated files
3916- Setting: `git_status`
3917- Default: `true`
3918
3919**Options**
3920
39211. Default enable git status
3922
3923```json [settings]
3924{
3925  "git_status": true
3926}
3927```
3928
39292. Default disable git status
3930
3931```json [settings]
3932{
3933  "git_status": false
3934}
3935```
3936
3937### Default Width
3938
3939- Description: Customize default width taken by project panel
3940- Setting: `default_width`
3941- Default: `240`
3942
3943**Options**
3944
3945`float` values
3946
3947### Auto Reveal Entries
3948
3949- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
3950- Setting: `auto_reveal_entries`
3951- Default: `true`
3952
3953**Options**
3954
39551. Enable auto reveal entries
3956
3957```json [settings]
3958{
3959  "auto_reveal_entries": true
3960}
3961```
3962
39632. Disable auto reveal entries
3964
3965```json [settings]
3966{
3967  "auto_reveal_entries": false
3968}
3969```
3970
3971### Auto Fold Dirs
3972
3973- Description: Whether to fold directories automatically when directory has only one directory inside.
3974- Setting: `auto_fold_dirs`
3975- Default: `true`
3976
3977**Options**
3978
39791. Enable auto fold dirs
3980
3981```json [settings]
3982{
3983  "auto_fold_dirs": true
3984}
3985```
3986
39872. Disable auto fold dirs
3988
3989```json [settings]
3990{
3991  "auto_fold_dirs": false
3992}
3993```
3994
3995### Indent Size
3996
3997- Description: Amount of indentation (in pixels) for nested items.
3998- Setting: `indent_size`
3999- Default: `20`
4000
4001### Indent Guides: Show
4002
4003- Description: Whether to show indent guides in the project panel.
4004- Setting: `indent_guides`
4005- Default:
4006
4007```json [settings]
4008"indent_guides": {
4009  "show": "always"
4010}
4011```
4012
4013**Options**
4014
40151. Show indent guides in the project panel
4016
4017```json [settings]
4018{
4019  "indent_guides": {
4020    "show": "always"
4021  }
4022}
4023```
4024
40252. Hide indent guides in the project panel
4026
4027```json [settings]
4028{
4029  "indent_guides": {
4030    "show": "never"
4031  }
4032}
4033```
4034
4035### Scrollbar: Show
4036
4037- 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.
4038- Setting: `scrollbar`
4039- Default:
4040
4041```json [settings]
4042"scrollbar": {
4043  "show": null
4044}
4045```
4046
4047**Options**
4048
40491. Show scrollbar in the project panel
4050
4051```json [settings]
4052{
4053  "scrollbar": {
4054    "show": "always"
4055  }
4056}
4057```
4058
40592. Hide scrollbar in the project panel
4060
4061```json [settings]
4062{
4063  "scrollbar": {
4064    "show": "never"
4065  }
4066}
4067```
4068
4069## Agent
4070
4071Visit [the Configuration page](./ai/configuration.md) under the AI section to learn more about all the agent-related settings.
4072
4073## Collaboration Panel
4074
4075- Description: Customizations for the collaboration panel.
4076- Setting: `collaboration_panel`
4077- Default:
4078
4079```json [settings]
4080{
4081  "collaboration_panel": {
4082    "button": true,
4083    "dock": "left",
4084    "default_width": 240
4085  }
4086}
4087```
4088
4089**Options**
4090
4091- `button`: Whether to show the collaboration panel button in the status bar
4092- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
4093- `default_width`: Default width of the collaboration panel
4094
4095## Debugger
4096
4097- Description: Configuration for debugger panel and settings
4098- Setting: `debugger`
4099- Default:
4100
4101```json [settings]
4102{
4103  "debugger": {
4104    "stepping_granularity": "line",
4105    "save_breakpoints": true,
4106    "dock": "bottom",
4107    "button": true
4108  }
4109}
4110```
4111
4112See the [debugger page](./debugger.md) for more information about debugging support within Zed.
4113
4114## Git Panel
4115
4116- Description: Setting to customize the behavior of the git panel.
4117- Setting: `git_panel`
4118- Default:
4119
4120```json [settings]
4121{
4122  "git_panel": {
4123    "button": true,
4124    "dock": "left",
4125    "default_width": 360,
4126    "status_style": "icon",
4127    "fallback_branch_name": "main",
4128    "sort_by_path": false,
4129    "collapse_untracked_diff": false,
4130    "scrollbar": {
4131      "show": null
4132    }
4133  }
4134}
4135```
4136
4137**Options**
4138
4139- `button`: Whether to show the git panel button in the status bar
4140- `dock`: Where to dock the git panel. Can be `left` or `right`
4141- `default_width`: Default width of the git panel
4142- `status_style`: How to display git status. Can be `label_color` or `icon`
4143- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
4144- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
4145- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
4146- `scrollbar`: When to show the scrollbar in the git panel
4147
4148## Outline Panel
4149
4150- Description: Customize outline Panel
4151- Setting: `outline_panel`
4152- Default:
4153
4154```json [settings]
4155"outline_panel": {
4156  "button": true,
4157  "default_width": 300,
4158  "dock": "left",
4159  "file_icons": true,
4160  "folder_icons": true,
4161  "git_status": true,
4162  "indent_size": 20,
4163  "auto_reveal_entries": true,
4164  "auto_fold_dirs": true,
4165  "indent_guides": {
4166    "show": "always"
4167  },
4168  "scrollbar": {
4169    "show": null
4170  }
4171}
4172```
4173
4174## Calls
4175
4176- Description: Customize behavior when participating in a call
4177- Setting: `calls`
4178- Default:
4179
4180```json [settings]
4181"calls": {
4182  // Join calls with the microphone live by default
4183  "mute_on_join": false,
4184  // Share your project when you are the first to join a channel
4185  "share_on_join": false
4186},
4187```
4188
4189## Unnecessary Code Fade
4190
4191- Description: How much to fade out unused code.
4192- Setting: `unnecessary_code_fade`
4193- Default: `0.3`
4194
4195**Options**
4196
4197Float values between `0.0` and `0.9`, where:
4198
4199- `0.0` means no fading (unused code looks the same as used code)
4200- `0.9` means maximum fading (unused code is very faint but still visible)
4201
4202**Example**
4203
4204```json [settings]
4205{
4206  "unnecessary_code_fade": 0.5
4207}
4208```
4209
4210## UI Font Family
4211
4212- Description: The name of the font to use for text in the UI.
4213- Setting: `ui_font_family`
4214- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
4215
4216**Options**
4217
4218The name of any font family installed on the system, `".ZedSans"` to use the Zed-provided default, or `".SystemUIFont"` to use the system's default UI font (on macOS and Windows).
4219
4220## UI Font Features
4221
4222- Description: The OpenType features to enable for text in the UI.
4223- Setting: `ui_font_features`
4224- Default:
4225
4226```json [settings]
4227"ui_font_features": {
4228  "calt": false
4229}
4230```
4231
4232- Platform: macOS and Windows.
4233
4234**Options**
4235
4236Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
4237
4238For example, to disable font ligatures, add the following to your settings:
4239
4240```json [settings]
4241{
4242  "ui_font_features": {
4243    "calt": false
4244  }
4245}
4246```
4247
4248You can also set other OpenType features, like setting `cv01` to `7`:
4249
4250```json [settings]
4251{
4252  "ui_font_features": {
4253    "cv01": 7
4254  }
4255}
4256```
4257
4258## UI Font Fallbacks
4259
4260- Description: The font fallbacks to use for text in the UI.
4261- Setting: `ui_font_fallbacks`
4262- Default: `null`
4263- Platform: macOS and Windows.
4264
4265**Options**
4266
4267For example, to use `Nerd Font` as a fallback, add the following to your settings:
4268
4269```json [settings]
4270{
4271  "ui_font_fallbacks": ["Nerd Font"]
4272}
4273```
4274
4275## UI Font Size
4276
4277- Description: The default font size for text in the UI.
4278- Setting: `ui_font_size`
4279- Default: `16`
4280
4281**Options**
4282
4283`integer` values from `6` to `100` pixels (inclusive)
4284
4285## UI Font Weight
4286
4287- Description: The default font weight for text in the UI.
4288- Setting: `ui_font_weight`
4289- Default: `400`
4290
4291**Options**
4292
4293`integer` values between `100` and `900`
4294
4295## An example configuration:
4296
4297```json [settings]
4298// ~/.config/zed/settings.json
4299{
4300  "theme": "cave-light",
4301  "tab_size": 2,
4302  "preferred_line_length": 80,
4303  "soft_wrap": "none",
4304
4305  "buffer_font_size": 18,
4306  "buffer_font_family": ".ZedMono",
4307
4308  "autosave": "on_focus_change",
4309  "format_on_save": "off",
4310  "vim_mode": false,
4311  "projects_online_by_default": true,
4312  "terminal": {
4313    "font_family": "FiraCode Nerd Font Mono",
4314    "blinking": "off"
4315  },
4316  "languages": {
4317    "C": {
4318      "format_on_save": "on",
4319      "formatter": "language_server",
4320      "preferred_line_length": 64,
4321      "soft_wrap": "preferred_line_length"
4322    }
4323  }
4324}
4325```