all-settings.md

   1---
   2title: All Settings
   3description: "Complete reference for all Zed settings."
   4---
   5
   6# All Settings
   7
   8This is the complete reference for all Zed settings.
   9
  10You may also want to change your [theme](../themes.md), configure your [key bindings](../key-bindings.md), set up [tasks](../tasks.md), or install [extensions](../extensions.md).
  11
  12# Settings
  13
  14The sections below document supported Zed settings.
  15
  16## Active Pane Modifiers
  17
  18- Description: Styling settings applied to the active pane.
  19- Setting: `active_pane_modifiers`
  20- Default:
  21
  22```json [settings]
  23{
  24  "active_pane_modifiers": {
  25    "border_size": 0.0,
  26    "inactive_opacity": 1.0
  27  }
  28}
  29```
  30
  31### Border size
  32
  33- Description: Size of the border surrounding the active pane. When set to 0, the active pane doesn't have any border. The border is drawn inset.
  34- Setting: `border_size`
  35- Default: `0.0`
  36
  37**Options**
  38
  39Non-negative `float` values
  40
  41### Inactive Opacity
  42
  43- Description: Opacity of inactive panels. When set to 1.0, inactive panes have the same opacity as the active pane. If set to 0, inactive pane content is not visible. Values are clamped to the [0.0, 1.0] range.
  44- Setting: `inactive_opacity`
  45- Default: `1.0`
  46
  47**Options**
  48
  49`float` values
  50
  51## Bottom Dock Layout
  52
  53- Description: Control the layout of the bottom dock, relative to the left and right docks.
  54- Setting: `bottom_dock_layout`
  55- Default: `"contained"`
  56
  57**Options**
  58
  591. Contain the bottom dock, giving the full height of the window to the left and right docks.
  60
  61```json [settings]
  62{
  63  "bottom_dock_layout": "contained"
  64}
  65```
  66
  672. Give the bottom dock the full width of the window, truncating the left and right docks.
  68
  69```json [settings]
  70{
  71  "bottom_dock_layout": "full"
  72}
  73```
  74
  753. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window.
  76
  77```json [settings]
  78{
  79  "bottom_dock_layout": "left_aligned"
  80}
  81```
  82
  834. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
  84
  85```json [settings]
  86{
  87  "bottom_dock_layout": "right_aligned"
  88}
  89```
  90
  91## Agent Font Size
  92
  93- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
  94- Setting: `agent_font_size`
  95- Default: `null`
  96
  97**Options**
  98
  99`integer` values from `6` to `100` pixels (inclusive)
 100
 101## Allow Rewrap
 102
 103- Description: Controls where the {#action editor::Rewrap} action is allowed in the current language scope
 104- Setting: `allow_rewrap`
 105- Default: `"in_comments"`
 106
 107**Options**
 108
 1091. Allow rewrap in comments only:
 110
 111```json [settings]
 112{
 113  "allow_rewrap": "in_comments"
 114}
 115```
 116
 1172. Allow rewrap in selections only:
 118
 119```json [settings]
 120{
 121  "allow_rewrap": "in_selections"
 122}
 123```
 124
 1253. Allow rewrap anywhere:
 126
 127```json [settings]
 128{
 129  "allow_rewrap": "anywhere"
 130}
 131```
 132
 133Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
 134
 135## Auto Indent
 136
 137- Description: Whether indentation should be adjusted based on context while typing. This can be specified on a per-language basis.
 138- Setting: `auto_indent`
 139- Default: `true`
 140
 141**Options**
 142
 143`boolean` values
 144
 145## Auto Indent On Paste
 146
 147- Description: Whether indentation of pasted content should be adjusted based on the context
 148- Setting: `auto_indent_on_paste`
 149- Default: `true`
 150
 151**Options**
 152
 153`boolean` values
 154
 155## Auto Install extensions
 156
 157- Description: Define extensions to install automatically or never install.
 158- Setting: `auto_install_extensions`
 159- Default: `{ "html": true }`
 160
 161**Options**
 162
 163You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](../extensions/installing-extensions.md#installation-location):
 164
 165On macOS:
 166
 167```sh
 168ls ~/Library/Application\ Support/Zed/extensions/installed/
 169```
 170
 171On Linux:
 172
 173```sh
 174ls ~/.local/share/zed/extensions/installed
 175```
 176
 177Define extensions which should be installed (`true`) or never installed (`false`).
 178
 179```json [settings]
 180{
 181  "auto_install_extensions": {
 182    "html": true,
 183    "dockerfile": true,
 184    "docker-compose": false
 185  }
 186}
 187```
 188
 189## Autosave
 190
 191- Description: When to automatically save edited buffers.
 192- Setting: `autosave`
 193- Default: `off`
 194
 195**Options**
 196
 1971. To disable autosave, set it to `off`:
 198
 199```json [settings]
 200{
 201  "autosave": "off"
 202}
 203```
 204
 2052. To autosave when focus changes, use `on_focus_change`:
 206
 207```json [settings]
 208{
 209  "autosave": "on_focus_change"
 210}
 211```
 212
 2133. To autosave when the active window changes, use `on_window_change`:
 214
 215```json [settings]
 216{
 217  "autosave": "on_window_change"
 218}
 219```
 220
 2214. To autosave after an inactivity period, use `after_delay`:
 222
 223```json [settings]
 224{
 225  "autosave": {
 226    "after_delay": {
 227      "milliseconds": 1000
 228    }
 229  }
 230}
 231```
 232
 233Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.
 234
 235## Autoscroll on Clicks
 236
 237- Description: Whether to scroll when clicking near the edge of the visible text area.
 238- Setting: `autoscroll_on_clicks`
 239- Default: `false`
 240
 241**Options**
 242
 243`boolean` values
 244
 245## Auto Signature Help
 246
 247- Description: Show method signatures in the editor when inside parentheses.
 248- Setting: `auto_signature_help`
 249- Default: `false`
 250
 251**Options**
 252
 253`boolean` values
 254
 255### Show Signature Help After Edits
 256
 257- Description: 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.
 258- Setting: `show_signature_help_after_edits`
 259- Default: `false`
 260
 261**Options**
 262
 263`boolean` values
 264
 265## Auto Update
 266
 267- Description: Whether or not to automatically check for updates.
 268- Setting: `auto_update`
 269- Default: `true`
 270
 271**Options**
 272
 273`boolean` values
 274
 275## Base Keymap
 276
 277- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
 278- Setting: `base_keymap`
 279- Default: `VSCode`
 280
 281**Options**
 282
 2831. VS Code
 284
 285```json [settings]
 286{
 287  "base_keymap": "VSCode"
 288}
 289```
 290
 2912. Atom
 292
 293```json [settings]
 294{
 295  "base_keymap": "Atom"
 296}
 297```
 298
 2993. JetBrains
 300
 301```json [settings]
 302{
 303  "base_keymap": "JetBrains"
 304}
 305```
 306
 3074. None
 308
 309```json [settings]
 310{
 311  "base_keymap": "None"
 312}
 313```
 314
 3155. Sublime Text
 316
 317```json [settings]
 318{
 319  "base_keymap": "SublimeText"
 320}
 321```
 322
 3236. TextMate
 324
 325```json [settings]
 326{
 327  "base_keymap": "TextMate"
 328}
 329```
 330
 331## Buffer Font Family
 332
 333- Description: The name of a font to use for rendering text in the editor.
 334- Setting: `buffer_font_family`
 335- Default: `.ZedMono`. This currently aliases to [Lilex](https://lilex.myrt.co).
 336
 337**Options**
 338
 339The name of any font family installed on the user's system, or `".ZedMono"`.
 340
 341## Buffer Font Features
 342
 343- Description: The OpenType features to enable for text in the editor.
 344- Setting: `buffer_font_features`
 345- Default: `null`
 346- Platform: macOS and Windows.
 347
 348**Options**
 349
 350Zed 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.
 351
 352For example, to disable font ligatures, add the following to your settings:
 353
 354```json [settings]
 355{
 356  "buffer_font_features": {
 357    "calt": false
 358  }
 359}
 360```
 361
 362You can also set other OpenType features, like setting `cv01` to `7`:
 363
 364```json [settings]
 365{
 366  "buffer_font_features": {
 367    "cv01": 7
 368  }
 369}
 370```
 371
 372## Buffer Font Fallbacks
 373
 374- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
 375- Setting: `buffer_font_fallbacks`
 376- Default: `null`
 377- Platform: macOS and Windows.
 378
 379**Options**
 380
 381For example, to use `Nerd Font` as a fallback, add the following to your settings:
 382
 383```json [settings]
 384{
 385  "buffer_font_fallbacks": ["Nerd Font"]
 386}
 387```
 388
 389## Buffer Font Size
 390
 391- Description: The default font size for text in the editor.
 392- Setting: `buffer_font_size`
 393- Default: `15`
 394
 395**Options**
 396
 397A font size from `6` to `100` pixels (inclusive)
 398
 399## Buffer Font Weight
 400
 401- Description: The default font weight for text in the editor.
 402- Setting: `buffer_font_weight`
 403- Default: `400`
 404
 405**Options**
 406
 407`integer` values between `100` and `900`
 408
 409## Buffer Line Height
 410
 411- Description: The default line height for text in the editor.
 412- Setting: `buffer_line_height`
 413- Default: `"comfortable"`
 414
 415**Options**
 416
 417`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
 418
 419## Centered Layout
 420
 421- Description: Configuration for the centered layout mode.
 422- Setting: `centered_layout`
 423- Default:
 424
 425```json [settings]
 426{
 427  "centered_layout": {
 428    "left_padding": 0.2,
 429    "right_padding": 0.2
 430  }
 431}
 432```
 433
 434**Options**
 435
 436The `left_padding` and `right_padding` options define the relative width of the
 437left and right padding of the central pane from the workspace when the centered layout mode is activated. Valid values range is from `0` to `0.4`.
 438
 439## Close on File Delete
 440
 441- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
 442- Setting: `close_on_file_delete`
 443- Default: `false`
 444
 445**Options**
 446
 447`boolean` values
 448
 449When 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.
 450
 451Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
 452
 453## Code Lens
 454
 455- Description: Whether to display code lenses from language servers above code elements. Code lenses show contextual information such as reference counts, implementations, and other metadata provided by the language server.
 456- Setting: `code_lens`
 457- Default: `off`
 458
 459**Options**
 460
 4611. `off`: Do not display code lenses.
 4622. `on`: Display code lenses from language servers above code elements.
 463
 464```json [settings]
 465{
 466  "code_lens": "on"
 467}
 468```
 469
 470## Confirm Quit
 471
 472- Description: Whether or not to prompt the user to confirm before closing the application.
 473- Setting: `confirm_quit`
 474- Default: `false`
 475
 476**Options**
 477
 478`boolean` values
 479
 480## Diagnostics Max Severity
 481
 482- Description: Which level to use to filter out diagnostics displayed in the editor
 483- Setting: `diagnostics_max_severity`
 484- Default: `null`
 485
 486**Options**
 487
 4881. Allow all diagnostics (default):
 489
 490```json [settings]
 491{
 492  "diagnostics_max_severity": "all"
 493}
 494```
 495
 4962. Show only errors:
 497
 498```json [settings]
 499{
 500  "diagnostics_max_severity": "error"
 501}
 502```
 503
 5043. Show errors and warnings:
 505
 506```json [settings]
 507{
 508  "diagnostics_max_severity": "warning"
 509}
 510```
 511
 5124. Show errors, warnings, and information:
 513
 514```json [settings]
 515{
 516  "diagnostics_max_severity": "info"
 517}
 518```
 519
 5205. Show all including hints:
 521
 522```json [settings]
 523{
 524  "diagnostics_max_severity": "hint"
 525}
 526```
 527
 528## Diff View Style
 529
 530- Description: How to display diffs in the editor.
 531- Setting: `diff_view_style`
 532- Default: `"split"`
 533
 534**Options**
 535
 536- `"unified"`: Show changes inline with added and deleted lines stacked vertically
 537- `"split"`: Display old and new versions side by side in separate panes (default)
 538
 539See [Git documentation](../git.md#diff-view-styles) for more details.
 540
 541## Disable AI
 542
 543- Description: Whether to disable all AI features in Zed
 544- Setting: `disable_ai`
 545- Default: `false`
 546
 547**Options**
 548
 549`boolean` values
 550
 551## Direnv Integration
 552
 553- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
 554  `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.
 555  It also allows for those environment variables to be used in tasks.
 556- Setting: `load_direnv`
 557- Default: `"direct"`
 558
 559**Options**
 560
 561There are three options to choose from:
 562
 5631. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 5642. `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.
 5653. `disabled`: No shell environment will be loaded automatically; direnv must be invoked manually (e.g. with `direnv exec`) to be used.
 566
 567## Double Click In Multibuffer
 568
 569- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
 570- Setting: `double_click_in_multibuffer`
 571- Default: `"select"`
 572
 573**Options**
 574
 5751. Behave as a regular buffer and select the whole word (default):
 576
 577```json [settings]
 578{
 579  "double_click_in_multibuffer": "select"
 580}
 581```
 582
 5832. Open the excerpt clicked as a new buffer in the new tab:
 584
 585```json [settings]
 586{
 587  "double_click_in_multibuffer": "open"
 588}
 589```
 590
 591For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
 592
 593## Drop Target Size
 594
 595- Description: Relative size of the drop target in the editor that will open dropped file 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.
 596- Setting: `drop_target_size`
 597- Default: `0.2`
 598
 599**Options**
 600
 601`float` values between `0` and `0.5`
 602
 603## Edit Predictions
 604
 605- Description: Settings for edit predictions.
 606- Setting: `edit_predictions`
 607- Default:
 608
 609```json [settings]
 610  "edit_predictions": {
 611    "disabled_globs": [
 612      "**/.env*",
 613      "**/*.pem",
 614      "**/*.key",
 615      "**/*.cert",
 616      "**/*.crt",
 617      "**/.dev.vars",
 618      "**/secrets.yml"
 619    ]
 620  }
 621```
 622
 623**Options**
 624
 625### Disabled Globs
 626
 627- 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.
 628- Setting: `disabled_globs`
 629- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 630
 631**Options**
 632
 633List of `string` values.
 634
 635## Edit Predictions Disabled in
 636
 637- Description: A list of language scopes in which edit predictions should be disabled.
 638- Setting: `edit_predictions_disabled_in`
 639- Default: `[]`
 640
 641**Options**
 642
 643List of `string` values
 644
 6451. Don't show edit predictions in comments:
 646
 647```json [settings]
 648{
 649  "edit_predictions_disabled_in": ["comment"]
 650}
 651```
 652
 6532. Don't show edit predictions in strings and comments:
 654
 655```json [settings]
 656{
 657  "edit_predictions_disabled_in": ["comment", "string"]
 658}
 659```
 660
 6613. Only in Go, don't show edit predictions in strings and comments:
 662
 663```json [settings]
 664{
 665  "languages": {
 666    "Go": {
 667      "edit_predictions_disabled_in": ["comment", "string"]
 668    }
 669  }
 670}
 671```
 672
 673## Current Line Highlight
 674
 675- Description: How to highlight the current line in the editor.
 676- Setting: `current_line_highlight`
 677- Default: `all`
 678
 679**Options**
 680
 6811. Don't highlight the current line:
 682
 683```json [settings]
 684{
 685  "current_line_highlight": "none"
 686}
 687```
 688
 6892. Highlight the gutter area:
 690
 691```json [settings]
 692{
 693  "current_line_highlight": "gutter"
 694}
 695```
 696
 6973. Highlight the editor area:
 698
 699```json [settings]
 700{
 701  "current_line_highlight": "line"
 702}
 703```
 704
 7054. Highlight the full line:
 706
 707```json [settings]
 708{
 709  "current_line_highlight": "all"
 710}
 711```
 712
 713## Selection Highlight
 714
 715- Description: Whether to highlight all occurrences of the selected text in an editor.
 716- Setting: `selection_highlight`
 717- Default: `true`
 718
 719## Rounded Selection
 720
 721- Description: Whether the text selection should have rounded corners.
 722- Setting: `rounded_selection`
 723- Default: `true`
 724
 725## Cursor Blink
 726
 727- Description: Whether or not the cursor blinks.
 728- Setting: `cursor_blink`
 729- Default: `true`
 730
 731**Options**
 732
 733`boolean` values
 734
 735## Cursor Shape
 736
 737- Description: Cursor shape for the default editor.
 738- Setting: `cursor_shape`
 739- Default: `bar`
 740
 741**Options**
 742
 7431. A vertical bar:
 744
 745```json [settings]
 746{
 747  "cursor_shape": "bar"
 748}
 749```
 750
 7512. A block that surrounds the following character:
 752
 753```json [settings]
 754{
 755  "cursor_shape": "block"
 756}
 757```
 758
 7593. An underline / underscore that runs along the following character:
 760
 761```json [settings]
 762{
 763  "cursor_shape": "underline"
 764}
 765```
 766
 7674. An box drawn around the following character:
 768
 769```json [settings]
 770{
 771  "cursor_shape": "hollow"
 772}
 773```
 774
 775## Gutter
 776
 777- Description: Settings for the editor gutter
 778- Setting: `gutter`
 779- Default:
 780
 781```json [settings]
 782{
 783  "gutter": {
 784    "line_numbers": true,
 785    "runnables": true,
 786    "breakpoints": true,
 787    "folds": true,
 788    "min_line_number_digits": 4
 789  }
 790}
 791```
 792
 793**Options**
 794
 795- `line_numbers`: Whether to show line numbers in the gutter
 796- `runnables`: Whether to show runnable buttons in the gutter
 797- `breakpoints`: Whether to show breakpoints in the gutter
 798- `folds`: Whether to show fold buttons in the gutter
 799- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
 800
 801## Hide Mouse
 802
 803- Description: Determines when the mouse cursor should be hidden in an editor or input box.
 804- Setting: `hide_mouse`
 805- Default: `on_typing_and_movement`
 806
 807**Options**
 808
 8091. Never hide the mouse cursor:
 810
 811```json [settings]
 812{
 813  "hide_mouse": "never"
 814}
 815```
 816
 8172. Hide only when typing:
 818
 819```json [settings]
 820{
 821  "hide_mouse": "on_typing"
 822}
 823```
 824
 8253. Hide on both typing and cursor movement:
 826
 827```json [settings]
 828{
 829  "hide_mouse": "on_typing_and_movement"
 830}
 831```
 832
 833## Snippet Sort Order
 834
 835- Description: Determines how snippets are sorted relative to other completion items.
 836- Setting: `snippet_sort_order`
 837- Default: `inline`
 838
 839**Options**
 840
 8411. Place snippets at the top of the completion list:
 842
 843```json [settings]
 844{
 845  "snippet_sort_order": "top"
 846}
 847```
 848
 8492. Place snippets normally without any preference:
 850
 851```json [settings]
 852{
 853  "snippet_sort_order": "inline"
 854}
 855```
 856
 8573. Place snippets at the bottom of the completion list:
 858
 859```json [settings]
 860{
 861  "snippet_sort_order": "bottom"
 862}
 863```
 864
 8654. Do not show snippets in the completion list at all:
 866
 867```json [settings]
 868{
 869  "snippet_sort_order": "none"
 870}
 871```
 872
 873## Editor Scrollbar
 874
 875- Description: Whether or not to show the editor scrollbar and various elements in it.
 876- Setting: `scrollbar`
 877- Default:
 878
 879```json [settings]
 880{
 881  "scrollbar": {
 882    "show": "auto",
 883    "cursors": true,
 884    "git_diff": true,
 885    "search_results": true,
 886    "selected_text": true,
 887    "selected_symbol": true,
 888    "diagnostics": "all",
 889    "axes": {
 890      "horizontal": true,
 891      "vertical": true
 892    }
 893  }
 894}
 895```
 896
 897### Show Mode
 898
 899- Description: When to show the editor scrollbar.
 900- Setting: `show`
 901- Default: `auto`
 902
 903**Options**
 904
 9051. Show the scrollbar if there's important information or follow the system's configured behavior:
 906
 907```json [settings]
 908{
 909  "scrollbar": {
 910    "show": "auto"
 911  }
 912}
 913```
 914
 9152. Match the system's configured behavior:
 916
 917```json [settings]
 918{
 919  "scrollbar": {
 920    "show": "system"
 921  }
 922}
 923```
 924
 9253. Always show the scrollbar:
 926
 927```json [settings]
 928{
 929  "scrollbar": {
 930    "show": "always"
 931  }
 932}
 933```
 934
 9354. Never show the scrollbar:
 936
 937```json [settings]
 938{
 939  "scrollbar": {
 940    "show": "never"
 941  }
 942}
 943```
 944
 945### Cursor Indicators
 946
 947- Description: Whether to show cursor positions in the scrollbar.
 948- Setting: `cursors`
 949- Default: `true`
 950
 951Cursor indicators appear as small marks on the scrollbar showing where other collaborators' cursors are positioned in the file.
 952
 953**Options**
 954
 955`boolean` values
 956
 957### Git Diff Indicators
 958
 959- Description: Whether to show git diff indicators in the scrollbar.
 960- Setting: `git_diff`
 961- Default: `true`
 962
 963Git diff indicators appear as colored marks showing lines that have been added, modified, or deleted compared to the git HEAD.
 964
 965**Options**
 966
 967`boolean` values
 968
 969### Search Results Indicators
 970
 971- Description: Whether to show buffer search results in the scrollbar.
 972- Setting: `search_results`
 973- Default: `true`
 974
 975Search result indicators appear as marks showing all locations in the file where your current search query matches.
 976
 977**Options**
 978
 979`boolean` values
 980
 981### Selected Text Indicators
 982
 983- Description: Whether to show selected text occurrences in the scrollbar.
 984- Setting: `selected_text`
 985- Default: `true`
 986
 987Selected text indicators appear as marks showing all occurrences of the currently selected text throughout the file.
 988
 989**Options**
 990
 991`boolean` values
 992
 993### Selected Symbols Indicators
 994
 995- Description: Whether to show selected symbol occurrences in the scrollbar.
 996- Setting: `selected_symbol`
 997- Default: `true`
 998
 999Selected symbol indicators appear as marks showing all occurrences of the currently selected symbol (like a function or variable name) throughout the file.
1000
1001**Options**
1002
1003`boolean` values
1004
1005### Diagnostics
1006
1007- Description: Which diagnostic indicators to show in the scrollbar.
1008- Setting: `diagnostics`
1009- Default: `all`
1010
1011Diagnostic indicators appear as colored marks showing errors, warnings, and other language server diagnostics at their corresponding line positions in the file.
1012
1013**Options**
1014
10151. Show all diagnostics:
1016
1017```json [settings]
1018{
1019  "scrollbar": {
1020    "diagnostics": "all"
1021  }
1022}
1023```
1024
10252. Do not show any diagnostics:
1026
1027```json [settings]
1028{
1029  "scrollbar": {
1030    "diagnostics": "none"
1031  }
1032}
1033```
1034
10353. Show only errors:
1036
1037```json [settings]
1038{
1039  "scrollbar": {
1040    "diagnostics": "error"
1041  }
1042}
1043```
1044
10454. Show only errors and warnings:
1046
1047```json [settings]
1048{
1049  "scrollbar": {
1050    "diagnostics": "warning"
1051  }
1052}
1053```
1054
10555. Show only errors, warnings, and information:
1056
1057```json [settings]
1058{
1059  "scrollbar": {
1060    "diagnostics": "information"
1061  }
1062}
1063```
1064
1065### Axes
1066
1067- Description: Forcefully enable or disable the scrollbar for each axis
1068- Setting: `axes`
1069- Default:
1070
1071```json [settings]
1072{
1073  "scrollbar": {
1074    "axes": {
1075      "horizontal": true,
1076      "vertical": true
1077    }
1078  }
1079}
1080```
1081
1082#### Horizontal
1083
1084- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
1085- Setting: `horizontal`
1086- Default: `true`
1087
1088**Options**
1089
1090`boolean` values
1091
1092#### Vertical
1093
1094- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
1095- Setting: `vertical`
1096- Default: `true`
1097
1098**Options**
1099
1100`boolean` values
1101
1102## Minimap
1103
1104- Description: Settings related to the editor's minimap, which provides an overview of your document.
1105- Setting: `minimap`
1106- Default:
1107
1108```json [settings]
1109{
1110  "minimap": {
1111    "show": "never",
1112    "thumb": "always",
1113    "thumb_border": "left_open",
1114    "current_line_highlight": null
1115  }
1116}
1117```
1118
1119### Show Mode
1120
1121- Description: When to show the minimap in the editor.
1122- Setting: `show`
1123- Default: `never`
1124
1125**Options**
1126
11271. Always show the minimap:
1128
1129```json [settings]
1130{
1131  "minimap": {
1132    "show": "always"
1133  }
1134}
1135```
1136
11372. Show the minimap if the editor's scrollbars are visible:
1138
1139```json [settings]
1140{
1141  "minimap": {
1142    "show": "auto"
1143  }
1144}
1145```
1146
11473. Never show the minimap:
1148
1149```json [settings]
1150{
1151  "minimap": {
1152    "show": "never"
1153  }
1154}
1155```
1156
1157### Thumb Display
1158
1159- Description: When to show the minimap thumb (the visible editor area) in the minimap.
1160- Setting: `thumb`
1161- Default: `always`
1162
1163**Options**
1164
11651. Show the minimap thumb when hovering over the minimap:
1166
1167```json [settings]
1168{
1169  "minimap": {
1170    "thumb": "hover"
1171  }
1172}
1173```
1174
11752. Always show the minimap thumb:
1176
1177```json [settings]
1178{
1179  "minimap": {
1180    "thumb": "always"
1181  }
1182}
1183```
1184
1185### Thumb Border
1186
1187- Description: How the minimap thumb border should look.
1188- Setting: `thumb_border`
1189- Default: `left_open`
1190
1191**Options**
1192
11931. Display a border on all sides of the thumb:
1194
1195```json [settings]
1196{
1197  "minimap": {
1198    "thumb_border": "full"
1199  }
1200}
1201```
1202
12032. Display a border on all sides except the left side:
1204
1205```json [settings]
1206{
1207  "minimap": {
1208    "thumb_border": "left_open"
1209  }
1210}
1211```
1212
12133. Display a border on all sides except the right side:
1214
1215```json [settings]
1216{
1217  "minimap": {
1218    "thumb_border": "right_open"
1219  }
1220}
1221```
1222
12234. Display a border only on the left side:
1224
1225```json [settings]
1226{
1227  "minimap": {
1228    "thumb_border": "left_only"
1229  }
1230}
1231```
1232
12335. Display the thumb without any border:
1234
1235```json [settings]
1236{
1237  "minimap": {
1238    "thumb_border": "none"
1239  }
1240}
1241```
1242
1243### Current Line Highlight
1244
1245- Description: How to highlight the current line in the minimap.
1246- Setting: `current_line_highlight`
1247- Default: `null`
1248
1249**Options**
1250
12511. Inherit the editor's current line highlight setting:
1252
1253```json [settings]
1254{
1255  "minimap": {
1256    "current_line_highlight": null
1257  }
1258}
1259```
1260
12612. Highlight the current line in the minimap:
1262
1263```json [settings]
1264{
1265  "minimap": {
1266    "current_line_highlight": "line"
1267  }
1268}
1269```
1270
1271or
1272
1273```json [settings]
1274{
1275  "minimap": {
1276    "current_line_highlight": "all"
1277  }
1278}
1279```
1280
12813. Do not highlight the current line in the minimap:
1282
1283```json [settings]
1284{
1285  "minimap": {
1286    "current_line_highlight": "gutter"
1287  }
1288}
1289```
1290
1291or
1292
1293```json [settings]
1294{
1295  "minimap": {
1296    "current_line_highlight": "none"
1297  }
1298}
1299```
1300
1301## Editor Tab Bar
1302
1303- Description: Settings related to the editor's tab bar.
1304- Settings: `tab_bar`
1305- Default:
1306
1307```json [settings]
1308{
1309  "tab_bar": {
1310    "show": true,
1311    "show_nav_history_buttons": true,
1312    "show_tab_bar_buttons": true
1313  }
1314}
1315```
1316
1317### Show
1318
1319- Description: Whether or not to show the tab bar in the editor.
1320- Setting: `show`
1321- Default: `true`
1322
1323**Options**
1324
1325`boolean` values
1326
1327### Navigation History Buttons
1328
1329- Description: Whether or not to show the navigation history buttons.
1330- Setting: `show_nav_history_buttons`
1331- Default: `true`
1332
1333**Options**
1334
1335`boolean` values
1336
1337### Tab Bar Buttons
1338
1339- Description: Whether or not to show the tab bar buttons.
1340- Setting: `show_tab_bar_buttons`
1341- Default: `true`
1342
1343**Options**
1344
1345`boolean` values
1346
1347## Editor Tabs
1348
1349- Description: Configuration for the editor tabs.
1350- Setting: `tabs`
1351- Default:
1352
1353```json [settings]
1354{
1355  "tabs": {
1356    "close_position": "right",
1357    "file_icons": false,
1358    "git_status": false,
1359    "activate_on_close": "history",
1360    "show_close_button": "hover",
1361    "show_diagnostics": "off"
1362  }
1363}
1364```
1365
1366### Close Position
1367
1368- Description: Where to display close button within a tab.
1369- Setting: `close_position`
1370- Default: `right`
1371
1372**Options**
1373
13741. Display the close button on the right:
1375
1376```json [settings]
1377{
1378  "tabs": {
1379    "close_position": "right"
1380  }
1381}
1382```
1383
13842. Display the close button on the left:
1385
1386```json [settings]
1387{
1388  "tabs": {
1389    "close_position": "left"
1390  }
1391}
1392```
1393
1394### File Icons
1395
1396- Description: Whether to show the file icon for a tab.
1397- Setting: `file_icons`
1398- Default: `false`
1399
1400### Git Status
1401
1402- Description: Whether or not to show Git file status in tab.
1403- Setting: `git_status`
1404- Default: `false`
1405
1406### Activate on close
1407
1408- Description: What to do after closing the current tab.
1409- Setting: `activate_on_close`
1410- Default: `history`
1411
1412**Options**
1413
14141.  Activate the tab that was open previously:
1415
1416```json [settings]
1417{
1418  "tabs": {
1419    "activate_on_close": "history"
1420  }
1421}
1422```
1423
14242. Activate the right neighbour tab if present:
1425
1426```json [settings]
1427{
1428  "tabs": {
1429    "activate_on_close": "neighbour"
1430  }
1431}
1432```
1433
14343. Activate the left neighbour tab if present:
1435
1436```json [settings]
1437{
1438  "tabs": {
1439    "activate_on_close": "left_neighbour"
1440  }
1441}
1442```
1443
1444### Show close button
1445
1446- Description: Controls the appearance behavior of the tab's close button.
1447- Setting: `show_close_button`
1448- Default: `hover`
1449
1450**Options**
1451
14521.  Show it just upon hovering the tab:
1453
1454```json [settings]
1455{
1456  "tabs": {
1457    "show_close_button": "hover"
1458  }
1459}
1460```
1461
14622. Show it persistently:
1463
1464```json [settings]
1465{
1466  "tabs": {
1467    "show_close_button": "always"
1468  }
1469}
1470```
1471
14723. Never show it, even if hovering it:
1473
1474```json [settings]
1475{
1476  "tabs": {
1477    "show_close_button": "hidden"
1478  }
1479}
1480```
1481
1482### Show Diagnostics
1483
1484- 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.
1485- Setting: `show_diagnostics`
1486- Default: `off`
1487
1488**Options**
1489
14901. Do not mark any files:
1491
1492```json [settings]
1493{
1494  "tabs": {
1495    "show_diagnostics": "off"
1496  }
1497}
1498```
1499
15002. Only mark files with errors:
1501
1502```json [settings]
1503{
1504  "tabs": {
1505    "show_diagnostics": "errors"
1506  }
1507}
1508```
1509
15103. Mark files with errors and warnings:
1511
1512```json [settings]
1513{
1514  "tabs": {
1515    "show_diagnostics": "all"
1516  }
1517}
1518```
1519
1520### Show Inline Code Actions
1521
1522- Description: Whether to show code action button at start of buffer line.
1523- Setting: `inline_code_actions`
1524- Default: `true`
1525
1526**Options**
1527
1528`boolean` values
1529
1530### Session
1531
1532- Description: Controls Zed lifecycle-related behavior.
1533- Setting: `session`
1534- Default:
1535
1536```json
1537{
1538  "session": {
1539    "restore_unsaved_buffers": true,
1540    "trust_all_worktrees": false
1541  }
1542}
1543```
1544
1545**Options**
1546
15471.  Whether or not to restore unsaved buffers on restart:
1548
1549```json [settings]
1550{
1551  "session": {
1552    "restore_unsaved_buffers": true
1553  }
1554}
1555```
1556
1557If this is true, user won't be prompted whether to save/discard dirty files when closing the application.
1558
15592. Whether or not to skip worktree and workspace trust checks:
1560
1561```json [settings]
1562{
1563  "session": {
1564    "trust_all_worktrees": false
1565  }
1566}
1567```
1568
1569When trusted, project settings are synchronized automatically, language and MCP servers are downloaded and started automatically.
1570
1571### Drag And Drop Selection
1572
1573- 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.
1574- Setting: `drag_and_drop_selection`
1575- Default:
1576
1577```json [settings]
1578{
1579  "drag_and_drop_selection": {
1580    "enabled": true,
1581    "delay": 300
1582  }
1583}
1584```
1585
1586## Editor Toolbar
1587
1588- Description: Whether or not to show various elements in the editor toolbar.
1589- Setting: `toolbar`
1590- Default:
1591
1592```json [settings]
1593{
1594  "toolbar": {
1595    "breadcrumbs": true,
1596    "quick_actions": true,
1597    "selections_menu": true,
1598    "agent_review": true,
1599    "code_actions": false
1600  }
1601}
1602```
1603
1604**Options**
1605
1606Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1607
1608## Use System Tabs
1609
1610- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
1611- Setting: `use_system_window_tabs`
1612- Default: `false`
1613
1614**Options**
1615
1616This 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.
1617
1618## Enable Language Server
1619
1620- Description: Whether or not to use language servers to provide code intelligence.
1621- Setting: `enable_language_server`
1622- Default: `true`
1623
1624**Options**
1625
1626`boolean` values
1627
1628## Ensure Final Newline On Save
1629
1630- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1631- Setting: `ensure_final_newline_on_save`
1632- Default: `true`
1633
1634**Options**
1635
1636`boolean` values
1637
1638## Expand Excerpt Lines
1639
1640- Description: The default number of lines to expand excerpts in the multibuffer by
1641- Setting: `expand_excerpt_lines`
1642- Default: `5`
1643
1644**Options**
1645
1646Positive `integer` values
1647
1648## Excerpt Context Lines
1649
1650- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1651- Setting: `excerpt_context_lines`
1652- Default: `2`
1653
1654**Options**
1655
1656Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1657
1658## Extend Comment On Newline
1659
1660- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1661- Setting: `extend_comment_on_newline`
1662- Default: `true`
1663
1664**Options**
1665
1666`boolean` values
1667
1668## Status Bar
1669
1670- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1671- Setting: `status_bar`
1672- Default:
1673
1674```json [settings]
1675{
1676  "status_bar": {
1677    "active_language_button": true,
1678    "cursor_position_button": true,
1679    "line_endings_button": false
1680  }
1681}
1682```
1683
1684There 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.
1685
1686```json
1687"status_bar": {
1688  "experimental.show": false
1689}
1690```
1691
1692## LSP
1693
1694- Description: Configuration for language servers.
1695- Setting: `lsp`
1696- Default: `null`
1697
1698**Options**
1699
1700The following settings can be overridden for specific language servers:
1701
1702- `initialization_options`
1703- `settings`
1704
1705To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1706
1707Some 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.
1708
1709For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1710
1711```json [settings]
1712{
1713  "lsp": {
1714    "rust-analyzer": {
1715      "initialization_options": {
1716        "check": {
1717          "command": "clippy" // rust-analyzer.check.command (default: "check")
1718        }
1719      }
1720    }
1721  }
1722}
1723```
1724
1725While other options may be changed at a runtime and should be placed under `settings`:
1726
1727```json [settings]
1728{
1729  "lsp": {
1730    "yaml-language-server": {
1731      "settings": {
1732        "yaml": {
1733          "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1734        }
1735      }
1736    }
1737  }
1738}
1739```
1740
1741## Global LSP Settings
1742
1743- Description: Configuration for global LSP settings that apply to all language servers
1744- Setting: `global_lsp_settings`
1745- Default:
1746
1747```json [settings]
1748{
1749  "global_lsp_settings": {
1750    "button": true,
1751    "request_timeout": 120,
1752    "notifications": {
1753      // Timeout in milliseconds for automatically dismissing language server notifications.
1754      // Set to 0 to disable auto-dismiss.
1755      "dismiss_timeout_ms": 5000
1756    }
1757  }
1758}
1759```
1760
1761**Options**
1762
1763- `button`: Whether to show the LSP status button in the status bar
1764- `request_timeout`: The maximum amount of time to wait for responses from language servers, in seconds. A value of `0` will result in no timeout being applied (causing all LSP responses to wait indefinitely until completed). Default: `120`
1765- `notifications`: Notification-related settings.
1766  - `dismiss_timeout_ms`: Timeout in milliseconds for automatically dismissing language server notifications. Set to 0 to disable auto-dismiss.
1767
1768## LSP Highlight Debounce
1769
1770- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1771- Setting: `lsp_highlight_debounce`
1772- Default: `75`
1773
1774**Options**
1775
1776`integer` values representing milliseconds
1777
1778## Features
1779
1780- Description: Features that can be globally enabled or disabled
1781- Setting: `features`
1782- Default:
1783
1784```json [settings]
1785{
1786  "edit_predictions": {
1787    "provider": "zed"
1788  }
1789}
1790```
1791
1792### Edit Prediction Provider
1793
1794- Description: Which edit prediction provider to use
1795- Setting: `edit_prediction_provider`
1796- Default: `"zed"`
1797
1798**Options**
1799
18001. Use Zeta as the edit prediction provider:
1801
1802```json [settings]
1803{
1804  "edit_predictions": {
1805    "provider": "zed"
1806  }
1807}
1808```
1809
18102. Use Copilot as the edit prediction provider:
1811
1812```json [settings]
1813{
1814  "edit_predictions": {
1815    "provider": "copilot"
1816  }
1817}
1818```
1819
18203. Turn off edit predictions across all providers
1821
1822```json [settings]
1823{
1824  "edit_predictions": {
1825    "provider": "none"
1826  }
1827}
1828```
1829
1830## Format On Save
1831
1832- Description: Whether or not to perform a buffer format before saving.
1833- Setting: `format_on_save`
1834- Default: `on`
1835
1836**Options**
1837
18381. `on`, enables format on save obeying `formatter` setting:
1839
1840```json [settings]
1841{
1842  "format_on_save": "on"
1843}
1844```
1845
18462. `off`, disables format on save:
1847
1848```json [settings]
1849{
1850  "format_on_save": "off"
1851}
1852```
1853
1854## Formatter
1855
1856- Description: How to perform a buffer format.
1857- Setting: `formatter`
1858- Default: `auto`
1859
1860**Options**
1861
18621. To use the current language server, use `"language_server"`:
1863
1864```json [settings]
1865{
1866  "formatter": "language_server"
1867}
1868```
1869
18702. 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):
1871
1872```json [settings]
1873{
1874  "formatter": {
1875    "external": {
1876      "command": "sed",
1877      "arguments": ["-e", "s/ *$//"]
1878    }
1879  }
1880}
1881```
1882
18833. 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.
1884
1885WARNING: `{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.
1886
1887```json [settings]
1888  "formatter": {
1889    "external": {
1890      "command": "prettier",
1891      "arguments": ["--stdin-filepath", "{buffer_path}"]
1892    }
1893  }
1894```
1895
18964. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1897
1898```json [settings]
1899{
1900  "formatter": [
1901    // Use ESLint's --fix:
1902    { "code_action": "source.fixAll.eslint" },
1903    // Organize imports on save:
1904    { "code_action": "source.organizeImports" }
1905  ]
1906}
1907```
1908
19095. Or to use multiple formatters consecutively, use an array of formatters:
1910
1911```json [settings]
1912{
1913  "formatter": [
1914    { "language_server": { "name": "rust-analyzer" } },
1915    {
1916      "external": {
1917        "command": "sed",
1918        "arguments": ["-e", "s/ *$//"]
1919      }
1920    }
1921  ]
1922}
1923```
1924
1925Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1926If any of the formatters fails, the subsequent ones will still be executed.
1927
19286. To disable the formatter, use `"none"`. This setting disables the configured formatter, but any actions in `code_actions_on_format` will still be executed:
1929
1930```json [settings]
1931{
1932  "formatter": "none"
1933}
1934```
1935
1936## Auto close
1937
1938- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1939- Setting: `use_autoclose`
1940- Default: `true`
1941
1942**Options**
1943
1944`boolean` values
1945
1946## Always Treat Brackets As Autoclosed
1947
1948- Description: Controls how the editor handles the autoclosed characters.
1949- Setting: `always_treat_brackets_as_autoclosed`
1950- Default: `false`
1951
1952**Options**
1953
1954`boolean` values
1955
1956**Example**
1957
1958If the setting is set to `true`:
1959
19601. Enter in the editor: `)))`
19612. Move the cursor to the start: `^)))`
19623. Enter again: `)))`
1963
1964The result is still `)))` and not `))))))`, which is what it would be by default.
1965
1966## File Scan Exclusions
1967
1968- Setting: `file_scan_exclusions`
1969- 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`.
1970- Default:
1971
1972```json [settings]
1973{
1974  "file_scan_exclusions": [
1975    "**/.git",
1976    "**/.svn",
1977    "**/.hg",
1978    "**/.jj",
1979    "**/CVS",
1980    "**/.DS_Store",
1981    "**/Thumbs.db",
1982    "**/.classpath",
1983    "**/.settings"
1984  ]
1985}
1986```
1987
1988Note, 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.
1989
1990## File Scan Inclusions
1991
1992- Setting: `file_scan_inclusions`
1993- 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.
1994- Default:
1995
1996```json [settings]
1997{
1998  "file_scan_inclusions": [".env*"]
1999}
2000```
2001
2002## File Types
2003
2004- Setting: `file_types`
2005- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
2006- Default:
2007
2008```json [settings]
2009{
2010  "file_types": {
2011    "JSONC": [
2012      "**/.zed/**/*.json",
2013      "**/zed/**/*.json",
2014      "**/Zed/**/*.json",
2015      "**/.vscode/**/*.json"
2016    ],
2017    "Shell Script": [".env.*"]
2018  }
2019}
2020```
2021
2022**Examples**
2023
2024To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
2025
2026```json [settings]
2027{
2028  "file_types": {
2029    "C++": ["c"],
2030    "TOML": ["MyLockFile"],
2031    "Dockerfile": ["Dockerfile*"]
2032  }
2033}
2034```
2035
2036## Diagnostics
2037
2038- Description: Configuration for diagnostics-related features.
2039- Setting: `diagnostics`
2040- Default:
2041
2042```json [settings]
2043{
2044  "diagnostics": {
2045    "include_warnings": true,
2046    "inline": {
2047      "enabled": false
2048    }
2049  }
2050}
2051```
2052
2053### Inline Diagnostics
2054
2055- Description: Whether or not to show diagnostics information inline.
2056- Setting: `inline`
2057- Default:
2058
2059```json [settings]
2060{
2061  "diagnostics": {
2062    "inline": {
2063      "enabled": false,
2064      "update_debounce_ms": 150,
2065      "padding": 4,
2066      "min_column": 0,
2067      "max_severity": null
2068    }
2069  }
2070}
2071```
2072
2073**Options**
2074
20751. Enable inline diagnostics.
2076
2077```json [settings]
2078{
2079  "diagnostics": {
2080    "inline": {
2081      "enabled": true
2082    }
2083  }
2084}
2085```
2086
20872. Delay diagnostic updates until some time after the last diagnostic update.
2088
2089```json [settings]
2090{
2091  "diagnostics": {
2092    "inline": {
2093      "enabled": true,
2094      "update_debounce_ms": 150
2095    }
2096  }
2097}
2098```
2099
21003. Set padding between the end of the source line and the start of the diagnostic.
2101
2102```json [settings]
2103{
2104  "diagnostics": {
2105    "inline": {
2106      "enabled": true,
2107      "padding": 4
2108    }
2109  }
2110}
2111```
2112
21134. Horizontally align inline diagnostics at the given column.
2114
2115```json [settings]
2116{
2117  "diagnostics": {
2118    "inline": {
2119      "enabled": true,
2120      "min_column": 80
2121    }
2122  }
2123}
2124```
2125
21265. Show only warning and error diagnostics.
2127
2128```json [settings]
2129{
2130  "diagnostics": {
2131    "inline": {
2132      "enabled": true,
2133      "max_severity": "warning"
2134    }
2135  }
2136}
2137```
2138
2139## Git
2140
2141- Description: Configuration for git-related features.
2142- Setting: `git`
2143- Default:
2144
2145```json [settings]
2146{
2147  "git": {
2148    "git_gutter": "tracked_files",
2149    "inline_blame": {
2150      "enabled": true
2151    },
2152    "branch_picker": {
2153      "show_author_name": true
2154    },
2155    "hunk_style": "staged_hollow"
2156  }
2157}
2158```
2159
2160### Git Gutter
2161
2162- Description: Whether or not to show the git gutter.
2163- Setting: `git_gutter`
2164- Default: `tracked_files`
2165
2166**Options**
2167
21681. Show git gutter in tracked files
2169
2170```json [settings]
2171{
2172  "git": {
2173    "git_gutter": "tracked_files"
2174  }
2175}
2176```
2177
21782. Hide git gutter
2179
2180```json [settings]
2181{
2182  "git": {
2183    "git_gutter": "hide"
2184  }
2185}
2186```
2187
2188### Gutter Debounce
2189
2190- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
2191- Setting: `gutter_debounce`
2192- Default: `null`
2193
2194**Options**
2195
2196`integer` values representing milliseconds
2197
2198Example:
2199
2200```json [settings]
2201{
2202  "git": {
2203    "gutter_debounce": 100
2204  }
2205}
2206```
2207
2208### Inline Git Blame
2209
2210- Description: Whether or not to show git blame information inline, on the currently focused line.
2211- Setting: `inline_blame`
2212- Default:
2213
2214```json [settings]
2215{
2216  "git": {
2217    "inline_blame": {
2218      "enabled": true
2219    }
2220  }
2221}
2222```
2223
2224**Options**
2225
22261. Disable inline git blame:
2227
2228```json [settings]
2229{
2230  "git": {
2231    "inline_blame": {
2232      "enabled": false
2233    }
2234  }
2235}
2236```
2237
22382. Only show inline git blame after a delay (that starts after cursor stops moving):
2239
2240```json [settings]
2241{
2242  "git": {
2243    "inline_blame": {
2244      "delay_ms": 500
2245    }
2246  }
2247}
2248```
2249
22503. Show a commit summary next to the commit date and author:
2251
2252```json [settings]
2253{
2254  "git": {
2255    "inline_blame": {
2256      "show_commit_summary": true
2257    }
2258  }
2259}
2260```
2261
22624. Use this as the minimum column at which to display inline blame information:
2263
2264```json [settings]
2265{
2266  "git": {
2267    "inline_blame": {
2268      "min_column": 80
2269    }
2270  }
2271}
2272```
2273
22745. Set the padding between the end of the line and the inline blame hint, in ems:
2275
2276```json [settings]
2277{
2278  "git": {
2279    "inline_blame": {
2280      "padding": 10
2281    }
2282  }
2283}
2284```
2285
2286### Branch Picker
2287
2288- Description: Configuration related to the branch picker.
2289- Setting: `branch_picker`
2290- Default:
2291
2292```json [settings]
2293{
2294  "git": {
2295    "branch_picker": {
2296      "show_author_name": false
2297    }
2298  }
2299}
2300```
2301
2302**Options**
2303
23041. Show the author name in the branch picker:
2305
2306```json [settings]
2307{
2308  "git": {
2309    "branch_picker": {
2310      "show_author_name": true
2311    }
2312  }
2313}
2314```
2315
2316### Hunk Style
2317
2318- Description: What styling we should use for the diff hunks.
2319- Setting: `hunk_style`
2320- Default:
2321
2322```json [settings]
2323{
2324  "git": {
2325    "hunk_style": "staged_hollow"
2326  }
2327}
2328```
2329
2330**Options**
2331
23321. Show the staged hunks faded out and with a border:
2333
2334```json [settings]
2335{
2336  "git": {
2337    "hunk_style": "staged_hollow"
2338  }
2339}
2340```
2341
23422. Show unstaged hunks faded out and with a border:
2343
2344```json [settings]
2345{
2346  "git": {
2347    "hunk_style": "unstaged_hollow"
2348  }
2349}
2350```
2351
2352## Go to Definition Fallback
2353
2354- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2355- Setting: `go_to_definition_fallback`
2356- Default: `"find_all_references"`
2357
2358**Options**
2359
23601. Do nothing:
2361
2362```json [settings]
2363{
2364  "go_to_definition_fallback": "none"
2365}
2366```
2367
23682. Find references for the same symbol (default):
2369
2370```json [settings]
2371{
2372  "go_to_definition_fallback": "find_all_references"
2373}
2374```
2375
2376## Hard Tabs
2377
2378- Description: Whether to indent lines using tab characters or multiple spaces.
2379- Setting: `hard_tabs`
2380- Default: `false`
2381
2382**Options**
2383
2384`boolean` values
2385
2386## Helix Mode
2387
2388- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](../helix.md) for more details.
2389- Setting: `helix_mode`
2390- Default: `false`
2391
2392**Options**
2393
2394`boolean` values
2395
2396## Indent Guides
2397
2398- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2399- Setting: `indent_guides`
2400- Default:
2401
2402```json [settings]
2403{
2404  "indent_guides": {
2405    "enabled": true,
2406    "line_width": 1,
2407    "active_line_width": 1,
2408    "coloring": "fixed",
2409    "background_coloring": "disabled"
2410  }
2411}
2412```
2413
2414**Options**
2415
24161. Disable indent guides
2417
2418```json [settings]
2419{
2420  "indent_guides": {
2421    "enabled": false
2422  }
2423}
2424```
2425
24262. Enable indent guides for a specific language.
2427
2428```json [settings]
2429{
2430  "languages": {
2431    "Python": {
2432      "indent_guides": {
2433        "enabled": true
2434      }
2435    }
2436  }
2437}
2438```
2439
24403. Enable indent aware coloring ("rainbow indentation").
2441   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.
2442
2443```json [settings]
2444{
2445  "indent_guides": {
2446    "enabled": true,
2447    "coloring": "indent_aware"
2448  }
2449}
2450```
2451
24524. Enable indent aware background coloring ("rainbow indentation").
2453   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.
2454
2455```json [settings]
2456{
2457  "indent_guides": {
2458    "enabled": true,
2459    "coloring": "indent_aware",
2460    "background_coloring": "indent_aware"
2461  }
2462}
2463```
2464
2465## Hover Popover Enabled
2466
2467- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2468- Setting: `hover_popover_enabled`
2469- Default: `true`
2470
2471**Options**
2472
2473`boolean` values
2474
2475## Hover Popover Delay
2476
2477- Description: Time to wait in milliseconds before showing the informational hover box. This delay also applies to auto signature help when `auto_signature_help` is enabled.
2478- Setting: `hover_popover_delay`
2479- Default: `300`
2480
2481**Options**
2482
2483`integer` values representing milliseconds
2484
2485## Icon Theme
2486
2487- 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.
2488- Setting: `icon_theme`
2489- Default: `Zed (Default)`
2490
2491### Icon Theme Object
2492
2493- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2494- Setting: `icon_theme`
2495- Default:
2496
2497```json [settings]
2498{
2499  "icon_theme": {
2500    "mode": "system",
2501    "dark": "Zed (Default)",
2502    "light": "Zed (Default)"
2503  }
2504}
2505```
2506
2507### Mode
2508
2509- Description: Specify the icon theme mode.
2510- Setting: `mode`
2511- Default: `system`
2512
2513**Options**
2514
25151. Set the icon theme to dark mode
2516
2517```json [settings]
2518{
2519  "icon_theme": {
2520    "mode": "dark",
2521    "dark": "Zed (Default)",
2522    "light": "Zed (Default)"
2523  }
2524}
2525```
2526
25272. Set the icon theme to light mode
2528
2529```json [settings]
2530{
2531  "icon_theme": {
2532    "mode": "light",
2533    "dark": "Zed (Default)",
2534    "light": "Zed (Default)"
2535  }
2536}
2537```
2538
25393. Set the icon theme to system mode
2540
2541```json [settings]
2542{
2543  "icon_theme": {
2544    "mode": "system",
2545    "dark": "Zed (Default)",
2546    "light": "Zed (Default)"
2547  }
2548}
2549```
2550
2551### Dark
2552
2553- Description: The name of the dark icon theme.
2554- Setting: `dark`
2555- Default: `Zed (Default)`
2556
2557**Options**
2558
2559Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2560
2561### Light
2562
2563- Description: The name of the light icon theme.
2564- Setting: `light`
2565- Default: `Zed (Default)`
2566
2567**Options**
2568
2569Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2570
2571## Image Viewer
2572
2573- Description: Settings for image viewer functionality
2574- Setting: `image_viewer`
2575- Default:
2576
2577```json [settings]
2578{
2579  "image_viewer": {
2580    "unit": "binary"
2581  }
2582}
2583```
2584
2585**Options**
2586
2587### Unit
2588
2589- Description: The unit for image file sizes
2590- Setting: `unit`
2591- Default: `"binary"`
2592
2593**Options**
2594
25951. Use binary units (KiB, MiB):
2596
2597```json [settings]
2598{
2599  "image_viewer": {
2600    "unit": "binary"
2601  }
2602}
2603```
2604
26052. Use decimal units (KB, MB):
2606
2607```json [settings]
2608{
2609  "image_viewer": {
2610    "unit": "decimal"
2611  }
2612}
2613```
2614
2615## Inlay hints
2616
2617- Description: Configuration for displaying extra text with hints in the editor.
2618- Setting: `inlay_hints`
2619- Default:
2620
2621```json [settings]
2622{
2623  "inlay_hints": {
2624    "enabled": false,
2625    "show_type_hints": true,
2626    "show_parameter_hints": true,
2627    "show_other_hints": true,
2628    "show_background": false,
2629    "edit_debounce_ms": 700,
2630    "scroll_debounce_ms": 50,
2631    "toggle_on_modifiers_press": null
2632  }
2633}
2634```
2635
2636**Options**
2637
2638Inlay hints querying consists of two parts: editor (client) and LSP server.
2639With 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.
2640At 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.
2641
2642The following languages have inlay hints preconfigured by Zed:
2643
2644- [Go](https://docs.zed.dev/languages/go)
2645- [Rust](https://docs.zed.dev/languages/rust)
2646- [Svelte](https://docs.zed.dev/languages/svelte)
2647- [TypeScript](https://docs.zed.dev/languages/typescript)
2648
2649Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2650
2651Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2652Settings-related hint updates are not debounced.
2653
2654All possible config values for `toggle_on_modifiers_press` are:
2655
2656```json [settings]
2657{
2658  "inlay_hints": {
2659    "toggle_on_modifiers_press": {
2660      "control": true,
2661      "shift": true,
2662      "alt": true,
2663      "platform": true,
2664      "function": true
2665    }
2666  }
2667}
2668```
2669
2670Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2671
2672## Journal
2673
2674- Description: Configuration for the journal.
2675- Setting: `journal`
2676- Default:
2677
2678```json [settings]
2679{
2680  "journal": {
2681    "path": "~",
2682    "hour_format": "hour12"
2683  }
2684}
2685```
2686
2687### Path
2688
2689- Description: The path of the directory where journal entries are stored. If an invalid path is specified, the journal will fall back to using `~` (the home directory).
2690- Setting: `path`
2691- Default: `~`
2692
2693**Options**
2694
2695`string` values
2696
2697### Hour Format
2698
2699- Description: The format to use for displaying hours in the journal.
2700- Setting: `hour_format`
2701- Default: `hour12`
2702
2703**Options**
2704
27051. 12-hour format:
2706
2707```json [settings]
2708{
2709  "journal": {
2710    "hour_format": "hour12"
2711  }
2712}
2713```
2714
27152. 24-hour format:
2716
2717```json [settings]
2718{
2719  "journal": {
2720    "hour_format": "hour24"
2721  }
2722}
2723```
2724
2725## JSX Tag Auto Close
2726
2727- Description: Whether to automatically close JSX tags
2728- Setting: `jsx_tag_auto_close`
2729- Default:
2730
2731```json [settings]
2732{
2733  "jsx_tag_auto_close": {
2734    "enabled": true
2735  }
2736}
2737```
2738
2739**Options**
2740
2741- `enabled`: Whether to enable automatic JSX tag closing
2742
2743## Languages
2744
2745- Description: Configuration for specific languages.
2746- Setting: `languages`
2747- Default: `null`
2748
2749**Options**
2750
2751To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2752
2753```json [settings]
2754{
2755  "languages": {
2756    "C": {
2757      "format_on_save": "off",
2758      "preferred_line_length": 64,
2759      "soft_wrap": "preferred_line_length"
2760    },
2761    "JSON": {
2762      "tab_size": 4
2763    }
2764  }
2765}
2766```
2767
2768The following settings can be overridden for each specific language:
2769
2770- [`enable_language_server`](#enable-language-server)
2771- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2772- [`format_on_save`](#format-on-save)
2773- [`formatter`](#formatter)
2774- [`hard_tabs`](#hard-tabs)
2775- [`preferred_line_length`](#preferred-line-length)
2776- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2777- [`semantic_tokens`](#semantic-tokens)
2778- [`show_edit_predictions`](#show-edit-predictions)
2779- [`show_whitespaces`](#show-whitespaces)
2780- [`whitespace_map`](#whitespace-map)
2781- [`soft_wrap`](#soft-wrap)
2782- [`tab_size`](#tab-size)
2783- [`use_autoclose`](#use-autoclose)
2784- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2785
2786These values take in the same options as the root-level settings with the same name.
2787
2788### Document Symbols
2789
2790- Description: Controls the source of document symbols used for outlines and breadcrumbs.
2791- Setting: `document_symbols`
2792- Default: `off`
2793
2794**Options**
2795
2796- `"off"`: Use tree-sitter queries to compute document symbols (default)
2797- `"on"`: Use the language server's `textDocument/documentSymbol` LSP response. When enabled, tree-sitter is not used for document symbols
2798
2799LSP document symbols can provide more accurate symbols for complex language features (e.g., generic types, macros, decorators) that tree-sitter may not handle well. Use this when your language server provides better symbol information than the tree-sitter grammar.
2800
2801Example:
2802
2803```json [settings]
2804{
2805  "languages": {
2806    "TypeScript": {
2807      "document_symbols": "on"
2808    }
2809  }
2810}
2811```
2812
2813## Language Models
2814
2815- Description: Configuration for language model providers
2816- Setting: `language_models`
2817- Default:
2818
2819```json [settings]
2820{
2821  "language_models": {
2822    "anthropic": {
2823      "api_url": "https://api.anthropic.com"
2824    },
2825    "google": {
2826      "api_url": "https://generativelanguage.googleapis.com"
2827    },
2828    "ollama": {
2829      "api_url": "http://localhost:11434"
2830    },
2831    "openai": {
2832      "api_url": "https://api.openai.com/v1"
2833    }
2834  }
2835}
2836```
2837
2838**Options**
2839
2840Configuration for various AI model providers including API URLs and authentication settings.
2841
2842## Line Indicator Format
2843
2844- Description: Format for line indicator in the status bar
2845- Setting: `line_indicator_format`
2846- Default: `"short"`
2847
2848**Options**
2849
28501. Short format:
2851
2852```json [settings]
2853{
2854  "line_indicator_format": "short"
2855}
2856```
2857
28582. Long format:
2859
2860```json [settings]
2861{
2862  "line_indicator_format": "long"
2863}
2864```
2865
2866## Linked Edits
2867
2868- 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.
2869- Setting: `linked_edits`
2870- Default: `true`
2871
2872**Options**
2873
2874`boolean` values
2875
2876## LSP Document Colors
2877
2878- Description: How to render LSP `textDocument/documentColor` colors in the editor
2879- Setting: `lsp_document_colors`
2880- Default: `inlay`
2881
2882**Options**
2883
28841. `inlay`: Render document colors as inlay hints near the color text.
28852. `background`: Draw a background behind the color text.
28863. `border`: Draw a border around the color text.
28874. `none`: Do not query and render document colors.
2888
2889## Max Tabs
2890
2891- Description: Maximum number of tabs to show in the tab bar
2892- Setting: `max_tabs`
2893- Default: `null`
2894
2895**Options**
2896
2897Positive `integer` values or `null` for unlimited tabs
2898
2899## Middle Click Paste (Linux only)
2900
2901- Description: Enable middle-click paste on Linux
2902- Setting: `middle_click_paste`
2903- Default: `true`
2904
2905**Options**
2906
2907`boolean` values
2908
2909## Multi Cursor Modifier
2910
2911- 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.
2912- Setting: `multi_cursor_modifier`
2913- Default: `alt`
2914
2915**Options**
2916
29171. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2918
2919```json [settings]
2920{
2921  "multi_cursor_modifier": "alt"
2922}
2923```
2924
29252. Maps `Control` on Linux and Windows and to `Command` on macOS:
2926
2927```json [settings]
2928{
2929  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2930}
2931```
2932
2933## Node
2934
2935- Description: Configuration for Node.js integration
2936- Setting: `node`
2937- Default:
2938
2939```json [settings]
2940{
2941  "node": {
2942    "ignore_system_version": false,
2943    "path": null,
2944    "npm_path": null
2945  }
2946}
2947```
2948
2949**Options**
2950
2951- `ignore_system_version`: Whether to ignore the system Node.js version
2952- `path`: Custom path to Node.js binary
2953- `npm_path`: Custom path to npm binary
2954
2955## Network Proxy
2956
2957- Description: Configure a network proxy for Zed.
2958- Setting: `proxy`
2959- Default: `null`
2960
2961**Options**
2962
2963The proxy setting must contain a URL to the proxy.
2964
2965The following URI schemes are supported:
2966
2967- `http`
2968- `https`
2969- `socks4` - SOCKS4 proxy with local DNS
2970- `socks4a` - SOCKS4 proxy with remote DNS
2971- `socks5` - SOCKS5 proxy with local DNS
2972- `socks5h` - SOCKS5 proxy with remote DNS
2973
2974`http` will be used when no scheme is specified.
2975
2976By 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`.
2977
2978For example, to set an `http` proxy, add the following to your settings:
2979
2980```json [settings]
2981{
2982  "proxy": "http://127.0.0.1:10809"
2983}
2984```
2985
2986Or to set a `socks5` proxy:
2987
2988```json [settings]
2989{
2990  "proxy": "socks5h://localhost:10808"
2991}
2992```
2993
2994If 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.
2995
2996## On Last Window Closed
2997
2998- Description: What to do when the last window is closed
2999- Setting: `on_last_window_closed`
3000- Default: `"platform_default"`
3001
3002**Options**
3003
30041. Use platform default behavior:
3005
3006```json [settings]
3007{
3008  "on_last_window_closed": "platform_default"
3009}
3010```
3011
30122. Always quit the application:
3013
3014```json [settings]
3015{
3016  "on_last_window_closed": "quit_app"
3017}
3018```
3019
3020## Profiles
3021
3022- Description: Configuration profiles that can be temporarily applied on top of existing settings or Zed's defaults.
3023- Setting: `profiles`
3024- Default: `{}`
3025
3026**Options**
3027
3028Each profile is an object with the following optional fields:
3029
3030- `base`: What settings to start from before applying the profile's overrides.
3031  - `"user"` (default): Apply on top of your current user settings.
3032  - `"default"`: Apply on top of Zed's default settings, ignoring user customizations.
3033- `settings`: The settings overrides for this profile.
3034
3035Examples:
3036
3037```json [settings]
3038{
3039  "profiles": {
3040    "Presentation": {
3041      "settings": {
3042        "buffer_font_size": 20,
3043        "ui_font_size": 18,
3044        "theme": "One Light"
3045      }
3046    },
3047    "Clean Slate": {
3048      "base": "default",
3049      "settings": {
3050        "theme": "Ayu Dark"
3051      }
3052    }
3053  }
3054}
3055```
3056
3057## Preview tabs
3058
3059- Description:
3060  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. \
3061   There are several ways to convert a preview tab into a regular tab:
3062
3063  - Double-clicking on the file
3064  - Double-clicking on the tab header
3065  - Using the {#action project_panel::OpenPermanent} action
3066  - Editing the file
3067  - Dragging the file to a different pane
3068
3069- Setting: `preview_tabs`
3070- Default:
3071
3072```json [settings]
3073{
3074  "preview_tabs": {
3075    "enabled": true,
3076    "enable_preview_from_project_panel": true,
3077    "enable_preview_from_file_finder": false,
3078    "enable_preview_from_multibuffer": true,
3079    "enable_preview_multibuffer_from_code_navigation": false,
3080    "enable_preview_file_from_code_navigation": true,
3081    "enable_keep_preview_on_code_navigation": false
3082  }
3083}
3084```
3085
3086### Enable preview from project panel
3087
3088- Description: Determines whether to open files in preview mode when opened from the project panel with a single click.
3089- Setting: `enable_preview_from_project_panel`
3090- Default: `true`
3091
3092**Options**
3093
3094`boolean` values
3095
3096### Enable preview from file finder
3097
3098- Description: Determines whether to open files in preview mode when selected from the file finder.
3099- Setting: `enable_preview_from_file_finder`
3100- Default: `false`
3101
3102**Options**
3103
3104`boolean` values
3105
3106### Enable preview from multibuffer
3107
3108- Description: Determines whether to open files in preview mode when opened from a multibuffer.
3109- Setting: `enable_preview_from_multibuffer`
3110- Default: `true`
3111
3112**Options**
3113
3114`boolean` values
3115
3116### Enable preview multibuffer from code navigation
3117
3118- Description: Determines whether to open tabs in preview mode when code navigation is used to open a multibuffer.
3119- Setting: `enable_preview_multibuffer_from_code_navigation`
3120- Default: `false`
3121
3122**Options**
3123
3124`boolean` values
3125
3126### Enable preview file from code navigation
3127
3128- Description: Determines whether to open tabs in preview mode when code navigation is used to open a single file.
3129- Setting: `enable_preview_file_from_code_navigation`
3130- Default: `true`
3131
3132**Options**
3133
3134`boolean` values
3135
3136### Enable keep preview on code navigation
3137
3138- Description: Determines whether to keep tabs in preview mode when code navigation is used to navigate away from them. If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.
3139- Setting: `enable_keep_preview_on_code_navigation`
3140- Default: `false`
3141
3142**Options**
3143
3144`boolean` values
3145
3146## File Finder
3147
3148### File Icons
3149
3150- Description: Whether to show file icons in the file finder.
3151- Setting: `file_icons`
3152- Default: `true`
3153
3154### Modal Max Width
3155
3156- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
3157- Setting: `modal_max_width`
3158- Default: `small`
3159
3160### Skip Focus For Active In Search
3161
3162- Description: Determines whether the file finder should skip focus for the active file in search results.
3163- Setting: `skip_focus_for_active_in_search`
3164- Default: `true`
3165
3166## Pane Split Direction Horizontal
3167
3168- Description: The direction that you want to split panes horizontally
3169- Setting: `pane_split_direction_horizontal`
3170- Default: `"up"`
3171
3172**Options**
3173
31741. Split upward:
3175
3176```json [settings]
3177{
3178  "pane_split_direction_horizontal": "up"
3179}
3180```
3181
31822. Split downward:
3183
3184```json [settings]
3185{
3186  "pane_split_direction_horizontal": "down"
3187}
3188```
3189
3190## Pane Split Direction Vertical
3191
3192- Description: The direction that you want to split panes vertically
3193- Setting: `pane_split_direction_vertical`
3194- Default: `"left"`
3195
3196**Options**
3197
31981. Split to the left:
3199
3200```json [settings]
3201{
3202  "pane_split_direction_vertical": "left"
3203}
3204```
3205
32062. Split to the right:
3207
3208```json [settings]
3209{
3210  "pane_split_direction_vertical": "right"
3211}
3212```
3213
3214## Preferred Line Length
3215
3216- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
3217- Setting: `preferred_line_length`
3218- Default: `80`
3219
3220**Options**
3221
3222`integer` values
3223
3224## Private Files
3225
3226- Description: Globs to match against file paths to determine if a file is private
3227- Setting: `private_files`
3228- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
3229
3230**Options**
3231
3232List of `string` glob patterns
3233
3234## Projects Online By Default
3235
3236- Description: Whether or not to show the online projects view by default.
3237- Setting: `projects_online_by_default`
3238- Default: `true`
3239
3240**Options**
3241
3242`boolean` values
3243
3244## Read SSH Config
3245
3246- Description: Whether to read SSH configuration files
3247- Setting: `read_ssh_config`
3248- Default: `true`
3249
3250**Options**
3251
3252`boolean` values
3253
3254## Redact Private Values
3255
3256- Description: Hide the values of variables from visual display in private files
3257- Setting: `redact_private_values`
3258- Default: `false`
3259
3260**Options**
3261
3262`boolean` values
3263
3264## Relative Line Numbers
3265
3266- Description: Whether to show relative line numbers in the gutter
3267- Setting: `relative_line_numbers`
3268- Default: `"disabled"`
3269
3270**Options**
3271
32721. Show relative line numbers in the gutter whilst counting wrapped lines as one line:
3273
3274```json [settings]
3275{
3276  "relative_line_numbers": "enabled"
3277}
3278```
3279
32802. Show relative line numbers in the gutter, including wrapped lines in the counting:
3281
3282```json [settings]
3283{
3284  "relative_line_numbers": "wrapped"
3285}
3286```
3287
32882. Do not use relative line numbers:
3289
3290```json [settings]
3291{
3292  "relative_line_numbers": "disabled"
3293}
3294```
3295
3296## Remove Trailing Whitespace On Save
3297
3298- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
3299- Setting: `remove_trailing_whitespace_on_save`
3300- Default: `true`
3301
3302**Options**
3303
3304`boolean` values
3305
3306## Resize All Panels In Dock
3307
3308- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
3309- Setting: `resize_all_panels_in_dock`
3310- Default: `["left"]`
3311
3312**Options**
3313
3314List of strings containing any combination of:
3315
3316- `"left"`: Resize left dock panels together
3317- `"right"`: Resize right dock panels together
3318- `"bottom"`: Resize bottom dock panels together
3319
3320## Restore on File Reopen
3321
3322- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
3323- Setting: `restore_on_file_reopen`
3324- Default: `true`
3325
3326**Options**
3327
3328`boolean` values
3329
3330## Restore on Startup
3331
3332- Description: Controls session restoration on startup.
3333- Setting: `restore_on_startup`
3334- Default: `last_session`
3335
3336**Options**
3337
33381. Restore all workspaces that were open when quitting Zed:
3339
3340```json [settings]
3341{
3342  "restore_on_startup": "last_session"
3343}
3344```
3345
33462. Restore the workspace that was closed last:
3347
3348```json [settings]
3349{
3350  "restore_on_startup": "last_workspace"
3351}
3352```
3353
33543. Always start with an empty editor:
3355
3356```json [settings]
3357{
3358  "restore_on_startup": "empty_tab"
3359}
3360```
3361
33624. Always start with the welcome launchpad:
3363
3364```json [settings]
3365{
3366  "restore_on_startup": "launchpad"
3367}
3368```
3369
3370## Scroll Beyond Last Line
3371
3372- Description: Whether the editor will scroll beyond the last line
3373- Setting: `scroll_beyond_last_line`
3374- Default: `"one_page"`
3375
3376**Options**
3377
33781. Scroll one page beyond the last line by one page:
3379
3380```json [settings]
3381{
3382  "scroll_beyond_last_line": "one_page"
3383}
3384```
3385
33862. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3387
3388```json [settings]
3389{
3390  "scroll_beyond_last_line": "vertical_scroll_margin"
3391}
3392```
3393
33943. The editor will not scroll beyond the last line:
3395
3396```json [settings]
3397{
3398  "scroll_beyond_last_line": "off"
3399}
3400```
3401
3402**Options**
3403
3404`boolean` values
3405
3406## Scroll Sensitivity
3407
3408- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3409- Setting: `scroll_sensitivity`
3410- Default: `1.0`
3411
3412**Options**
3413
3414Positive `float` values
3415
3416### Fast Scroll Sensitivity
3417
3418- 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.
3419- Setting: `fast_scroll_sensitivity`
3420- Default: `4.0`
3421
3422**Options**
3423
3424Positive `float` values
3425
3426### Horizontal Scroll Margin
3427
3428- Description: The number of characters to keep on either side when scrolling with the mouse
3429- Setting: `horizontal_scroll_margin`
3430- Default: `5`
3431
3432**Options**
3433
3434Non-negative `integer` values
3435
3436### Vertical Scroll Margin
3437
3438- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3439- Setting: `vertical_scroll_margin`
3440- Default: `3`
3441
3442**Options**
3443
3444Non-negative `integer` values
3445
3446## Search
3447
3448- Description: Search options to enable by default when opening new project and buffer searches.
3449- Setting: `search`
3450- Default:
3451
3452```json [settings]
3453{
3454  "search": {
3455    "button": true,
3456    "whole_word": false,
3457    "case_sensitive": false,
3458    "include_ignored": false,
3459    "regex": false,
3460    "center_on_match": false
3461  }
3462}
3463```
3464
3465### Button
3466
3467- Description: Whether to show the project search button in the status bar.
3468- Setting: `button`
3469- Default: `true`
3470
3471### Whole Word
3472
3473- Description: Whether to only match on whole words.
3474- Setting: `whole_word`
3475- Default: `false`
3476
3477### Case Sensitive
3478
3479- Description: Whether to match case sensitively. This setting affects both
3480  searches and editor actions like "Select Next Occurrence", "Select Previous
3481  Occurrence", and "Select All Occurrences".
3482- Setting: `case_sensitive`
3483- Default: `false`
3484
3485### Include Ignore
3486
3487- Description: Whether to include gitignored files in search results.
3488- Setting: `include_ignored`
3489- Default: `false`
3490
3491### Regex
3492
3493- Description: Whether to interpret the search query as a regular expression.
3494- Setting: `regex`
3495- Default: `false`
3496
3497### Center On Match
3498
3499- Description: Whether to center the cursor on each search match when navigating.
3500- Setting: `center_on_match`
3501- Default: `false`
3502
3503## Search Wrap
3504
3505- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3506- Setting: `search_wrap`
3507- Default: `true`
3508
3509## Seed Search Query From Cursor
3510
3511- Description: When to populate a new search's query based on the text under the cursor.
3512- Setting: `seed_search_query_from_cursor`
3513- Default: `always`
3514
3515**Options**
3516
35171. `always` always populate the search query with the word under the cursor
35182. `selection` only populate the search query when there is text selected
35193. `never` never populate the search query
3520
3521## Semantic Tokens
3522
3523- Description: Controls how semantic tokens from language servers are used for syntax highlighting.
3524- Setting: `semantic_tokens`
3525- Default: `off`
3526
3527**Options**
3528
35291. `off`: Do not request semantic tokens from language servers.
35302. `combined`: Use LSP semantic tokens together with tree-sitter highlighting.
35313. `full`: Use LSP semantic tokens exclusively, replacing tree-sitter highlighting.
3532
3533To enable semantic tokens globally:
3534
3535```json [settings]
3536{
3537  "semantic_tokens": "combined"
3538}
3539```
3540
3541To enable semantic tokens for a specific language:
3542
3543```json [settings]
3544{
3545  "languages": {
3546    "Rust": {
3547      "semantic_tokens": "full"
3548    }
3549  }
3550}
3551```
3552
3553May require language server restart to properly apply.
3554
3555## LSP Folding Ranges
3556
3557- Description: Controls whether folding ranges from language servers are used instead of tree-sitter and indent-based folding. Tree-sitter and indent-based folding is the default; it is used as a fallback when LSP folding data is not returned or this setting is turned off.
3558- Setting: `document_folding_ranges`
3559- Default: `off`
3560
3561**Options**
3562
35631. `off`: Use tree-sitter and indent-based folding.
35642. `on`: Use LSP folding wherever possible, falling back to tree-sitter and indent-based folding when no results were returned by the server.
3565
3566To enable LSP folding ranges globally:
3567
3568```json [settings]
3569{
3570  "document_folding_ranges": "on"
3571}
3572```
3573
3574To enable LSP folding ranges for a specific language:
3575
3576```json [settings]
3577{
3578  "languages": {
3579    "Rust": {
3580      "document_folding_ranges": "on"
3581    }
3582  }
3583}
3584```
3585
3586## LSP Document Symbols
3587
3588- Description: Controls the source of document symbols used for outlines and breadcrumbs. This is an LSP feature β€” when enabled, tree-sitter is not used for document symbols, and the language server's `textDocument/documentSymbol` response is used instead.
3589- Setting: `document_symbols`
3590- Default: `off`
3591
3592**Options**
3593
35941. `off`: Use tree-sitter queries to compute document symbols.
35952. `on`: Use the language server's `textDocument/documentSymbol` LSP response. When enabled, tree-sitter is not used for document symbols.
3596
3597To enable LSP document symbols globally:
3598
3599```json [settings]
3600{
3601  "document_symbols": "on"
3602}
3603```
3604
3605To enable LSP document symbols for a specific language:
3606
3607```json [settings]
3608{
3609  "languages": {
3610    "Rust": {
3611      "document_symbols": "on"
3612    }
3613  }
3614}
3615```
3616
3617## Use Smartcase Search
3618
3619- 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. \
3620  This applies to both in-file searches and project-wide searches.
3621- Setting: `use_smartcase_search`
3622- Default: `false`
3623
3624**Options**
3625
3626`boolean` values
3627
3628Examples:
3629
3630- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3631- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3632
3633## Show Call Status Icon
3634
3635- Description: Whether or not to show the call status icon in the status bar.
3636- Setting: `show_call_status_icon`
3637- Default: `true`
3638
3639**Options**
3640
3641`boolean` values
3642
3643## Completions
3644
3645- Description: Controls how completions are processed for this language.
3646- Setting: `completions`
3647- Default:
3648
3649```json [settings]
3650{
3651  "completions": {
3652    "words": "fallback",
3653    "words_min_length": 3,
3654    "lsp": true,
3655    "lsp_fetch_timeout_ms": 0,
3656    "lsp_insert_mode": "replace_suffix"
3657  }
3658}
3659```
3660
3661### Words
3662
3663- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3664- Setting: `words`
3665- Default: `fallback`
3666
3667**Options**
3668
36691. `enabled` - Always fetch document's words for completions along with LSP completions
36702. `fallback` - Only if LSP response errors or times out, use document's words to show completions
36713. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3672
3673### Min Words Query Length
3674
3675- Description: Minimum number of characters required to automatically trigger word-based completions.
3676  Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3677- Setting: `words_min_length`
3678- Default: `3`
3679
3680**Options**
3681
3682Positive integer values
3683
3684### LSP
3685
3686- Description: Whether to fetch LSP completions or not.
3687- Setting: `lsp`
3688- Default: `true`
3689
3690**Options**
3691
3692`boolean` values
3693
3694### LSP Fetch Timeout (ms)
3695
3696- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3697- Setting: `lsp_fetch_timeout_ms`
3698- Default: `0`
3699
3700**Options**
3701
3702`integer` values representing milliseconds
3703
3704### LSP Insert Mode
3705
3706- Description: Controls what range to replace when accepting LSP completions.
3707- Setting: `lsp_insert_mode`
3708- Default: `replace_suffix`
3709
3710**Options**
3711
37121. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
37132. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
37143. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
37154. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3716
3717## Show Completions On Input
3718
3719- Description: Whether or not to show completions as you type.
3720- Setting: `show_completions_on_input`
3721- Default: `true`
3722
3723**Options**
3724
3725`boolean` values
3726
3727## Show Completion Documentation
3728
3729- Description: Whether to display inline and alongside documentation for items in the completions menu.
3730- Setting: `show_completion_documentation`
3731- Default: `true`
3732
3733**Options**
3734
3735`boolean` values
3736
3737## Show Edit Predictions
3738
3739- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3740- Setting: `show_edit_predictions`
3741- Default: `true`
3742
3743**Options**
3744
3745`boolean` values
3746
3747## Show Whitespaces
3748
3749- Description: Whether or not to render whitespace characters in the editor.
3750- Setting: `show_whitespaces`
3751- Default: `selection`
3752
3753**Options**
3754
37551. `all`
37562. `selection`
37573. `none`
37584. `boundary`
3759
3760## Whitespace Map
3761
3762- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
3763- Setting: `whitespace_map`
3764- Default:
3765
3766```json [settings]
3767{
3768  "whitespace_map": {
3769    "space": "β€’",
3770    "tab": "β†’"
3771  }
3772}
3773```
3774
3775## Soft Wrap
3776
3777- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3778- Setting: `soft_wrap`
3779- Default: `none`
3780
3781**Options**
3782
37831. `none` to avoid wrapping generally, unless the line is too long
37842. `prefer_line` (deprecated, same as `none`)
37853. `editor_width` to wrap lines that overflow the editor width
37864. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
37875. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3788
3789## Show Wrap Guides
3790
3791- 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.
3792- Setting: `show_wrap_guides`
3793- Default: `true`
3794
3795**Options**
3796
3797`boolean` values
3798
3799## Use On Type Format
3800
3801- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3802- Setting: `use_on_type_format`
3803- Default: `true`
3804
3805**Options**
3806
3807`boolean` values
3808
3809## Use Auto Surround
3810
3811- 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 ().
3812- Setting: `use_auto_surround`
3813- Default: `true`
3814
3815**Options**
3816
3817`boolean` values
3818
3819## Use System Path Prompts
3820
3821- 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.
3822- Setting: `use_system_path_prompts`
3823- Default: `true`
3824
3825**Options**
3826
3827`boolean` values
3828
3829## Use System Prompts
3830
3831- 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.
3832- Setting: `use_system_prompts`
3833- Default: `true`
3834
3835**Options**
3836
3837`boolean` values
3838
3839## Wrap Guides (Vertical Rulers)
3840
3841- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3842- Setting: `wrap_guides`
3843- Default: []
3844
3845**Options**
3846
3847List of `integer` column numbers
3848
3849## Tab Size
3850
3851- Description: The number of spaces to use for each tab character.
3852- Setting: `tab_size`
3853- Default: `4`
3854
3855**Options**
3856
3857`integer` values
3858
3859## Tasks
3860
3861- Description: Configuration for tasks that can be run within Zed
3862- Setting: `tasks`
3863- Default:
3864
3865```json [settings]
3866{
3867  "tasks": {
3868    "variables": {},
3869    "enabled": true,
3870    "prefer_lsp": false
3871  }
3872}
3873```
3874
3875**Options**
3876
3877- `variables`: Custom variables for task configuration
3878- `enabled`: Whether tasks are enabled
3879- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3880
3881## Telemetry
3882
3883- Description: Control what info is collected by Zed.
3884- Setting: `telemetry`
3885- Default:
3886
3887```json [settings]
3888{
3889  "telemetry": {
3890    "diagnostics": true,
3891    "metrics": true
3892  }
3893}
3894```
3895
3896**Options**
3897
3898### Diagnostics
3899
3900- Description: Setting for sending debug-related data, such as crash reports.
3901- Setting: `diagnostics`
3902- Default: `true`
3903
3904**Options**
3905
3906`boolean` values
3907
3908### Metrics
3909
3910- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3911- Setting: `metrics`
3912- Default: `true`
3913
3914**Options**
3915
3916`boolean` values
3917
3918## Terminal
3919
3920- Description: Configuration for the terminal.
3921- Setting: `terminal`
3922- Default:
3923
3924```json [settings]
3925{
3926  "terminal": {
3927    "alternate_scroll": "off",
3928    "blinking": "terminal_controlled",
3929    "copy_on_select": false,
3930    "keep_selection_on_copy": true,
3931    "dock": "bottom",
3932    "default_width": 640,
3933    "default_height": 320,
3934    "detect_venv": {
3935      "on": {
3936        "directories": [".env", "env", ".venv", "venv"],
3937        "activate_script": "default"
3938      }
3939    },
3940    "env": {},
3941    "font_family": null,
3942    "font_features": null,
3943    "font_size": null,
3944    "line_height": "comfortable",
3945    "minimum_contrast": 45,
3946    "option_as_meta": false,
3947    "button": true,
3948    "shell": "system",
3949    "scroll_multiplier": 3.0,
3950    "toolbar": {
3951      "breadcrumbs": false
3952    },
3953    "working_directory": "current_project_directory",
3954    "scrollbar": {
3955      "show": null
3956    }
3957  }
3958}
3959```
3960
3961### Terminal: Dock
3962
3963- Description: Control the position of the dock
3964- Setting: `dock`
3965- Default: `bottom`
3966
3967**Options**
3968
3969`"bottom"`, `"left"` or `"right"`
3970
3971### Terminal: Alternate Scroll
3972
3973- 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.
3974- Setting: `alternate_scroll`
3975- Default: `off`
3976
3977**Options**
3978
39791. Default alternate scroll mode to off
3980
3981```json [settings]
3982{
3983  "terminal": {
3984    "alternate_scroll": "off"
3985  }
3986}
3987```
3988
39892. Default alternate scroll mode to on
3990
3991```json [settings]
3992{
3993  "terminal": {
3994    "alternate_scroll": "on"
3995  }
3996}
3997```
3998
3999### Terminal: Blinking
4000
4001- Description: Set the cursor blinking behavior in the terminal
4002- Setting: `blinking`
4003- Default: `terminal_controlled`
4004
4005**Options**
4006
40071. Never blink the cursor, ignore the terminal mode
4008
4009```json [settings]
4010{
4011  "terminal": {
4012    "blinking": "off"
4013  }
4014}
4015```
4016
40172. Default the cursor blink to off, but allow the terminal to turn blinking on
4018
4019```json [settings]
4020{
4021  "terminal": {
4022    "blinking": "terminal_controlled"
4023  }
4024}
4025```
4026
40273. Always blink the cursor, ignore the terminal mode
4028
4029```json [settings]
4030{
4031  "terminal": {
4032    "blinking": "on"
4033  }
4034}
4035```
4036
4037### Terminal: Copy On Select
4038
4039- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
4040- Setting: `copy_on_select`
4041- Default: `false`
4042
4043**Options**
4044
4045`boolean` values
4046
4047**Example**
4048
4049```json [settings]
4050{
4051  "terminal": {
4052    "copy_on_select": true
4053  }
4054}
4055```
4056
4057### Terminal: Cursor Shape
4058
4059- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
4060- Setting: `cursor_shape`
4061- Default: `null` (defaults to block)
4062
4063**Options**
4064
40651. A block that surrounds the following character
4066
4067```json [settings]
4068{
4069  "terminal": {
4070    "cursor_shape": "block"
4071  }
4072}
4073```
4074
40752. A vertical bar
4076
4077```json [settings]
4078{
4079  "terminal": {
4080    "cursor_shape": "bar"
4081  }
4082}
4083```
4084
40853. An underline / underscore that runs along the following character
4086
4087```json [settings]
4088{
4089  "terminal": {
4090    "cursor_shape": "underline"
4091  }
4092}
4093```
4094
40954. A box drawn around the following character
4096
4097```json [settings]
4098{
4099  "terminal": {
4100    "cursor_shape": "hollow"
4101  }
4102}
4103```
4104
4105### Terminal: Keep Selection On Copy
4106
4107- Description: Whether or not to keep the selection in the terminal after copying text.
4108- Setting: `keep_selection_on_copy`
4109- Default: `true`
4110
4111**Options**
4112
4113`boolean` values
4114
4115**Example**
4116
4117```json [settings]
4118{
4119  "terminal": {
4120    "keep_selection_on_copy": false
4121  }
4122}
4123```
4124
4125### Terminal: Env
4126
4127- 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
4128- Setting: `env`
4129- Default: `{}`
4130
4131**Example**
4132
4133```json [settings]
4134{
4135  "terminal": {
4136    "env": {
4137      "ZED": "1",
4138      "KEY": "value1:value2"
4139    }
4140  }
4141}
4142```
4143
4144### Terminal: Font Size
4145
4146- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
4147- Setting: `font_size`
4148- Default: `null`
4149
4150**Options**
4151
4152`integer` values
4153
4154```json [settings]
4155{
4156  "terminal": {
4157    "font_size": 15
4158  }
4159}
4160```
4161
4162### Terminal: Font Family
4163
4164- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
4165- Setting: `font_family`
4166- Default: `null`
4167
4168**Options**
4169
4170The name of any font family installed on the user's system
4171
4172```json [settings]
4173{
4174  "terminal": {
4175    "font_family": "Berkeley Mono"
4176  }
4177}
4178```
4179
4180### Terminal: Font Features
4181
4182- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
4183- Setting: `font_features`
4184- Default: `null`
4185- Platform: macOS and Windows.
4186
4187**Options**
4188
4189See Buffer Font Features
4190
4191```json [settings]
4192{
4193  "terminal": {
4194    "font_features": {
4195      "calt": false
4196      // See Buffer Font Features for more features
4197    }
4198  }
4199}
4200```
4201
4202### Terminal: Line Height
4203
4204- Description: Set the terminal's line height.
4205- Setting: `line_height`
4206- Default: `standard`
4207
4208**Options**
4209
42101. Use a line height that's `comfortable` for reading, 1.618.
4211
4212```json [settings]
4213{
4214  "terminal": {
4215    "line_height": "comfortable"
4216  }
4217}
4218```
4219
42202. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
4221
4222```json [settings]
4223{
4224  "terminal": {
4225    "line_height": "standard"
4226  }
4227}
4228```
4229
42303.  Use a custom line height.
4231
4232```json [settings]
4233{
4234  "terminal": {
4235    "line_height": {
4236      "custom": 2
4237    }
4238  }
4239}
4240```
4241
4242### Terminal: Minimum Contrast
4243
4244- 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.
4245- Setting: `minimum_contrast`
4246- Default: `45`
4247
4248**Options**
4249
4250`integer` values from 0 to 106. Common recommended values:
4251
4252- `0`: No contrast adjustment
4253- `45`: Minimum for large fluent text (default)
4254- `60`: Minimum for other content text
4255- `75`: Minimum for body text
4256- `90`: Preferred for body text
4257
4258```json [settings]
4259{
4260  "terminal": {
4261    "minimum_contrast": 45
4262  }
4263}
4264```
4265
4266### Terminal: Option As Meta
4267
4268- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
4269- Setting: `option_as_meta`
4270- Default: `false`
4271
4272**Options**
4273
4274`boolean` values
4275
4276```json [settings]
4277{
4278  "terminal": {
4279    "option_as_meta": true
4280  }
4281}
4282```
4283
4284### Terminal: Shell
4285
4286- Description: What shell to use when launching the terminal.
4287- Setting: `shell`
4288- Default: `system`
4289
4290**Options**
4291
42921. Use the system's default terminal configuration (usually the `/etc/passwd` file).
4293
4294```json [settings]
4295{
4296  "terminal": {
4297    "shell": "system"
4298  }
4299}
4300```
4301
43022. A program to launch:
4303
4304```json [settings]
4305{
4306  "terminal": {
4307    "shell": {
4308      "program": "sh"
4309    }
4310  }
4311}
4312```
4313
43143. A program with arguments:
4315
4316```json [settings]
4317{
4318  "terminal": {
4319    "shell": {
4320      "with_arguments": {
4321        "program": "/bin/bash",
4322        "args": ["--login"]
4323      }
4324    }
4325  }
4326}
4327```
4328
4329## Terminal: Detect Virtual Environments {#terminal-detect_venv}
4330
4331- 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.
4332- Setting: `detect_venv`
4333- Default:
4334
4335```json [settings]
4336{
4337  "terminal": {
4338    "detect_venv": {
4339      "on": {
4340        // Default directories to search for virtual environments, relative
4341        // to the current working directory. We recommend overriding this
4342        // in your project's settings, rather than globally.
4343        "directories": [".env", "env", ".venv", "venv"],
4344        // Can also be `csh`, `fish`, and `nushell`
4345        "activate_script": "default"
4346      }
4347    }
4348  }
4349}
4350```
4351
4352Disable with:
4353
4354```json [settings]
4355{
4356  "terminal": {
4357    "detect_venv": "off"
4358  }
4359}
4360```
4361
4362### Terminal: Scroll Multiplier
4363
4364- Description: The multiplier for scrolling speed in the terminal when using mouse wheel or trackpad.
4365- Setting: `scroll_multiplier`
4366- Default: `1.0`
4367
4368**Options**
4369
4370Positive floating point values. Values less than or equal to 0 will be clamped to a minimum of 0.01.
4371
4372**Example**
4373
4374```json
4375{
4376  "terminal": {
4377    "scroll_multiplier": 5.0
4378  }
4379}
4380```
4381
4382## Terminal: Toolbar
4383
4384- Description: Whether or not to show various elements in the terminal toolbar.
4385- Setting: `toolbar`
4386- Default:
4387
4388```json [settings]
4389{
4390  "terminal": {
4391    "toolbar": {
4392      "breadcrumbs": false
4393    }
4394  }
4395}
4396```
4397
4398**Options**
4399
4400At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
4401
4402If the terminal title is empty, the breadcrumbs won't be shown.
4403
4404The shell running in the terminal needs to be configured to emit the title.
4405
4406Example command to set the title: `echo -e "\e]2;New Title\007";`
4407
4408### Terminal: Button
4409
4410- Description: Control to show or hide the terminal button in the status bar
4411- Setting: `button`
4412- Default: `true`
4413
4414**Options**
4415
4416`boolean` values
4417
4418```json [settings]
4419{
4420  "terminal": {
4421    "button": false
4422  }
4423}
4424```
4425
4426### Terminal: Working Directory
4427
4428- Description: What working directory to use when launching the terminal.
4429- Setting: `working_directory`
4430- Default: `"current_project_directory"`
4431
4432**Options**
4433
44341. Use the current file's directory, falling back to the project directory, then the first project in the workspace.
4435
4436```json [settings]
4437{
4438  "terminal": {
4439    "working_directory": "current_file_directory"
4440  }
4441}
4442```
4443
44442. Use the current file's project directory. Fallback to the first project directory strategy if unsuccessful.
4445
4446```json [settings]
4447{
4448  "terminal": {
4449    "working_directory": "current_project_directory"
4450  }
4451}
4452```
4453
44543. Use the first project in this workspace's directory. Fallback to using this platform's home directory.
4455
4456```json [settings]
4457{
4458  "terminal": {
4459    "working_directory": "first_project_directory"
4460  }
4461}
4462```
4463
44644. Always use this platform's home directory if it can be found.
4465
4466```json [settings]
4467{
4468  "terminal": {
4469    "working_directory": "always_home"
4470  }
4471}
4472```
4473
44745. 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.
4475
4476```json [settings]
4477{
4478  "terminal": {
4479    "working_directory": {
4480      "always": {
4481        "directory": "~/zed/projects/"
4482      }
4483    }
4484  }
4485}
4486```
4487
4488### Terminal: Path Hyperlink Regexes
4489
4490- Description: Regexes used to identify path hyperlinks. The regexes can be specified in two forms - a single regex string, or an array of strings (which will be collected into a single multi-line regex string).
4491- Setting: `path_hyperlink_regexes`
4492- Default:
4493
4494```json [settings]
4495{
4496  "terminal": {
4497    "path_hyperlink_regexes": [
4498      // Python-style diagnostics
4499      "File \"(?<path>[^\"]+)\", line (?<line>[0-9]+)",
4500      // Common path syntax with optional line, column, description, trailing punctuation, or
4501      // surrounding symbols or quotes
4502      [
4503        "(?x)",
4504        "# optionally starts with 0-2 opening prefix symbols",
4505        "[({\\[<]{0,2}",
4506        "# which may be followed by an opening quote",
4507        "(?<quote>[\"'`])?",
4508        "# `path` is the shortest sequence of any non-space character",
4509        "(?<link>(?<path>[^ ]+?",
4510        "    # which may end with a line and optionally a column,",
4511        "    (?<line_column>:+[0-9]+(:[0-9]+)?|:?\\([0-9]+([,:][0-9]+)?\\))?",
4512        "))",
4513        "# which must be followed by a matching quote",
4514        "(?(<quote>)\\k<quote>)",
4515        "# and optionally a single closing symbol",
4516        "[)}\\]>]?",
4517        "# if line/column matched, may be followed by a description",
4518        "(?(<line_column>):[^ 0-9][^ ]*)?",
4519        "# which may be followed by trailing punctuation",
4520        "[.,:)}\\]>]*",
4521        "# and always includes trailing whitespace or end of line",
4522        "([ ]+|$)"
4523      ]
4524    ]
4525  }
4526}
4527```
4528
4529### Terminal: Path Hyperlink Timeout (ms)
4530
4531- Description: Maximum time to search for a path hyperlink. When set to 0, path hyperlinks are disabled.
4532- Setting: `path_hyperlink_timeout_ms`
4533- Default: `1`
4534
4535## REPL
4536
4537- Description: Repl settings.
4538- Setting: `repl`
4539- Default:
4540
4541```json [settings]
4542{
4543  "repl": {
4544    // Maximum number of columns to keep in REPL's scrollback buffer.
4545    // Clamped with [20, 512] range.
4546    "max_columns": 128,
4547    // Maximum number of lines to keep in REPL's scrollback buffer.
4548    // Clamped with [4, 256] range.
4549    "max_lines": 32
4550  }
4551}
4552```
4553
4554## Theme
4555
4556- 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.
4557- Setting: `theme`
4558- Default: `One Dark`
4559
4560### Theme Object
4561
4562- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
4563- Setting: `theme`
4564- Default:
4565
4566```json [settings]
4567{
4568  "theme": {
4569    "mode": "system",
4570    "dark": "One Dark",
4571    "light": "One Light"
4572  }
4573}
4574```
4575
4576### Mode
4577
4578- Description: Specify theme mode.
4579- Setting: `mode`
4580- Default: `system`
4581
4582**Options**
4583
45841. Set the theme to dark mode
4585
4586```json [settings]
4587{
4588  "theme": {
4589    "mode": "dark",
4590    "dark": "One Dark",
4591    "light": "One Light"
4592  }
4593}
4594```
4595
45962. Set the theme to light mode
4597
4598```json [settings]
4599{
4600  "theme": {
4601    "mode": "light",
4602    "dark": "One Dark",
4603    "light": "One Light"
4604  }
4605}
4606```
4607
46083. Set the theme to system mode
4609
4610```json [settings]
4611{
4612  "theme": {
4613    "mode": "system",
4614    "dark": "One Dark",
4615    "light": "One Light"
4616  }
4617}
4618```
4619
4620### Dark
4621
4622- Description: The name of the dark Zed theme to use for the UI.
4623- Setting: `dark`
4624- Default: `One Dark`
4625
4626**Options**
4627
4628Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4629
4630### Light
4631
4632- Description: The name of the light Zed theme to use for the UI.
4633- Setting: `light`
4634- Default: `One Light`
4635
4636**Options**
4637
4638Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4639
4640## Title Bar
4641
4642- Description: Whether or not to show various elements in the title bar
4643- Setting: `title_bar`
4644- Default:
4645
4646```json [settings]
4647{
4648  "title_bar": {
4649    "show_branch_icon": false,
4650    "show_branch_name": true,
4651    "show_project_items": true,
4652    "show_onboarding_banner": true,
4653    "show_user_picture": true,
4654    "show_user_menu": true,
4655    "show_sign_in": true,
4656    "show_menus": false,
4657    "button_layout": "platform_default"
4658  }
4659}
4660```
4661
4662**Options**
4663
4664- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
4665- `show_branch_name`: Whether to show the branch name button in the titlebar
4666- `show_project_items`: Whether to show the project host and name in the titlebar
4667- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4668- `show_user_picture`: Whether to show user picture in the titlebar
4669- `show_user_menu`: Whether to show the user menu button in the titlebar (the one that displays your avatar by default and contains options like Settings, Keymap, Themes, etc.)
4670- `show_sign_in`: Whether to show the sign in button in the titlebar
4671- `show_menus`: Whether to show the menus in the titlebar
4672- `button_layout`: The layout of window control buttons in the title bar (Linux only). Can be set to `"platform_default"` to follow the system setting, `"standard"` to use Zed's built-in layout, or a custom format like `"close:minimize,maximize"`
4673
4674## Vim
4675
4676- Description: Whether or not to enable vim mode.
4677- Setting: `vim_mode`
4678- Default: `false`
4679
4680## When Closing With No Tabs
4681
4682- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4683- Setting: `when_closing_with_no_tabs`
4684- Default: `"platform_default"`
4685
4686**Options**
4687
46881. Use platform default behavior:
4689
4690```json [settings]
4691{
4692  "when_closing_with_no_tabs": "platform_default"
4693}
4694```
4695
46962. Always close the window:
4697
4698```json [settings]
4699{
4700  "when_closing_with_no_tabs": "close_window"
4701}
4702```
4703
47043. Never close the window:
4705
4706```json [settings]
4707{
4708  "when_closing_with_no_tabs": "keep_window_open"
4709}
4710```
4711
4712## Project Panel
4713
4714- Description: Customize project panel
4715- Setting: `project_panel`
4716- Default:
4717
4718```json [settings]
4719{
4720  "project_panel": {
4721    "button": true,
4722    "default_width": 240,
4723    "dock": "left",
4724    "entry_spacing": "comfortable",
4725    "file_icons": true,
4726    "folder_icons": true,
4727    "git_status": true,
4728    "indent_size": 20,
4729    "auto_reveal_entries": true,
4730    "auto_fold_dirs": true,
4731    "bold_folder_labels": false,
4732    "drag_and_drop": true,
4733    "scrollbar": {
4734      "show": null,
4735      "horizontal_scroll": true
4736    },
4737    "sticky_scroll": true,
4738    "show_diagnostics": "all",
4739    "indent_guides": {
4740      "show": "always"
4741    },
4742    "sort_mode": "directories_first",
4743    "hide_root": false,
4744    "hide_hidden": false,
4745    "starts_open": true,
4746    "auto_open": {
4747      "on_create": true,
4748      "on_paste": true,
4749      "on_drop": true
4750    }
4751  }
4752}
4753```
4754
4755### Dock
4756
4757- Description: Control the position of the dock
4758- Setting: `dock`
4759- Default: `left`
4760
4761**Options**
4762
47631. Default dock position to left
4764
4765```json [settings]
4766{
4767  "project_panel": {
4768    "dock": "left"
4769  }
4770}
4771```
4772
47732. Default dock position to right
4774
4775```json [settings]
4776{
4777  "project_panel": {
4778    "dock": "right"
4779  }
4780}
4781```
4782
4783### Entry Spacing
4784
4785- Description: Spacing between worktree entries
4786- Setting: `entry_spacing`
4787- Default: `comfortable`
4788
4789**Options**
4790
47911. Comfortable entry spacing
4792
4793```json [settings]
4794{
4795  "project_panel": {
4796    "entry_spacing": "comfortable"
4797  }
4798}
4799```
4800
48012. Standard entry spacing
4802
4803```json [settings]
4804{
4805  "project_panel": {
4806    "entry_spacing": "standard"
4807  }
4808}
4809```
4810
4811### Git Status
4812
4813- Description: Indicates newly created and updated files
4814- Setting: `git_status`
4815- Default: `true`
4816
4817**Options**
4818
48191. Default enable git status
4820
4821```json [settings]
4822{
4823  "project_panel": {
4824    "git_status": true
4825  }
4826}
4827```
4828
48292. Default disable git status
4830
4831```json [settings]
4832{
4833  "project_panel": {
4834    "git_status": false
4835  }
4836}
4837```
4838
4839### Default Width
4840
4841- Description: Customize default width taken by project panel
4842- Setting: `default_width`
4843- Default: `240`
4844
4845**Options**
4846
4847`float` values
4848
4849### Auto Reveal Entries
4850
4851- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4852- Setting: `auto_reveal_entries`
4853- Default: `true`
4854
4855**Options**
4856
48571. Enable auto reveal entries
4858
4859```json [settings]
4860{
4861  "project_panel": {
4862    "auto_reveal_entries": true
4863  }
4864}
4865```
4866
48672. Disable auto reveal entries
4868
4869```json [settings]
4870{
4871  "project_panel": {
4872    "auto_reveal_entries": false
4873  }
4874}
4875```
4876
4877### Auto Fold Dirs
4878
4879- Description: Whether to fold directories automatically when directory has only one directory inside.
4880- Setting: `auto_fold_dirs`
4881- Default: `true`
4882
4883**Options**
4884
48851. Enable auto fold dirs
4886
4887```json [settings]
4888{
4889  "project_panel": {
4890    "auto_fold_dirs": true
4891  }
4892}
4893```
4894
48952. Disable auto fold dirs
4896
4897```json [settings]
4898{
4899  "project_panel": {
4900    "auto_fold_dirs": false
4901  }
4902}
4903```
4904
4905### Bold Folder Labels
4906
4907- Description: Whether to show folder names with bold text in the project panel.
4908- Setting: `bold_folder_labels`
4909- Default: `false`
4910
4911**Options**
4912
49131. Enable bold folder labels
4914
4915```json [settings]
4916{
4917  "project_panel": {
4918    "bold_folder_labels": true
4919  }
4920}
4921```
4922
49232. Disable bold folder labels
4924
4925```json [settings]
4926{
4927  "project_panel": {
4928    "bold_folder_labels": false
4929  }
4930}
4931```
4932
4933### Indent Size
4934
4935- Description: Amount of indentation (in pixels) for nested items.
4936- Setting: `indent_size`
4937- Default: `20`
4938
4939### Indent Guides: Show
4940
4941- Description: Whether to show indent guides in the project panel.
4942- Setting: `indent_guides`
4943- Default:
4944
4945```json [settings]
4946{
4947  "project_panel": {
4948    "indent_guides": {
4949      "show": "always"
4950    }
4951  }
4952}
4953```
4954
4955**Options**
4956
49571. Show indent guides in the project panel
4958
4959```json [settings]
4960{
4961  "project_panel": {
4962    "indent_guides": {
4963      "show": "always"
4964    }
4965  }
4966}
4967```
4968
49692. Hide indent guides in the project panel
4970
4971```json [settings]
4972{
4973  "project_panel": {
4974    "indent_guides": {
4975      "show": "never"
4976    }
4977  }
4978}
4979```
4980
4981### Scrollbar
4982
4983- Description: Scrollbar-related settings for the project panel.
4984- Setting: `scrollbar`
4985- Default:
4986
4987```json [settings]
4988{
4989  "project_panel": {
4990    "scrollbar": {
4991      "show": null,
4992      "horizontal_scroll": true
4993    }
4994  }
4995}
4996```
4997
4998**Options**
4999
5000- `show`: 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.
5001- `horizontal_scroll`: Whether to allow horizontal scrolling in the project panel. When `false`, the view is locked to the leftmost position and long file names are clipped.
5002
5003### Sort Mode
5004
5005- Description: Sort order for entries in the project panel
5006- Setting: `sort_mode`
5007- Default: `directories_first`
5008
5009**Options**
5010
50111. Show directories first, then files
5012
5013```json [settings]
5014{
5015  "project_panel": {
5016    "sort_mode": "directories_first"
5017  }
5018}
5019```
5020
50212. Mix directories and files together
5022
5023```json [settings]
5024{
5025  "project_panel": {
5026    "sort_mode": "mixed"
5027  }
5028}
5029```
5030
50313. Show files first, then directories
5032
5033```json [settings]
5034{
5035  "project_panel": {
5036    "sort_mode": "files_first"
5037  }
5038}
5039```
5040
5041### Auto Open
5042
5043- Description: Control whether files are opened automatically after different creation flows in the project panel.
5044- Setting: `auto_open`
5045- Default:
5046
5047```json [settings]
5048{
5049  "project_panel": {
5050    "auto_open": {
5051      "on_create": true,
5052      "on_paste": true,
5053      "on_drop": true
5054    }
5055  }
5056}
5057```
5058
5059**Options**
5060
5061- `on_create`: Whether to automatically open newly created files in the editor.
5062- `on_paste`: Whether to automatically open files after pasting or duplicating them.
5063- `on_drop`: Whether to automatically open files dropped from external sources.
5064
5065## Agent
5066
5067Visit [the Configuration page](../ai/configuration.md) under the AI section to learn more about all the agent-related settings.
5068
5069## Collaboration Panel
5070
5071- Description: Customizations for the collaboration panel.
5072- Setting: `collaboration_panel`
5073- Default:
5074
5075```json [settings]
5076{
5077  "collaboration_panel": {
5078    "button": true,
5079    "dock": "left",
5080    "default_width": 240
5081  }
5082}
5083```
5084
5085**Options**
5086
5087- `button`: Whether to show the collaboration panel button in the status bar
5088- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
5089- `default_width`: Default width of the collaboration panel
5090
5091## Debugger
5092
5093- Description: Configuration for debugger panel and settings
5094- Setting: `debugger`
5095- Default:
5096
5097```json [settings]
5098{
5099  "debugger": {
5100    "stepping_granularity": "line",
5101    "save_breakpoints": true,
5102    "dock": "bottom",
5103    "button": true
5104  }
5105}
5106```
5107
5108See the [debugger page](../debugger.md) for more information about debugging support within Zed.
5109
5110## Git Panel
5111
5112- Description: Setting to customize the behavior of the git panel.
5113- Setting: `git_panel`
5114- Default:
5115
5116```json [settings]
5117{
5118  "git_panel": {
5119    "button": true,
5120    "dock": "left",
5121    "default_width": 360,
5122    "status_style": "icon",
5123    "fallback_branch_name": "main",
5124    "sort_by_path": false,
5125    "collapse_untracked_diff": false,
5126    "scrollbar": {
5127      "show": null
5128    },
5129    "starts_open": false
5130  }
5131}
5132```
5133
5134**Options**
5135
5136- `button`: Whether to show the git panel button in the status bar
5137- `dock`: Where to dock the git panel. Can be `left` or `right`
5138- `default_width`: Default width of the git panel
5139- `status_style`: How to display git status. Can be `label_color` or `icon`
5140- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
5141- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
5142- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
5143- `scrollbar`: When to show the scrollbar in the git panel
5144- `starts_open`: Whether the git panel should open on startup
5145
5146## Git Worktree Directory
5147
5148- Description: Directory where git worktrees are created, relative to the repository working directory.
5149- Setting: `git.worktree_directory`
5150- Default: `"../worktrees"`
5151
5152When the resolved directory falls outside the project root, the project's directory name is automatically appended so that sibling repos don't collide. For example, with the default `"../worktrees"` and a project at `~/code/zed`, worktrees are created under `~/code/worktrees/zed/`.
5153
5154When the resolved directory is inside the project root, no extra component is added (it's already project-scoped).
5155
5156**Examples**:
5157
5158- `"../worktrees"` β€” `~/code/worktrees/<project>/` (default)
5159- `".git/zed-worktrees"` β€” `<project>/.git/zed-worktrees/`
5160- `"my-worktrees"` β€” `<project>/my-worktrees/`
5161
5162Trailing slashes are ignored.
5163
5164```json [settings]
5165{
5166  "git": {
5167    "worktree_directory": "../worktrees"
5168  }
5169}
5170```
5171
5172## Git Hosting Providers
5173
5174- Description: Register self-hosted GitHub, GitLab, or Bitbucket instances so commit hashes, issue references, and permalinks resolve to the right host.
5175- Setting: `git_hosting_providers`
5176- Default: `[]`
5177
5178**Options**
5179
5180Each entry accepts:
5181
5182- `provider`: One of `github`, `gitlab`, or `bitbucket`
5183- `name`: Display name for the instance
5184- `base_url`: Base URL, e.g. `https://git.example.corp`
5185
5186You can define these in user or project settings; project settings are merged on top of user settings.
5187
5188```json [settings]
5189{
5190  "git_hosting_providers": [
5191    {
5192      "provider": "github",
5193      "name": "BigCorp GitHub",
5194      "base_url": "https://git.example.corp"
5195    }
5196  ]
5197}
5198```
5199
5200## Outline Panel
5201
5202- Description: Customize outline Panel
5203- Setting: `outline_panel`
5204- Default:
5205
5206```json [settings]
5207{
5208  "outline_panel": {
5209    "button": true,
5210    "default_width": 300,
5211    "dock": "left",
5212    "file_icons": true,
5213    "folder_icons": true,
5214    "git_status": true,
5215    "indent_size": 20,
5216    "auto_reveal_entries": true,
5217    "auto_fold_dirs": true,
5218    "indent_guides": {
5219      "show": "always"
5220    },
5221    "scrollbar": {
5222      "show": null
5223    }
5224  }
5225}
5226```
5227
5228## Calls
5229
5230- Description: Customize behavior when participating in a call
5231- Setting: `calls`
5232- Default:
5233
5234```json [settings]
5235{
5236  "calls": {
5237    // Join calls with the microphone live by default
5238    "mute_on_join": false,
5239    // Share your project when you are the first to join a channel
5240    "share_on_join": false
5241  }
5242}
5243```
5244
5245## Colorize Brackets
5246
5247- Description: Whether to use tree-sitter bracket queries to detect and colorize the brackets in the editor (also known as "rainbow brackets").
5248- Setting: `colorize_brackets`
5249- Default: `false`
5250
5251**Options**
5252
5253`boolean` values
5254
5255The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
5256
5257## Unnecessary Code Fade
5258
5259- Description: How much to fade out unused code.
5260- Setting: `unnecessary_code_fade`
5261- Default: `0.3`
5262
5263**Options**
5264
5265Float values between `0.0` and `0.9`, where:
5266
5267- `0.0` means no fading (unused code looks the same as used code)
5268- `0.9` means maximum fading (unused code is very faint but still visible)
5269
5270**Example**
5271
5272```json [settings]
5273{
5274  "unnecessary_code_fade": 0.5
5275}
5276```
5277
5278## UI Font Family
5279
5280- Description: The name of the font to use for text in the UI.
5281- Setting: `ui_font_family`
5282- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
5283
5284**Options**
5285
5286The 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).
5287
5288## UI Font Features
5289
5290- Description: The OpenType features to enable for text in the UI.
5291- Setting: `ui_font_features`
5292- Default:
5293
5294```json [settings]
5295{
5296  "ui_font_features": {
5297    "calt": false
5298  }
5299}
5300```
5301
5302- Platform: macOS and Windows.
5303
5304**Options**
5305
5306Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
5307
5308For example, to disable font ligatures, add the following to your settings:
5309
5310```json [settings]
5311{
5312  "ui_font_features": {
5313    "calt": false
5314  }
5315}
5316```
5317
5318You can also set other OpenType features, like setting `cv01` to `7`:
5319
5320```json [settings]
5321{
5322  "ui_font_features": {
5323    "cv01": 7
5324  }
5325}
5326```
5327
5328## UI Font Fallbacks
5329
5330- Description: The font fallbacks to use for text in the UI.
5331- Setting: `ui_font_fallbacks`
5332- Default: `null`
5333- Platform: macOS and Windows.
5334
5335**Options**
5336
5337For example, to use `Nerd Font` as a fallback, add the following to your settings:
5338
5339```json [settings]
5340{
5341  "ui_font_fallbacks": ["Nerd Font"]
5342}
5343```
5344
5345## UI Font Size
5346
5347- Description: The default font size for text in the UI.
5348- Setting: `ui_font_size`
5349- Default: `16`
5350
5351**Options**
5352
5353`integer` values from `6` to `100` pixels (inclusive)
5354
5355## UI Font Weight
5356
5357- Description: The default font weight for text in the UI.
5358- Setting: `ui_font_weight`
5359- Default: `400`
5360
5361**Options**
5362
5363`integer` values between `100` and `900`
5364
5365## Settings Profiles
5366
5367- Description: Configure any number of settings profiles that are temporarily applied when selected from `settings profile selector: toggle`.
5368- Setting: `profiles`
5369- Default: `{}`
5370
5371In your `settings.json` file, add the `profiles` object.
5372Each key within this object is the name of a settings profile. Each profile has an optional `base` field (`"user"` or `"default"`) and a `settings` object containing any of Zed's settings.
5373
5374Example:
5375
5376```json [settings]
5377{
5378  "profiles": {
5379    "Presenting (Dark)": {
5380      "settings": {
5381        "agent_buffer_font_size": 18.0,
5382        "buffer_font_size": 18.0,
5383        "theme": "One Dark",
5384        "ui_font_size": 18.0
5385      }
5386    },
5387    "Presenting (Light)": {
5388      "settings": {
5389        "agent_buffer_font_size": 18.0,
5390        "buffer_font_size": 18.0,
5391        "theme": "One Light",
5392        "ui_font_size": 18.0
5393      }
5394    },
5395    "Writing": {
5396      "settings": {
5397        "agent_buffer_font_size": 15.0,
5398        "buffer_font_size": 15.0,
5399        "theme": "Catppuccin FrappΓ© - No Italics",
5400        "ui_font_size": 15.0,
5401        "tab_bar": { "show": false },
5402        "toolbar": { "breadcrumbs": false }
5403      }
5404    }
5405  }
5406}
5407```
5408
5409To preview and enable a settings profile, open the command palette via {#kb command_palette::Toggle} and search for `settings profile selector: toggle`.
5410
5411## An example configuration:
5412
5413```json [settings]
5414// ~/.config/zed/settings.json
5415{
5416  "theme": "cave-light",
5417  "tab_size": 2,
5418  "preferred_line_length": 80,
5419  "soft_wrap": "none",
5420
5421  "buffer_font_size": 18,
5422  "buffer_font_family": ".ZedMono",
5423
5424  "autosave": "on_focus_change",
5425  "format_on_save": "off",
5426  "vim_mode": false,
5427  "terminal": {
5428    "font_family": "FiraCode Nerd Font Mono",
5429    "blinking": "off"
5430  },
5431  "languages": {
5432    "C": {
5433      "format_on_save": "on",
5434      "formatter": "language_server",
5435      "preferred_line_length": 64,
5436      "soft_wrap": "preferred_line_length"
5437    }
5438  }
5439}
5440```