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