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