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