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